selinux
内核级加强型火墙selinux
一.selinux的功能
1.selinux对文件的影响——context 安全上下文
会给每一个文件都加载一个标签,每一个程序也会有安全上下文,程序需要和文件相匹配,才能被读取,如果不匹配,在读取这个文件时,会被seliux拒绝。它管的是这个程序可以查看什么文件。
2.seliux对程序的影响——sebool
给程序功能加个开关sebool,sebool值决定程序功能的状态,ftp默认是允许本地用户上传,但是selinux会将这些不安全的功能默认关闭。
二.selinux的状态
1.disabled 关闭状态
2.enforcing 开启 ,强制状态,会拒绝并警告
3.permissive 开启,警告状态,会警告但是不会拒绝,在/var/log/messages中可以查看到警告信息
三.selinux状态查看修改
1.getenforce ----查看seliux状态
2.setenforce 0 ---将selinux从强制改为警告状态
3.setenforce 1 ---将selinux从警告改为强制状态(0与1命令进行切换不需要重启)
开启与关闭状态更改时必须要重启系统才能读取
3.vim /etc/sysconfig/selinux ---编辑seliux配置文件,可修改selinux的状态
修改后必须reboot重启才能生效
实验一:seliux状态的影响
环境配置:
将之前在虚拟机中的设置还原
rm -fr /etc/vsftpd/vsftpd.conf
yum reinstall vsftpd -y ---重新安装vsftpd软件
chmod 700 /home/student/ ---将/home/student/目录权限还原
永久开启vsftpd服务,并永久添加ftp服务
systemctl start vsftpd
systemctl enable vsftpd
systemctl start firewalld
firewall-cmd --permanent --add-service=ftp ---永久添加ftp服务,需要火墙开启状态
firewall-cmd --reload ---重新加载火墙服务,但凡在火墙中永久添加服务的,但需要reload操作
yum install lftp ---安装lftp软件,方便后续实验
实验步骤:
1.首先查看selinux状态,处于关闭状态
2.vim /etc/sysconfig/selinux ---编辑文件,修改selinux状态为enforcing(关闭)
3.reboot重启使修改生效
4.getenforce ---再次查看selinux状态
5.touch /mnt/dai1file ---先在mnt下创建文件westosfile1,
mv /mnt/westosfile1 /var/ftp/pub ---将文件移动到匿名用户lftp连接家目录中
6.然后lftp 172.25.254.162 --> ls 如果是强制状态就看不见westosfile1,有警告
cat /var/log/messages ---查看日志,存在警告信息
7.如果是警告状态就可以看见westosfile1,有警告.
cat /var/log/messages ---查看日志,有警告信息
四.selinux对文件的影响
1)chcon临时更改安全上下文
(但是这是暂时性的,更改完后连续更改getenforce的值重启,安全上下文会变回去)
实验二:
环境:selinux处于开启状态
1.更改用户家目录 anon_root=/home/ftphome (在/etc/vsftpd/vsftpd.conf下更改,此目录需要先新建)
2.lftp 172.25.254.162 ---匿名用户连接,ls进行检测,查看不到/home/ftphome/下的文件
3.ls -Zd /home/ftphome/ ---Z表示查看目录安全上下文
4.chcon -t public_content_t /home/ftphome/ -R ---参数-R表示递归,临时更改用户上下文
5.ls -Zd /home/ftphome/ ---查看目录安全上下文
6.lftp 172.25.254.162 ---匿名连接ls进行查看,可以看到目录下的文件
7.vim /etc/sysconfig/selinux ---编辑selinux配置文件
SELINUX=disabled ---将状态修改为disabled
reboot
8.vim /etc/sysconfig/selinux/ ---编辑selinux配置文件
SELINUX=enforcing ---将状态修改为enforcing
reboot
9.ls -Zd /ftphome/ ---查看目录的安全上下文,变更为修改之前,所以chcon只能临时更改安全上下文
综上所述:chcon命令可以也只能临时更改安全上下文
2)永久更改安全上下文(在内核上更改)
1.semanage fcontext -l | grep /var/ftp ---查看内核里/var/ftp的安全上下文设定,默认加public_content_t
2.semanage fcontext -l | grep /ftphome ---查看内核里/home/ftphome的安全上下文设定,默认加public_content_t
3.semanage fcontext -a -t public_content_t /ftphome(/.*)"" class="has" height="43" src="https://img-blog.csdnimg.cn/20181107151736455.png" width="868" />
4.semanage fcontext -l | grep /home/ftphome ---查看内核里/home/ftphome的安全上下文设定,查看是否添加成功
五.selinux对程序的影响
实验三:匿名用户上传
环境:
1.先把用户家目录修改一行删除
2.把匿名用户上传权限打开
3.修改匿名用户家目录的拥有组及权限
实验步骤:
1.警告状态在程序开关开启时,可以进行上传
首先getsebool -a | grep ftp ---查看ftp的程序开关
setsebool -P ftpd_anon_write on ---打开ftp的程序开关,-P表示永久
setenforce 0 ---切换到警告状态
lftp 172.25.254.162 ---匿名连接172.25.254.162
cd pub
quit
可以上传文件/etc/passwd(如果已经存在,上传其他文件)
2.强制状态在程序状态开启状态不能上传
setenforce 1 ---切换到强制状态
lftp 172.25.254.162
cd pub
此时不能上传文件
quit
getsebool -a | grep ftp ---查看ftp的程序开关
3.强制状态在程序开关开启时,需要安全上下文中添加读写权限才能上传
ls -Zd /var/ftp/pub/ ---查看ftp匿名登陆家目录的安全上下文
getenforce ---查看内核级火墙状态
chcon -t public_content_rw_t /var/ftp/pub/ ---临时添加安全上下文中的读写权限
ls -Zd /var/ftp/pub/ ---再次查看ftp匿名登陆家目录的安全上下文,读写权限添加成功
lftp 172.25.254.162
cd pub
此时能够上传文件
六.排错方法
/var/log/sudit/audit.log 这个文件记录了所有selinux的报错信息,但是不提供解决方案
/var/log/messages日志文件中会提供解决方案,但是不一定会记录报错信息
实验四:
1.清空日志文件
> /var/log/audit/audit.log ---清空
> /var/log/messages ---清空日志文件
2.制造错误
在selinux强制状态下
touch /mnt/file
mv /mnt/file /var/ftp/
lftp 172.25.254.162
ls
查看不到文件file
3.查看日志
cat /var/log/sudit/audit.log ---可以查看到报错信息,但是没有解决方案
cat /var/log/messages ---可以查看到解决方案
#解决方案来源实验:
yum remove setroubleshoot-server.x86_64 -y ---卸载提供日志文件中解决方案的软件
lftp 172.25.254.162
ls
查看不到文件file
cat /var/log/sudit/audit.log ---可以查看到报错信息,但是没有解决方案
cat /var/log/messages ---此时没有信息
相关阅读
SELINUX一款为了提高系统安全性的软件,但是会和好多服务都冲突,非常麻烦,大家都选择关闭!查看selinux状态:# getenforce Disabled
一、前言安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。SELinux