{{ item.name }}
{{ item.name }}

{{ it.name }}

{{ it.text }}

{{ it.name }}

{{ innerIt.name }}

{{ innerIt.text }}

{{news.time}}
{{news.title}}
SELinux 与 MySQL
2022-04-13发布 3,172浏览

为了提高 Linux 系统的安全性,在 Linux 上通常会使用 SELinux 或 AppArmor 实现强制访问控制(Mandatory Access Control MAC)。对于 MySQL 数据库的强制访问控制策略通常是激活的,如果用户采用默认的配置,并不会感到强制访问控制策略对 MySQL 数据库的影响,一旦用户修改了 MySQL 数据库的默认配置,例如默认的数据目录或监听端口,MySQL 数据库的活动就会被 SELinux 或 AppArmor 阻止,数据库无法启动,本文简单介绍 SELinux 对 MySQL 数据库的影响。

一、简介

SELinux(Secure Enhanced Linux)是一个内核级的安全机制,从 2.6 内核之后,集成到 Linux 内核中。它允许管理员细粒度地定义访问控制,未经定义的访问一律禁止。

SELinux 有三种工作模式:

enforcing:强制模式。任何违反策略的行为都会被禁止,并且产生警告信息。

permissive:允许模式。违反策略的行为不会被禁止,只产生警告信息。

disabled:关闭 SELinux。

使用 getenforce 命令来显示 SELinux 的当前模式。更改模式使用 setenforce 0(设置为允许模式)或 setenforce 1(强制模式)。这些设置重启后就会失效,可以编辑 /etc/selinux/config 配置文件并设置 SELINUX 变量为 enforcing、permissive 或 disabled,保存设置让其重启后也有效。使用下面的命令查看 SELinux 的状态:

image

二、查看 MySQL 的 SELinux 的上下文

可以使用 ps -Z 查看 mysqld 进程的 SELinux 的上下文:

image

也可以使用 ls -Z 查看 MySQL 数据目录的 SELinux 的上下文:

image

参数说明:

system_u 是系统进程和对象的 SELinux 用户标识。

system_r 是用于系统进程的 SELinux 角色。

objects_r 是用于系统对象的 SELinux 角色。

mysqld_t 是与 mysqld 进程相关的 SELinux 类型。

mysqld_db_t 是与 MySQL 数据目录相关的 SELinux 类型。

三、修改对 MySQL 数据目录的访问控制

如果我们把 MySQL 数据目录从默认的 /var/lib/mysql 改成其他目录,SELinux 将会阻止 mysqld 进程访问 MySQL 数据目录,从而造成 MySQL 无法启动,相关拒绝访问的信息记录在 /var/log/audit/audit.log 文件中:

image

我们可以 SELinux 关闭或改成允许模式后再启动 MySQL 数据库,但这种方法通常不推荐,因为这样会把所有的 SELinux 的安全策略都终止了,留下了安全隐患。专业的做法是把新的 MySQL 数据目录增加到mysqld_db_t 这个 SELinux 类型中,例如使用 semanage fcontext 命令的 -a 选项增加一个目录为 /disk1/data 的 MySQL 数据目录,然后使用命令 restorecon 恢复这个数据目录对应的 SELinux 上下文,代码如图所示:

image

然后可以用 semanage fcontext 命令的 -l 选项进行检查,发现 mysqld_db_t 这个类型现在有两条记录,分别是系统默认的和刚才增加的:

image

四、修改对 MySQL 其他对象的访问控制

除了可以修改对 MySQL 数据目录的访问控制外,还可以采用类似的方法修改对其他 MySQL 对象的访问控制,例如:控制 MySQL 的错误日志的类型是 mysqld_log_t,采用下面的命令增加 MySQL 的错误日志的记录:

image

控制 MySQL 的 PID 文件的类型是 mysqld_var_run_t,采用下面的命令增加 MySQL 的 PID 文件的记录:

image

控制 MySQL 的监听端口的类型是 mysqld_port_t,采用下面的命令增加一个 3307 的监听端口:

image


上一篇
Slow Query Log 使用详解
400-820-6580 13916131869
marketing@actionsky.com
上海市闵行区万源路2138号泓茂中心2号楼
产品详情
关系型数据库
AI数据库
数据库智能管理平台
数据库生态产品
行业案例
金融行业
新零售行业
制造业
通信行业
更多
公司动态
最新新闻
国产化信息
技术分享
关于我们
公司简介
公司分布
国家专利
资质认证
扫码关注公众号
© Copyright 2017, All rights reserved by: 上海爱可生信息技术股份有限公司 沪ICP备12003970号-1 | 法律声明 | 网站地图
沪公网安备 31010402003331号