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重启才能生效

selinux_第1张图片

 

实验一: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操作

selinux_第2张图片

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,有警告

selinux_第3张图片

cat /var/log/messages           ---查看日志,存在警告信息


7.如果是警告状态就可以看见westosfile1,有警告.

selinux_第4张图片

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进行查看,可以看到目录下的文件

selinux_第5张图片

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

selinux_第6张图片

2.semanage fcontext -l | grep /ftphome    ---查看内核里/home/ftphome的安全上下文设定,默认加public_content_t

3.semanage fcontext -a -t public_content_t /ftphome(/.*)?  ---永久更改安全上下文为public_content-t,(/.*)?表示这个目录下的所有文件

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(如果已经存在,上传其他文件)

selinux_第7张图片

2.强制状态在程序状态开启状态不能上传

setenforce 1                 ---切换到强制状态


lftp 172.25.254.162
cd pub
此时不能上传文件
quit

selinux_第8张图片

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

selinux_第9张图片

此时能够上传文件

 

六.排错方法

/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  ---可以查看到报错信息,但是没有解决方案

selinux_第10张图片
cat /var/log/messages   ---可以查看到解决方案

 

#解决方案来源实验:

yum remove setroubleshoot-server.x86_64 -y          ---卸载提供日志文件中解决方案的软件
lftp 172.25.254.162
ls
查看不到文件file

cat /var/log/sudit/audit.log  ---可以查看到报错信息,但是没有解决方案

selinux_第11张图片
cat /var/log/messages   ---此时没有信息

 

 

你可能感兴趣的:(selinux)