CentOS 7中的SELinux(SecurityEnhanced Linux)是一个重要的安全模块,它通过强制访问控制(Mandatory Access Control, MAC)来增强系统的安全性,以下是对SELinux的详细介绍、配置方法及常见问题解答:
SELinux简介
SELinux是一种集成在Linux内核中的安全模块,提供了更细粒度的安全策略,与传统的自主访问控制(Discretionary Access Control, DAC)不同,SELinux通过策略文件定义了每个进程和文件的安全上下文(Context),从而限制了进程对资源的访问权限,SELinux有三种主要的工作模式:
1、Enforcing:强制执行模式,所有违反策略的操作都会被阻止并记录日志。
2、Permissive:宽容模式,违规操作会被记录但不会阻止。
3、Disabled:禁用模式,不加载任何SELinux策略。
SELinux配置文件
CentOS 7系统中的SELinux全局配置文件为/etc/sysconfig/selinux
如下:
This file controls the state of SELinux on the system. SELINUX= can take one of these three values: enforcing SELinux security policy is enforced. permissive SELinux prints warnings instead of enforcing. disabled No SELinux policy is loaded. SELINUX=enforcing SELINUXTYPE= can take one of these two values: targeted Targeted processes are protected, mls Multi Level Security protection. SELINUXTYPE=targeted
SELINUX
:设置SELinux的总开关,有效值可以是enforcing
、permissive
或disabled
。
SELINUXTYPE
:设置SELinux的类型,有效值可以是targeted
或mls
。
SELinux排错
不管SELinux策略是允许还是拒绝资源的访问请求行为,都会记录日志,即AVC(Access Vector Cache),所有SELinux拒绝的消息都会被记录进日志,根据系统中安装运行的服务进程不同,拒绝日志消息会被记录到不同的文件中,常见的日志文件包括:
/var/log/audit/audit.log
:当auditd服务开启时。
/var/log/messages
:当auditd服务关闭且rsyslogd服务开启时。
/var/log/audit/audit.log
和/var/log/messages
:当auditd与rsyslogd同时开启时。
对于大多数生产环境中的服务器,建议安装setroubleshoot相关的软件包,这样可以将原本生涩的AVC拒绝日志转换为可读性比较高的setroubleshoot日志,查看日志可以使用以下命令:
grep setroubleshoot /var/log/messages grep denied /var/log/audit/audit.log
修改安全上下文
有多种方式可以修改与管理SELinux安全上下文,如chcon
、semanage
、fcontext
以及restorecon
命令。
1、chcon命令:用于修改文件或目录的SELinux安全上下文。
chcon [选项] [u SELinux用户] [r 角色] [l 范围] [t 类型] 文件
示例:
cp preserve=all /etc/passwd /root/ ls Z /root/passwd chcon t admin_home_t /root/passwd ls Z /root/passwd
2、semanage命令:用于管理SELinux的策略规则。
semanage fcontext a t httpd_sys_content_t '/var/www/html(/.*)?'
3、fcontext命令:用于生成SELinux策略文件。
fcontext a t my_custom_type '/my/custom/path(/.*)?'
4、restorecon命令:用于恢复文件或目录的默认安全上下文。
restorecon Rv /path/to/directory
常见问题解答(FAQs)
1、如何临时关闭SELinux?
使用setenforce
命令可以临时改变SELinux的模式,要设置为宽容模式,可以使用以下命令:
sudo setenforce 0
要设置为强制模式,可以使用:
sudo setenforce 1
2、如何永久关闭SELinux?
编辑/etc/sysconfig/selinux
文件,将SELINUX=enforcing
改为SELINUX=disabled
,然后重启系统。
sudo vi /etc/sysconfig/selinux
修改后保存并退出编辑器,然后重启系统:
sudo reboot
SELinux是一个强大的安全工具,能够显著提高系统的安全性,它也可能导致一些兼容性问题,特别是在安装某些软件或服务时,了解如何正确配置和管理SELinux是非常重要的。