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