基本 SELinux 安全性概念
SELinux (安全增强型 Linux )是保护您的系统的另一种方法。
假设我们希望允许远程匿名访问 Web 服务器,我们必须通过防火墙打开端口。然而,这意味着恶意人员可以尝试利用安全漏洞以及,如果他们损坏 Web 服务器进程,获得 apache 用户和 apache 组的权限来强行进入系统。该用户/组具有document root( /var/www/html )等的读取权限以及/tmp./var/tmp和所有人均可写的任何其他文件/目录的写入权限。
SELinux 是一组可确定哪个进程能访问哪些文件、目录、端口等的安全规则。每个文件、进程、目录和端口都具有专门的安全标签,称为 SELinux 上下文。上下文只是一个名称, SELinux 策略使用它来确定某个进程是否能访问文件、目录或端口。默认情况下,该策略不允许任何交互,因此明确的规则授予访问权限。如果没有允许规则,则不允许访问。SELinux 的目标之一是保护用户数据免受已泄漏的系统服务的威胁。
SELinux 模式.为了进行故障排除,我们可以临时禁用 SELinux 保护,SELinux 模式有三种模式(1)强制模式enforcing(2)警告(许可)模式。permissive (3)禁用模式disabled。不过从enforing和permissive的互相转换是即时生效的,直接使用setenforce 0|1 即可改变,然后从这两种模式到disabled的转换是需要重启电脑的。getenforce用于显示当前的selinux模式。
在强制模式中, SELinux 主动拒绝访问尝试读取类型上下文为 tmp_t 的文件的 Web 服务器。在强制模式中, SELinux 不仅记录而且提供保护。许可模式通常用于对问题进行故障排除。在许可模式中,即使没有明确规则, SELinux 也允许所有交互,并且记录所有被拒绝的交互。此模式可以用于确定您是否有 SELinux 问题。无需重新引导即可从强制模式转为许可模式,或再从许可模式转回强制模式。第三个模式禁用,将完全禁用 SELinux 。您必须重新引导才能彻底禁用 SELinux ,或者从禁用模式转为强制模式或许可模式。
[root@desktop40 Desktop]# cat /etc/selinux/config
- # 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
2.许多处理文件的命令具有一个用于显示或设置 SELinux 上下文的选项(通常是 -Z )。例如, ps 、 ls.cp 和 mkdir 都使用 -Z 选项显示或设置 SELinux 上下文。如:ps -axZ ps -ZC /var/www/html。ls -Z,确定selinux上下文的通常是父目录。将父目录的上下文指定给新创建的文件,cp和touch等命令其作用,但是,如果文件在其他位置创建的并且保留了权限(与mv和cp -a一样。)
semanage fcontext可用于显示或者修改restorrecon用来设置默认文件的上下文的规则。它使用扩展正则表达式来指定路径和文件名。fcontext规则中最常用的扩展正则表达式是(/.*)?,表示随意地匹配/后跟任何数量的字符。本质上它将递归的与在表达式前面列出的目录以及该目录中所有内容相匹配。
restorecon 是 policycoreutil 软件包的一部分, semanage 是 policycoreutil-python 软件包的一部分。
另外两种设置selinux的策略是:
chcon -t httpd_sys_context_t /virtual/ -R(-R是递归)
chcon -R --reference=/var/www/html /virtual/ (以上两种是比较简单的设置selinux策略的,比较简单,常用的哦!)
3.管理selinux的布尔值:
SELinux 布尔值是更改 SELinux 策略行为的开关。 SELinux 布尔值是可以启用或禁用的规则。安全管理员可以使用 SELinux 布尔值来调整策略,以有选择地进行调整。getsebool 用于显示布尔值, setsebool 用于修改布尔值。 setsebool -P 修改 SELinux 策略,以永久保留修改。 semanage boolean -l 将显示布尔值是否永久。
getsebool -a (显示当前所保存的所有的可用布尔值)
setsebool httpd_enabled_homedirs on (一次性的修改开机失效通过semanage boolean -l | grep httpd_enable_homedir可以查看永久的信息,经修改的项仍然是off的,getsebool -a | grep httpd_enable_homedir显示的是当前的值显示on的)
setsebool -P httpd_enabled_homedirs on (永久修改的哦!semanage boolean -l | grep httpd_enable_homedir和getsebool -a | grep httpd_enable_homedir显示的都是on的哦!)
4.关于监控selinux冲突
必须安装 setroubleshoot-server 软件包,才能将 SELinux 消息发送至 /var/log/messages 。setroubleshoot-server 侦听 /var/log/audit/audit.log 中的审核信息并将简短摘要发送至 /var/log/messages 。摘要包括 SELinux 冲突的唯一标识符( UUIDs ),可用于收集更多信息。 Sealert -l UUID用于生成特定事件的报告。 Sealert -a /var/log/audit/audit.log 用于在该文件中生成所有事件的报告。
本文出自 “资料小结” 博客,谢绝转载!