Selinux的解决方案
1.Selinux的功能及其对系统的影响
selinux:内核级加强型防火墙
selinux( 安全增强型 Linux ) 是可以保护系统安全性的额外机制
通俗的来说,selinux的作用就是给系统中开启的文件和程序加载一个标签,每个特定的程序对应一个特定的标签;给系统中的功能添加一个开关,这个开关由selinux来控制,通过selinux打开开关,系统的功能才能正常运行
selinux对系统的影响:
举例说明:比如在做ftp服务时,我将selinux设置为关闭状态,ftp服务的功能可以正常使用,但我现在将selinux设置为开启状态,ftp的一些服务就不能正常使用了。
2.显示及更改Selinux模式
- 配置文件更改selinux状态
vim /etc/sysconfig/selinux ##编辑selinux配置文件
- 命令方式更改selinux状态
getenforce ##查看selinux状态
setenforce ##改变selinux状态 0--Permissive 1--Enforcing
注意:命令方式只能使selinux在警告状态和强制状态中切换,设置selinunx开启到关闭或关闭到开启,必须用更改配置文件的方式
3.Selinux中对文件安全上下文的设定
- 显示 SELinux 文件上下文:“Z”
ls -Zd /dir ##显示指定目录安全上下文
- 临时更改:
chcon -t 安全上下文 文件
chcon -t public_content_t /westos/ -R ##更改westos安全上下文为public_content_t
注意:/var/ftp/… 这个目录里面的文件,安全上下文是固定的,而其他目录中的文件安全上下文不是固定的,所以更改是临时的,在更改状态并重启后设定会还原
- 永久更改:
semanage fcontext -l ##查看安全上下文文件目录
semanage fcontext -a -t public_content_t '/westos(/.*)?' ##设定westos目录下的文件安全上下文为public_content_t
semanage fcontext -l | grep westos ##查看目录中westos安全上下文
restorecon -RvvF /westos/ ##刷新
4.管理Selinux布尔值bool
sebool值是控制服务功能的开关
getsebool -a | grep 服务名称 ##查看指定服务布尔值
getsebool -a | grep ftp ##查看ftp服务布尔值
setsebool -P 服务 on|off ##在这里on=1 off=0
setsebool -P ftpd_anon_write on ##打开匿名用户上传功能
测试1:
在设置bool值之前使用本地用户无法上传文件,设置后可以上传
注意:bool值是selinux给系统附加的一个开关,要实现功能必须保证功能本身是开启的,再设定bool值,功能才能正常使用
测试2:
在设置bool值之前使用匿名用户无法上传文件,设置后发现也不能上传,此时我们就需要用到安全上下文中的内容,去更改pub目录的安全上下文,更改后才可以正常上传
5.Selinux的排错
- 软件安装
yum install setroubleshoot-server -y ##这个软件会提供解决策略
cat /var/log/messages ##查看日志(日志中有解决策略)
- 工作原理
setroubleshoot-server 侦听 /var/log/audit/audit.log 中的审核信息并将简短摘要发送至 /var/log/messages
/var/log/audit/audit.log 用于在该文件中生成所有事件的报告
- 测试:
touch /mnt/file
mv /mnt/file /var/ftp/pub
> /var/log/audit/audit.log ##清空该日志文件中的内容
> /var/log/messages ##清空该日志文件中的内容
lftp ip ##查看pub目录下的文件没有看到file
cat /var/log/audit/audit.log ##可以看到查看mnt被拒绝的记录
cat /var/log/messages ##可以看到解决策略
Then execute:
restorecon -v ‘/pub/file’
解决:
restorecon -v /var/ftp/pub/file
再进入lftp就可以看到file
注意:必须安装 setroubleshoot-server 软件包 , 才能将SELinux消息发送至 /var/log/messages