SELinux (Secure Enhanced Linux) 安装增强Linux是由NSA针对计算机基础结构安全开发的一个全新的Linux安全进制。SELinux允许管理员更加灵活的定义安全策略。
SELinux是一个内核级的安全机制,从2.6内核之后集成在内核当中
主流的Linux发型版本都会集成SELinux机制,CentOS/RHTL默认会开启SELinux
因为SELinux是内核机制,所以对SELinux的修改一般需要重新启动
SELinux基本概念
所有的安全机制都是两样东西做出限制:进程和系统资源(文件、网络套接字、系统调用等)
SELinux针对这个两种类型定义了两个基本概念:域(domain)和上下文(context)
域用来对进程进行限制
上下文用来对系统资源进行限制
命令 ps -Z 可查看进程的域
命令 ls -Z 可查看文件的上下文
策略
SELinux的通过定义策略来控制那些域可以访问哪些上下文
SELinux有很多预置策略,我们通常不需要自定义策略(除非我们需要对自定义服务、程序进行保护)
CentOS/RHEL使用预置的目标(target)策略
目标(Target)策略定义只有目标进程受到SELinux限制,其它进程运行在非限制模式下。目标策略只影响网络应用程序。
CentOS/RHEL中,受限制的网络服务程序在200左右,常见的有:
dhcpd
httpd
mysqld
named
ntpd
rpcbind
squid
syslogd
SELinux模式
SELinux有三种工作模式
强制(enforcing)
违反策略的行动都被禁止,并作为内核信息记录
允许(permissive)
违反策略的行动都不被禁止,但是会产生警告信息
禁用(disabled)
SELinux模式的配置文件为 /etc/sysconfig/selinux
SELinux=permissive
命令getenforce可以查看当前SELinux工作状态
getenforce
命令setenforce可以设置当前SELinux工作状态
setenforce 0 //暂时关闭 setenforce 1 //暂时开启
策略、域、上下文
命令ps、ls加入-Z参数就可以显示对应的SELinux信息,显示的信息类似:
system_u : object_r : httpd_exec-t : s0
用户(User) 角色(role) 类型(type) MLS、MCS
SELinux策略规定哪些域(进程)可以访问哪些上下文 (文件)
在对系统进行管理时,对文件的操作有时会改变文件的上下文,导致一些进程无法访问某些文件,所以我们一般需要检查、修改文件的上下文
命令 restorecon 可以用以恢复文件默认的上下文
restorecon -R -v /var/www
命令chcon可以用以改变文件的上下文
chcon --reference=/etc/named.conf.orig /etc/named.conf
实例
假设我们需要搭建一个web服务器,网页文件保存在/var/www/html目录中
用户在其家目录中编辑了一个网页,并将其通过mv命令移动到 /var/wwww/html 目录中
将SELinux设置为 enforcing 状态,通过浏览器访问该网页
查看 /var/log/audit/audit.log 中的报错信息
通过restorecon命令或chcon命令进行修复