Selinux初探
SELinux的运行模式
- SELinux也就是Security Enhanced Linux,是安全强化的Linux之意,当初开发目的是因为发现系统出现问题原因大部分都在于“内部员工的资源误用”所导致的,实际由系统外部发动的攻击反而没有这么严重
- SELinux是在进行程序、文件等权限设置依据的一个内核模块,由于启动网络服务的也是程序,因此刚好也是能够控制网络服务能否访问系统资源的一道关卡
- 依据进程的所有者与文件资源的rwx权限来决定有无访问的能力,这种访问文件系统的方式被称为“自主访问控制(DAC)”,这种控制方式存在问题是:
(1)root拥有最高权限
(2)用户可以取得进程来更改文件资源的访问权限 - 为了规避以上问题,SELinux采用了以策略规则制定特定程序读取特定文件的访问文件方式,称为委托访问控制(MAC),MAC可以针对特定的进程与特定的文件资源来进行权限的控制,使用不同进程时取得的权限也不一定。
- SELinux的策略,centos底下提供两个主要的策略:
targeted
:针对网络服务限制较多,针对本机限制较少,是默认的策略
strict
:完整的SELinux限制,限制方面较为严格 - SELinux中主体能不能访问目标除了策略制定之外,主体与目标的安全上下文必须一致才能够顺利访问。安全上下文我们可以认为是SELinux内必备的rwx权限就行。安全上下文存在于主体进程中和目标文件资源中,进程中的安全上下文存于内存中,而文件中的安全上下文则是放置到文件的inode内的,安全上下文可以使用
ls -Z
查看(开启SELinux的情况下) - 安全上下文主要用冒号分为三个字段:
identify:role:type 身份识别:角色:类型
(1)身份识别相当于账号方面的身份标识,主要有三种类型:root、system_u、user_u
(2)角色,通过角色我们可以知道这个数据是属于程序、文件资源还是代表用户,一般角色有:object_r、system_r
(3)类型(type,最重要),默认策略中一个主体进程能否读取到这个文件资源与类型字段有关,而类型字段在文件与进程中的定义不太相同,分别是:
type:在文件资源上面称为类型
domain:在主体程序中则称为域
domain需要与type搭配,则该程序才能够顺利读取文件资源
SELinux的启动、关闭与查看
- 防火墙:
临时关闭防火墙
systemctl stop firewalld
永久防火墙开机自关闭
systemctl disable firewalld
临时打开防火墙
systemctl start firewalld
防火墙开机启动
systemctl enable firewalld
查看防火墙状态
systemctl status firewalld
- SELinux:
临时关闭SELinux
setenforce 0
临时打开SELinux
setenforce 1
查看SELinux状态
getenforce
开机关闭SELinux
编辑/etc/selinux/config文件,将SELINUX的值设置为disabled。下次开机SELinux就不会启动了。