1.selinux
内核级加强型防火墙
1.针对文件,会对系统中每个文件添加安全上上下文(context)
2.针对进程,会对系统中的每个进程添加安全上下文(context)
3.会在系统服务中设定sebool开关
4.当进程安全上下文和文件的安全上下文不匹配时,那么进程无法访问此文件
5.sebool会限制的不安全功能,如果需要使用此功能,必须调整sebool值
2.管理selinux
selinux的开关
vim /etc/sysconfig/selinux
SELINUX=enforcing ##selinux开启,级别为强制
SELINUX=permissive ##selinux开启,级别为警告
SELINUX=disabled ##selinux关闭
setenforce 0|1 ##更改selinux当前的级别0警告,1强制
getenforce ##查看当前selinux的状态
注意当selinux从开到关,或者从关到开必须==reboot系统,而0 1之间的切换不需要reboot。
3.selinux对于安全上下文的设定
临时更改适用于更该文件
chcon -t 安全上下文 文件
chcon -t public_content_t /var/ftp/file
永久更改文件安全上下文
semanage fcontext -l
semanage fcontext -a -t public_content_t /westos
restorecon -Rvvf /westos/
实验1:
selinux给每个文件加标签,标签匹配才能被访问,每个程序安全上下文要匹配
在开启selinux和vsftpd的情况下,建立/mnt/westos1,然后将/mnt/westos1/,移动到/var/ftp/下。
用lftp匿名登陆172.25.254.115 ,ls查看,发现不能看到westos1
而实际/var/ftp/是有westos1文件的
ls -Z /var/ftp/
发现 /var/ftp/下pub和westos1的安全上下文不同
此时setenforce 0改变selinux的级别为permissive警告级别,再次lftp 172.25.254.115 发现可以看到westos1
再次setenforce 1改为强制模式,就不能看到westos1了
更改westos1的安全上下文跟pub一样
再次lftp 172.25.254.115,ls发现可以看到westos1了。
实验2:
再打开selinux的情况下,在ftp服务器上也不能上传文件
发现是enforcing的状态
不能上传。
切换状态到disabled
发现可以上传
以上就是安selinux对文件以及功能的影响
以及临时解决selinux的问题
如何永久解决安全上下文的问题
semanage fcontext -l | grep /var/ftp 查看系统默认发布目录设置的标签
自己创建一个/westos 并且在里面创建文件file{1…3}
semanage fcontext -l | grep /westos 发现创建的/westos并没有这个标签
使用semanage fcontext -a -t public_content_t '/westos(/.)?’ 将自己建立的目录加上标签/westos(/.)?意思为/westos目录以及目录本身
semanage fcontext -l | grep /westos可以看到自己创建的/westos标签也和/var/ftp一样了
ls -Zd /westos
restorecon -RvvF /westos 刷新
成功永久设置/westos安全上下文和/var/ftp一致
selinux设置为enforcing仍然可以登陆ftp服务器
使用getsebool -a | grep ftp查看所有ftp的功能的状态
setsebool -P ftpd_anon_write on 让匿名用户可以上传
在没更改到on之前,可以看到匿名用户是不能上传的
执行setsebool -P ftpd_anon_write on 之后再次lftp 172.25.254.115发现匿名用户可以上传文件。
执行chcon -t public_content_rw_t /var/ftp/pub让匿名用户具有读写这个目录的权力(必须设置)
enforcing状态下本地用户家目录上传和删除文件
setsebool -P ftp_home_dir on
与selinux相关的两个日志
/var/log/messages 系统日志,提供解决方案
/var/audit/audit.log为selinux真正的日志,不提供解决方案
yum install selinux
yum install setroubleshoot-server.x86_64