Linux ---selinux详解

本文深入解析SELinux的工作原理,包括其定义、状态影响、安全上下文的作用及如何解决不一致问题。同时,介绍了与SELinux相关的日志,以及通过setroubleshoot-server进行故障排查的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、selinux的定义

1 SElinux

安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统

SELinux 主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)

2 SElinux对系统的影响

SELinux插件开启时会为系统中开启的每一个程序和每一个文件加载一个标签,特定标签的程序只能读取或者操作特定标签的文件,如果标签不配套,该访问就会被禁止,这种在文件上的标签被称为 安全上下文,在程序上的标签为sebool

二、selinux的状态及其影响

1 selinux的状态
selinux的配置文件: /etc/sysconfig/selinux

状态含义
SELINUX=enforcingselinux开启,级别为强制
SELINUX=permissiveselinux开启,级别为警告
SELINUX=disableselinux关闭

注意enforceingpermissive二者可以直接进行切换,但是二者与disable(关闭selinux)进行切换时要重启reboot

setenforce=0切换为警告模式
setenforce=1切换为强制模式
getenforce :查看selinux的状态

2 在selinux开启和关闭的情况下对安全上下文的影响
selinux对文件的影响: selinux给每个文件加标签
标签匹配才能被访问,每个程序安全上下文要匹配(在/var/ftp/下看mv过去的能不能看到)
selinux关闭的情况下:
在这里插入图片描述
在这里插入图片描述
selinux开启的情况:
当selinux对文件有影响时,是因为文件上面的标签不一样,因此当selinux开启时在默认发布目录下就不能看到刚才mv的文件,因为/var/ftp/这个默认发布目录与mv进去的文件标签不一样
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、解决安全上下文不一致问题

1 临时更改
临时更改适用于更该文件 chcon -t 安全上下文 文件selinux重启之后就不会再生效
在这里插入图片描述
2 永久更改
注意:不管selinux是开启还是关闭,永久设置都会生效

semanage fcontext -l | grep /var/ftp 查看系统默认发布目录设置的标签
semanage fcontext -l | grep /ftpdir 发现我们自己新建的并没有这个标签
semanage fcontext -a -t public_context_t ‘/ftpdir(/.*)?’ 将自己建立的发布目录加上标签(目录里面的内容)
semanage fcontext -l | grep /ftpdir 这此查看就可以看到我们自己新建的ftp发布目录标签也是public了
ls -Zd /ftpdir/
restorecon -RvvF /ftpdir/ 刷新

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3 selinux设置为enforceing仍然可以上传文件
sebool 会限制服务的不安全功能,如果需要用此功能,必须调整seboolsebool值是控制服务功能的开关

getsebool -a | grep ftp       查看匿名用户的能力
getsebool -P | grep 服务名称 查看指定服务布尔值
setsebool -P bool值 on |off   在这里on=1 off=0

在设置bool值之前使用本地用户无法上传文件,设置后可以上传
注意:bool值是selinux给系统附加的一个开关,要实现功能必须保证功能本身是开启的,再设定bool值,功能才能正常使用

getsebool | grep ftp
setsebool -P(永久设置) ftpd_anon_write 1(on) 让匿名用户可以上传

在这里插入图片描述

chcon -t public_content _rw_t /var/ftp/pub/ 让匿名用户具有读写这个目录的权力(必须设置)

在这里插入图片描述
还要结合之前在配置文件里写的东西和给予pub的权限等,这样,即使在selinux为enforcing的情况下仍然能够上传文件
在这里插入图片描述

四、与selinux相关的两个日志

/var/log/messages 系统日志,提供解决方案,需要安装服务才能提供解决方案
/var/audit/audit.log为selinux真正的日志,不提供解决方案

五、selinux的排错

1 软件安装

  1 | yum install setroubleshoot-server -y	 	##这个软件会提供解决策略
  2 | cat /var/log/messages						##查看日志(日志中有解决策略)

setroubleshoot-server 侦听 /var/log/audit/audit.log 中的审核信息并将简短摘要发送至 /var/log/messages
/var/log/audit/audit.log 用于在该文件中生成所有事件的报告
2 测试

  1 | touch /mnt/file
  2 | mv /mnt/file /var/ftp/pub
  3 | > /var/log/audit/audit.log				##清空该日志文件中的内容
  4 | > /var/log/messages						##清空该日志文件中的内容
  5 | lftp ip									##查看pub目录下的文件没有看到file
  6 | cat /var/log/audit/audit.log			    ##可以看到查看mnt被拒绝的记录
  7 | cat /var/log/messages					    ##可以看到解决策略

3 解决

1 | restorecon -v /var/ftp/pub/file

再进入lftp就可以看到file

注意:必须安装 setroubleshoot-server软件包 , 才能将SELinux消息发送至 /var/log/messages
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值