SELinux(Security-Enhanced Linux)是Linux内核的一个安全模块,提供了强制访问控制(MAC)机制,可以显著增强CentOS系统的安全性。以下是使用SELinux保护CentOS系统的详细指南:
# 查看当前SELinux状态
sestatus
# 或使用
getenforce
可能的输出结果: - Enforcing: 强制模式,完全启用SELinux安全策略 - Permissive: 宽容模式,仅记录违规行为但不阻止 - Disabled: 完全禁用
如果SELinux当前是禁用状态,需要编辑配置文件并重启:
# 编辑SELinux配置文件
vi /etc/selinux/config
将SELINUX=
行修改为:
SELINUX=enforcing
然后重启系统使更改生效。
临时更改模式(重启后恢复):
# 设置为强制模式
setenforce 1
# 设置为宽容模式
setenforce 0
# 查看文件上下文
ls -Z /path/to/file
# 查看进程上下文
ps -Z
# 临时修改
chcon -t httpd_sys_content_t /var/www/html/index.html
# 永久修改(使更改在文件系统relabel后仍然保留)
semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?"
restorecon -Rv /var/www/html
# 使用ausearch工具
ausearch -m avc -ts recent
# 或查看/var/log/audit/audit.log
grep "avc:" /var/log/audit/audit.log
# 生成可读报告
ausearch -m avc -ts recent | audit2allow
# 生成并安装策略模块
ausearch -m avc -ts recent | audit2allow -M mypolicy
semodule -i mypolicy.pp
SELinux布尔值是开关式策略,可以灵活调整:
# 列出所有布尔值
getsebool -a
# 查看特定布尔值(如HTTP服务相关)
getsebool -a | grep http
# 修改布尔值(允许HTTP访问家目录)
setsebool -P httpd_enable_homedirs on
当服务因SELinux无法正常工作时:
1. 检查/var/log/audit/audit.log
或/var/log/messages
中的拒绝消息
2. 临时设置为Permissive模式测试是否是SELinux导致的问题
3. 使用sealert -a /var/log/audit/audit.log
生成易读报告
4. 根据报告建议调整策略或上下文
通过合理配置和使用SELinux,可以显著提高CentOS系统的安全性,防止许多潜在的攻击和误操作。