Selinux 管理(安全加固) —— 筑梦之路

 技术|SELinux 入门

GitHub - SELinuxProject/selinux: This is the upstream repository for the Security Enhanced Linux (SELinux) userland libraries and tools. The software provided by this project complements the SELinux features integrated into the Linux kernel and is used by Linux distributions. All bugs and patches should be submitted to [email protected]

SELinux(Security-Enhanced Linux)是一个安全模块,内置于 Linux 内核中,为 Linux 系统提供了一个额外的安全层。它通过实施强制访问控制(MAC)来限制进程的访问权限,可以帮助防止恶意软件和攻击者对系统的攻击。与传统的基于用户/组的访问控制(DAC)不同,SELinux 使用安全策略(如标签和规则)来管理进程、文件、网络端口等资源的访问权限。这些策略可以根据特定的应用程序或系统环境进行自定义配置,使系统管理员能够更精细地控制系统的安全性和保护系统免受潜在的安全威胁。

案例一则:

1. 查看SELinux状态和模式

sestatus

getenforce

2. 永久开启SELinux

cat > /etc/selinux/config << EOF
SELINUX=enforcing
SELINUXTYPE=targeted
EOF

重启生效

sestatus 

3. 配置SELinux以允许Nginx和PHP-FPM服务提供Web服务。

由于Nginx和PHP-FPM需要绑定到网络端口,需要修改SELinux策略以允许它们执行此操作,为Nginx和PHP-FPM配置SELinux

semanage port -a -t http_port_t -p tcp 80

semanage port -a -t http_port_t -p tcp 443

将端口80和443添加到SELinux的http_port_t类型中,以允许Nginx和PHP-FPM服务绑定到这些端口

4. 配置SELinux以允许MySQL服务访问。由于MySQL服务需要读取和写入数据文件,因此需要修改SELinux策略以允许它执行此操作。可以使用以下命令为MySQL配置SELinux

semanage port -a -t mysqld_port_t -p tcp 3306

将端口3306添加到SELinux的mysqld_port_t类型中,以允许MySQL服务访问该端口

5. 配置SELinux以允许Nginx和PHP-FPM服务访问MySQL数据库,修改SELinux策略以允许它们执行此操作

setsebool -P httpd_can_network_connect_db 1

将SELinux的httpd_can_network_connect_db选项设置为1,以允许Nginx和PHP-FPM服务连接到MySQL数据库

6. 测试SELinux配置,确保所有服务都可以正常访问并运行

systemctl restart nginx php-fpm

将重新启动Nginx和PHP-FPM服务,并检查是否出现任何错误

还可以使用以下命令测试MySQL的配置:

mysql -h 192.168.11.10 -u cmdbuser -p

此命令将连接到MySQL数据库并验证是否可以正常读取和写入数据

7. 关于php-fpm端口

注意了,默认情况下,PHP-FPM并不使用网络端口来提供服务,而是通过UNIX套接字(Unix socket)来与Nginx进行通信。我的Nginx和PHP-FPM都在同一台服务器上,则不需要为PHP-FPM配置SELinux端口。如果PHP-FPM需要与其他服务器进行通信,例如通过网络连接到一个远程的数据库服务器,那么就需要为PHP-FPM配置SELinux端口以允许它连接到其他服务器的网络端口。在这种情况下,可以使用semanage命令为PHP-FPM配置SELinux端口,就像刚才为MySQL服务做的那样
SELinux的工作机制基于标签(Label)和策略(Policy)。每个进程、文件、目录、套接字等系统资源都被赋予一个唯一的标签,这些标签被用来指示该资源的安全级别。策略则定义了哪些进程或用户可以访问或操作哪些资源,并规定了对这些资源的访问权限。

SELinux有三种模式:Enforcing、Permissive和Disabled。

Enforcing模式:是默认模式,也是最安全的模式,它强制执行SELinux策略,只允许访问和操作经过授权的资源,对未授权的访问进行拒绝和记录。如果一个进程或用户尝试访问或操作未授权的资源,它将被拒绝并记录日志。

Permissive模式:与Enforcing模式类似,但是它不会拒绝未授权的访问和操作,而是记录日志。这个模式可以用来测试策略,找到需要修改的地方。

Disabled模式:禁用SELinux,系统将不会应用SELinux的策略,所有的访问和操作将以传统的Linux权限控制方式进行。

总之,SELinux的工作机制是通过标签和策略来实现强制访问控制的。它的Enforcing模式可以帮助系统保护资源,减少潜在的安全漏洞和攻击。

猜你喜欢

转载自blog.csdn.net/qq_34777982/article/details/125084377