强制访问控制安全子系统

SELinux全称为Security-Enhanced Linux是美国国家安全局在Linux社区帮助下开发的一个强制访问控制的安全子系统,SELinux属于MAC强制访问控制(Mandatory Access Control)——即让系统中的各个服务进程都受到约束,即仅能访问到所需要的文件。 以本人的亲身经历不得不说国内很多运维人员对SELinux的理解不深,导致该功能在很多服务器中直接被禁用。 模式一: enforcing – 安全策略强制启用模式,将会拦截服务的不合法请求。 模式二: permissive – 遇到服务越权访问只会发出警告而不强制拦截。 模式三: disabled – 对于越权的行为不警告,也不拦截。 有时关闭SELinux后确实能够减少报错几率,但这极其的不推荐并且本书实验环境均为开启状态,确保您的SELinux服务是默认启用的: 第1步:切换到SELinux服务的配置文件目录”/etc/selinux“。 第2步:编辑config文件将模式改为强制启用,记得保存哦! 如果发现SELINUX=permissive或disabled那就赶紧改过来吧:

[root@linuxprobe ~]# cd /etc/selinux

[root@linuxprobe selinux]# vim config SELINUX=enforcing

此时可以来查询下当前的SELinux服务状态:

[root@linuxprobe ~]# getenforce Enforcing  

9.6 允许SELinux策略

哦~~原来如此,为了确认是这个讨厌的SELinux服务在捣鬼,我们来先关闭它试试吧: [root@linuxprobe ~]# setenforce 0 检查状态,现在已经是“禁止模式”了: [root@linuxprobe ~]# getenforce Permissive 打开浏览器再键入http://127.0.0.1,果然成功了! [root@linuxprobe wwwroot]#firefox 果然是因为没有配置好SELinux服务,再次开启它吧: [root@linuxprobe ~]# setenforce 1 刚刚浏览器里报错说“禁止,你没有访问index.html文件的权限”,那怎么开启SELinux的允许策略呢? SELinux安全策略包括安全上下文SELinux:对进程资源进行限制(查看方式:ps -Z) SELinux安全上下文:对系统资源进行限制(查看方式:ls -Z) 使用”ls -Z“命令检查下新旧网站数据目录的SELinux安全上下文有何不同吧:

[root@linuxprobe ~]# ls -Zd /var/www/html drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html

[root@linuxprobe ~]# ls -Zd /home/wwwroot drwxrwxrwx. root root unconfined_u:object_r:home_root_t:s0 /home/wwwroot

SELinux安全上下文是由冒号间隔的四个字段组成的,以原始网站数据目录的安全上下文为例分析下吧: 用户段:root表示root账户身份,user_u表示普通用户身份,system_u表示系统进程身份。 角色段:object_r是文件目录角色,system_r是一般进程角色。 类型段:进程和文件都有一个类型用于限制存取权限。 解决办法就是将当前网站目录”/home/wwwroot“的安全上下文修改成system_u:object_r:httpd_sys_content_t:s0就可以啦~ semanage命令用于查询与修改SELinux的安全上下文,格式为:“semanage [选项] [文件]”。

参数 作用
-l 查询
-a 增加
-m 修改
-d 删除

restorecon命令用于恢复SELinux文件安全上下文,格式为:“restorecon [选项] [文件]”。

-i 忽略不存在的文件
-e 排除目录
-R 递归处理(针对目录使用)
-v 显示详细的过程
-F 强制恢复

修改网站数据目录的安全上下文:

[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot

修改网站数据的安全上下文(*代表所有文件或目录):

[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/*

这样操作后查看到SELinux安全上下文依然没有改变,不要着急,再执行下restorecon命令即可:

[root@linuxprobe ~]# restorecon -Rv /home/wwwroot/

再来刷新浏览器后看到正常页面:

[root@linuxprobe ~]# firefox

真可谓是一波三折,原本以为将Apache服务配置妥当就大功告成,结果却受到了SELinux安全上下文的限制,看来真是要细心才行。

posted @ 2016-11-30 16:58  snooopy  阅读(483)  评论(0)    收藏  举报