SELinux 权限设置
一、SELinux简介
SELinux全称是Security Enhanced Linux,由美国国家安全部(National Security Agency)领导开发的GPL项目,它拥有一个灵活而强制性的访问控制结构,旨在提高Linux系统的安全性,提供强健的安全保证,可防御未知攻击,据称相当于B1级的军事安全性能。比MS NT所谓的C2等高得多。
应用SELinux后,可以减轻恶意攻击或恶意软件带来的灾难,并提供对机密性和完整性有很高要求的信息很高的安全保障。 SELinux vs Linux 普通Linux安全和传统Unix系统一样,基于自主存取控制方法,即DAC,只要符合规定的权限,如规定的所有者和文件属性等,就可存取资源。在传统的安全机制下,一些通过setuid/setgid的程序就产生了严重安全隐患,甚至一些错误的配置就可引发巨大的漏洞,被轻易攻击。
而SELinux则基于强制存取控制方法,即MAC,透过强制性的安全策略,应用程序或用户必须同时符合DAC及对应SELinux的MAC才能进行正常操作,否则都将遭到拒绝或失败,而这些问题将不会影响其他正常运作的程序和应用,并保持它们的安全系统结构。
二、SELinux主要配制文件
SELinux主要配制文件位于/etc/selinux/下。在网络中的服务器,建议开启SELinx,以提高系统的安全性。我这里通过命令方式来改变SELinx的安全策略,就不在对SELinux的配制文件做具体说明。
三、SELinux常用的命令
Ø ls –Z | ps –Z | id –Z
分别用于查看文件(夹)、进程和用户的SELinx属性。最常用的是ls -Z
Ø sestatus
查看当前SELinux的运行状态
Ø setenforce
在SELinux为启动模式下,用此命令可以暂时停用SELinux
Ø getsebool
查看当前Policy(策略)的布尔值
Ø setsebool
设置Policy的布尔值,以启用或停用某项Policy
Ø chcon
改变文件或文件夹的content标记
四、SELinux实用案例
4.1 SELinux对Apache的保护
新安装的wordpress位于/vogins/share/wordpress下,按照系统的默认策略,/vogins,/vogins/share的SELinux属性为file_t,而这是不允许httpd进程直接访问的。为此,需要做如下高调整:
-
改变/vogins,/vogins/share的SELinux属性
Shell> chcon –tvar_t /vogins
Shell> chcon –tvar_t /vogins/share
-
改变wrodpress目录的SELinux属性
Shell> chcon -R -t httpd_sys_content_t /wordpress
-
允许apache进程访问mysql
setsebool -P httpd_can_network_connect=1
-
关于Apache里虚拟主机的配制就里就不多说,重新启动apache,就可以正常访问wordpress
Shell>/etc/init.d/httpd start
注意:如果出现不能访问的情况,请查看/var/log/messages里的日志。一般来说,按照提示就可以解决了。
- 可以在 Apache 文档根目录中添加、删除和编辑文件。现在您已准备好添加内容,例如静态网站或 PHP 应用程序。
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/site/run/frontend/runtime' && restorecon -v '/var/www/html/site/run/frontend/runtime'
***主要是此命令改变role后才生效
chcon -R -t httpd_sys_rw_content_t /var/www/html/
SELinux 违规日志保存在 /var/log/audit/audit.log 中。
当开启了 SELinux 之后,很多服务的一些正常行为都会被视为违规行为(标题及下文中的错误均指违规行为)。
这时候我们就需要借助 SELinux 违规日志来分析解决。
SELinux 违规日志保存在 /var/log/audit/audit.log 中。
/var/log/audit/audit.log 的内容大概是这样的。
type=LOGIN msg=audit(1507898701.391:515): pid=8523 uid=0 subj=system_u:system_r:crond_t:s0-s0:c0.c1023 old-auid=4294967295 auid=0 tty=(none) old-ses=4294967295 ses=25 res=1
type=USER_START msg=audit(1507898701.421:516): pid=8523 uid=0 auid=0 ses=25 subj=system_u:system_r:crond_t:s0-s0:c0.c1023 msg='op=PAM:session_open grantors=pam_loginuid,pam_keyinit,pam_limits,pam_systemd acct="root" exe="/usr/sbin/crond" hostname=? addr=? terminal=cron res=success'
...
该文件的内容很多,而且混有很多与 SELinux 错误无关的系统审计日志。我们要借助 sealert 这个实用工具来帮忙分析(如果提示找不到命令的话请安装 setroubleshoot 软件包)。
5.2 使用sealert分析错误
命令基本用法
sealert -a /var/log/audit/audit.log