如何允许通过SELinux进行MySQL连接?


21

为了提高安全性,我想一次让SELinux在服务器上运行。
我通常禁用SELinux以使任何东西都可以工作。
如何告诉SELinux允许MySQL连接?
我在文档中找到的最多的是来自mysql.com的以下行:

如果您在Linux下运行,并且启用了安全性增强的Linux(SELinux),请确保已禁用mysqld进程的SELinux保护。

哇...真的很有帮助。


1
请提供以下所有信息,以便我们有机会为您提供帮助。1. Linux发行版和版本,2. MySQL版本和安装源,3.来自拒绝连接的AVC日志条目,4.相关的MySQL日志,如果有的话5.输出的结果getsebool -a | grep mysql6.重复此步骤的确切步骤
hobodave

Answers:


40

检查SELinux

sestatus

查看在httpd进程上设置的标志

getsebool -a | grep httpd

允许Apache通过SELinux连接到远程数据库

setsebool httpd_can_network_connect_db 1

使用-P选项使更改永久生效。如果没有此选项,则布尔值将在重新启动时重置为0。

setsebool -P httpd_can_network_connect_db 1

3
似乎也需要通过127.0.0.1环回进行连接吗?
Devin Ceartas

@Devin,绝对。
e18r

2
如果要允许用户连接到本地mysql服务器,则必须同时打开selinuxuser_mysql_connect_enabled布尔值。
安东·马可夫斯基

setsebool -P httpd_can_network_connect 1可能也需要。这是我的日志ausearch -m avc -ts today | audit2why中建议的,方法是按照vnix27的注释中的建议运行。
网站

2

收到错误消息吗?您使用的是哪种Linux?如果遇到错误,安全上下文是一个很好的起点。ls -Z将提供上下文信息...但是您的问题非常模糊。


我正在从Windows框进行连接。没有错误...连接只是被拒绝,页面超时。我知道如果我关闭selinux,一切都会好起来的。

由于连接是从Windows盒传入的,因此ls -Z仅向我提供有关我在linux盒中位于哪个目录中的文件的信息。

在我的问题上面我列举了MySQL参考...这要禁用mysqld进程的SELinux保护说...但它并没有说该怎么做:(我也不能找出如何。

linux盒子上的日志中有任何内容吗?selinux可以阻止httpd建立套接字连接...

消息或安全日志中什么都没有...您有没有想过的特定日志?



1

ausearch命令可以帮助您找到错误日志。


1
ausearch -m avc -ts今天| audit2why,命令可以建议解决方案
vnix27 2011年

1

您也可以制定本地政策:

“您可以生成本地策略模块以允许此访问。请通过执行以下操作暂时允许此访问:”

grep httpd /var/log/audit/audit.log | audit2allow -M mypol

semodule -i mypol.pp

或为实际会话全局启用:

setsebool httpd_can_network_connect_db 1

或永久性:

setsebool -P httpd_can_network_connect_db 1
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.