linux系统下的selinux初级管理
一、selinux的安全性
1、selinux内核级加强型防火墙,是可以保护系统安全性的额外机制。
2、selinux的功能
限制服务的功能
限制服务访问功能
3、验证selinux的两个功能
1)在服务端/mnt/目录下建立westos文件,并将westos移动到/var/ftp/pub/下
2)匿名登陆lftp服务,发现westos转移了过去
以上操作是在selinux=disabled的前提下实现的
3)编辑配置文件/etc/sysconfig/selinux,来开启selinux服务,并重启
4)在/mnt/目录下建立hello文件,并且将该文件移动到/var/ftp/pub下
5)匿名登陆lftp服务,发现hello文件不存在
以上为selinux的安全保护机制
二、selinux的级别
1、selinux分为三个级别:开启(enforcing也就是强制),警告(permissive)和关闭(disabled)。
2、enforcing,permissive向disabled相互转换时。需要在配置文件/etc/sysconfig/selinux中修改并且重启才能生效。
enforcing和permissive之间的相互转换用命令执行即可生效,不需要重启。
3、getenforce ##查看selinux的状态
setenforce 0 ##由开启转换到了警告状态
setenforce 1 ##由警告转换到了开启状态
修改配置文件vim /etc/sysconfig/selinux,并且重启,是将开启向关闭状态转换
三、安全上下文
vsftpd只识别public_content_t的标签
上面查看不了的文件hello在/mnt/目录之下,它是mnt_t的标签,所以lftp查看不了
1、ls -Z ##查看文件的安全上下文
2、ls -Zd ##查看目录的安全上下文
3、ps auxZ | grep vsftpd ##查看ftp服务的安全上下文
4、chcon -t 安全上下文 文件 ##临时修改文件的安全上下文
5、chcon -t 安全上下文 目录 ##临时更改目录的安全上下文
6、永久修改文件的安全上下文
1)建立目录/test,在目录之下建立文件file{1..3}
ls -Zd /test ##查看目录/test本身的安全上下文
ls -Zd /test/* ##查看/test目录下文件的安全上下文
2)semanage fcontext -a -t public_content_t '/test(/.*)?' ##在内核安全上下文列表中将/test/目录下的所有文件的安全上下文更改为public_content_t
3)restorecon -FvvR /test/* ##刷新/test目录下的所有文件的安全上下文,使其变成同种类型
(F表示指向,vv表示过程,R表示递归)
semanage fcontext -l | grep test ##查看与/test有关的安全上下文
7、删除文件的安全上下文
semanage fcontext -d '/test(/.*)?‘ ##删除内核上的安全上下文列表的/test
四、在selinux开启的情况下其影响程序功能
注意:
在ftp服务中,若将ftpd_full_access打开后,selinux将不再限制ftp服务的功能,一般情况下不要打开。
1、getsebool -a | grep ftp ##查看关于ftp的所有sebool值
2、setsebool -P ftpd_anon_write on ##打开ftp匿名用户写的功能(-P表示永久修改)
3、setsebool -P ftpd_anon_write off ##关闭ftp匿名用户写的功能
4、在sellinux开启的情况下,实现lftp去上传文件
1)安装vsftpd,开启vsftpd,并实现其开机自启,修改火墙配置文件
2)修改vsftpd服务的配置文件vim /etc/vsftpd/vsftpd.conf,打开文件上传的功能,重启vsftpd服务
3)chcon -t 修改文件的安全上下文,增加写的功能
4)setsebool打开ftp匿名用户write的功能
5)改变/var/ftp/pub的组为ftp,并且赋予组写的权限
6)开始在selinux未开启的情况下,匿名用户上传不了文件,但是现在可以
五、监控selinux冲突
selinux冲突的唯一标识符(UUID),可用于收集更多信息
/var/log/audit/audit.log 用于在该文件中生成所有事件的报告
selinux删除文件产生错误信息
这些错误会通过setroubleshoot-server倾听/var/log/audit/audit.log中的审核信息并将简短摘要发送到/var/log/messages
所有的报错信息在/var/log/audit/audit.log中,只会报错,不会告诉你如何解决