(一)selinux简介:
SELinux是Security-Enhanced Linux的缩写,意思是安全强化的linux。
SELinux 主要由美国国家安全局(NSA)开发,当初开发的目的是为了避免资源的误用。
(二)selinux工作原理:
SELinux是通过MAC的方式来控制管理进程,它控制的主体是进程,而目标则是该进程能否读取的文件资源:
主体(subject):就是进程
目标(object):被主体访问的资源,可以是文件、目录、端口等。
策略(policy):由于进程与文件数量庞大,因此SELinux会依据某些服务来制定基本的访问安全策略。 这些策略内还会有详细的规则(rule)来指定不同的服务开放某些资源的访问与否。目前主要的策略有:
? ? ? ? targeted:针对网络服务限制较多,针对本机限制较少,是默认的策略
? ? ? ? strict:完整的SELinux限制,限制方面较为严格
安全上下文(security context):主体能不能访问目标除了策略指定外,主体与目标的安全上下文必须 一致才能够顺利访问(最终文件的成功访问还是与文件系统的rwx权限设置有关 )。
ls -z :查看文件安全上下文
安全上下文用冒号分为四个字段:
Identify:role:type:s0/s1/s2
1.身份标识(Identify):相当于账号方面的身份标识,主要有以下三种常见的类型:
root:表示root的账号身份;
system_u:表示程序方面的标识,通常就是进程;
unconfined_u:代表的是一般用户账号相关的身份。
2.角色(role):通过角色字段,可知道这个数据是属于程序、文件资源还是代表用户。一般角色 有:
object_r:代表的是文件或目录等文件资源;
system_r:代表的是进程。
3.类型(type):在默认的targeted策略中,Identify与role字段基本上是不重要的,重要的在于这 个类型字段。而类型字段在文件与进程的定义不太相同,分别是:
type:在文件资源上面称为类型;
domain:在主体程序中则称为域;
domain需要与type搭配,则该程序才能够顺利读取文件资源。
4.最后一个字段是和MLS和MCS相关的东西,代表灵敏度,一般用s0、s1、s2来命名,数字代表灵敏 度的分级。数值越大、灵敏度越高
????????
(三)selinux的启动、关闭与查看
3.1,selinux的三种模式:
enforcing:强制模式,代表selinux正在运行中,开始限制domain/type。
permissive:宽容模式,代表SELinux正在运行中,不过仅会有警告信息并不会实际限制domain/type的访问。
disabled:关闭,SELinux并没有实际运行。
3.2,修改安全上下文:
(四)实例:
4.1,(实验一)使用web服务演示安全上下文值的设定:
1.创建nginx下的server服务:
vim /etc/nginx/conf.d/test_server
2.创建index.html文件:
echo this is test_server > /www/ip/index.html
3.关闭firewalld(此时selinux的状态是Enforcing):
systemctl disable firewalld --now
4.启动nginx服务:
systemctl start nginx?
5.访问网址
肯定访问不通,因为此时selinux的状态是Enforcing
6.设置安全上下文并重启nginx:
chcon -t httpd_sys_content_t /www/ -R
systemctl restart nginx?
7.再次访问
成功!!!!