初识SELinux
什么是SELinux
说专业一点: 安全性增强的Linux(SELinux)是Linux内核中强制性访问控制机制的一种实现, 它在检查了标准的自由访问控制后检查允许的操作. SELinux可以基于定义的策略对Linux系统中的文件和进程及其动作实施规则.
说的通俗一点: SELinux在大多数情况下可以理解为一个以进程为主体的资源访问白名单. 再絮叨几点:- 额外的安全层: SELinux实现的强制性访问控制(MAC)系统不是为了取代自由访问控制(DAC)而生的, 是对DAC的补充和完善, 只有同时通过DAC和MAC的认可才可以顺利的访问资源.
- LSM中的模块: SELinux是LSM中的模组, 由NSA开发, 对资源访问时在内核中拦截操作, 不太容易从原理上被绕过.
- 白名单机制:SELinux中除了策略明确规定允许访问的资源外, 其他资源默认都拒绝访问.
- 通常被限制的进程: dhcpd; httpd; mysqld; named; nscd; ntpd; portmap; postgres; snmpd; squid; syslogd; and winbind. 如果想要丰富这个列表需要自己定义规则.
SELinux的概念
三种工作状态
安全最终还是为业务服务, SELinux为了缓解安全策略和开发/运维人员的矛盾可以使用多种工作模式进行工作:- enforcing-- 强制执行策略, 拦截不符合规则的操作
- permissive-- 非强制执行, 对于不符合规则的操作只做记录不做拦截处理
- disabled -- 关闭SELinux, 对不符合规则的行为不拦截也不记录, 但是会在你创建文件时给文件添加安全上下文
三种安全模式
- 目标策略模式(Targeted Policy) -- 相对宽松只对部分网络进程作出限制, 最常见的模式
- 最低限度模式(minimum) -- 仅管理指定的网络进程
- 多级安全模式(MLS) -- 类似于电影中的保密,机密,绝密的分类方式, 高权限可以访问低权限反之则不行.
/etc/sysconfig/selinux
查看和配置, 配置完成后需要重启。
[toor@localhost ~]$ cat /etc/sysconfig/selinux
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is