linux之selinux(内核级加强型火墙)

一.selinux是什么?
selinux(secure linux):内核级加强型火墙
二.selinux支持的三种模式
enforcing  ##强制开启,警告且不允许
permissive ##警告开启,警告且允许
disabled   ##关闭
三.如何切换
开启和关闭模式切换,需要重新启动
两种开启模式可以相互转换,不需要重启动
setenforce 0 ##警告
setenforce 1 ##警告并拒绝
四.selinux的影响
1.selinux对文件的影响:selinux会给与系统中的每个文件一个安全上下文(CONTEXT),同时给予每个程序一个CONTEXT,若此程序的安全上下文与文件的安全上下文不匹配,则文件不能被系统访问,若匹配,则可以访问,而文件的安全上下文,与此文件所在的目录有关
2.selinux对程序的影响:seliunx对程序的功能加了开关(sebool 0 1),并默认关闭,这使得程序的某些功能不能使用
五.selinux的基本使用
1.查看selinux的状态:
getenforce
开启状态:
enforcing:表示强制,警告&强制:拒绝
permissive:表示警告,可以访问,但有警告信息
关闭状态:
disabled
2.在开启状态下修改强制模式,警告模式:
setenforce 1        ##修改状态为强制模式
setenforce 0        ##修改状态为警告模式

3.做实验之前,因为ftp章节练习时,修改了配置文件,为了下面的实验不受影响,还原之前的设置。
--chmod 700 /homo/*
--rm -rf /etc/vsftpd/vsftpd.conf
--yum reinstall vsftpd

开始实验:
1.selinux模式设置成disabled


--touch /mnt/westosfile
--mv /mnt/westosfile /var/ftp/pub
--lftp 172.25.254.177
--ls                   ##可以看到westosfile


2.开启selinux
vim /etc/sysconfig/selinux


设置成enforcing         ##此时需要重启才能使配置生效


3.查看设置成强制模式对程序的影响
--touch /mnt/westosfile1
--mv /mnt/westosfile1 /var/ftp/pub
--lftp 172.25.254.177
--ls                   ##看不到westosfile1

--cd /var/ftp/pub
--ls


此时我们可以看见westosfile1的确存在!
4.查看设置成警告模式对程序的影响:
--setenforce 0         ##设置成警告模式
--getenforce           ##查看状态是否设置成警告模式


--lftp 172.25.254.177
--ls                   ##可以看到westosfile1

此时,查看/var/log/audit/audit.log文件,我们可以在此文件中看到在警告模式下selinux的警告日志
--cat /var/log/audit/audit.log

六.临时修改安全上下文
为什么会出现上述情况?这是因为安全上下文(context)的原因,因为selinux是开启的,所以它会对我们系统中的文件及目录都设置一个安全上下文,通常对于目录中的文件,其安全上下文的内容和所在目录的安全上下文相同,selinux允许访问安全上下文成功匹配的文件或目录,而对于安全上下文不匹配的文件或目录,我们是不能访问的。
在上面操作中,我们使用mv将/mnt/wesofile1 移动到/var/ftp/pub下,但mv操作并不能更改westosfile1的安全上下文,因此我们使用ftp登陆到匿名用户时,由于westosfile1的安全上下文与目录ftp的安全上下文不匹配,所以我们无法访问westosfile1,这就是在强制模式下,无法显示westosfile1的原因。

1.查看临时上下文:
--ls -Z   dir/file
--ls -Zd  dir


查看pub目录中文件的上下文,此时发现westosfile1的安全上下文文件与其他文件的安全上下文不相同:


将selinux变为强制模式:
--setenforce 1
--getenforce


--lftp 172.25.254.177
--ls                  
--cd pub      
--ls          ##此时无法显示westosfile1


2.临时修改安全上下文:
--chcon -t public_content_t file|dir    ##更改文件或目录的安全上下文为public_content_t
--chcon -t public_content_t file|dir -R ##若是目录,-R表示递归更改,包括目录本身


修改westosfile1的安全上下文:
此时,再匿名登陆就可以查看到westosfile1:
这种方法是临时修改。


举例:证明是临时修改!
在根目录下创建ftphome目录并在ftphome目录下创建三个子目录 (如果不创建会有500报错)


将匿名用户家目录修改为/ftphome/
--vim /etc/vsftpd/vsftpd.conf ##修改配置文件
--13 anon_root=/ftphome       ##匿名用户登陆的家目录修改为/ftphome

--systemcl restart vsftpd

查看ftphome的安全上下文:
--ls -Zd /ftphome/  ##查看ftphome本身的安全上下文
--ls -Z /ftphome/   ##查看ftphome目录内容的安全上下文


使用ftp登陆后,无法显示任何内容,这是因为此目录及他的子目录的安全上下文与ftp程序的的安全上下文不匹配:


修改此安全上下文:
--chcon -t public_content_t /ftphome/ -R   ##修改ftphome目录本身以及目录中文件的上下文


此时再登陆就可以看到/ftphome下的文件:


此时,我们先关闭(disabled)selinux再重启(reboot)电脑,再开启selinux(enforcing)再重启(reboot)电脑。发现安全上下文会恢复到未修改之前的状态,因此,上述更改安全上下文的方式是一种临时更改

七.永久修改安全上下文
--semanage fcontext -l ##查看永久上下文的设定


--semanage fcontext -a -t public_content_t '/ftphome(/.*)?' ##添加永久上下文
                           ##-a:add
                           ##-t:类型
                           ##(/.*)?表示ftphome目录下的所有内容
--restorecon -Rvvf /ftphome/ ##保存对永久上下文的更改
实验:
查看/ftphome的永久安全上下文设定,发现没有任何设定:


此时,对/ftphome以及其下的子目录进行永久安全上下文设定,将它的安全上下文设置为ftp程序可以匹配的安全上下文
保存此设置:


我们可以看到,父目录及以下的子目录的安全上下文都已经修改:


再查看,我们可以看到/ftphome的永久安全上下文设定:


八.selinux对于服务的影响
对服务的影响:加程序的功能开关
getsebool 用于显示布尔值,setsebool用于修改布尔值
getsebool 0 1 bool
getsebool -a | grep ftp
在开启selinux时,它会关闭服务的某些功能:

关于selinux对于服务的影响我们可以用以下例子加以说明:
--vim /etc/vsftpd/vsftpd.conf
--29匿名用户上传权限开启
--systemctl restart vsftpd

chgrp ftp /var/ftp/pub/
chmod 775 /var/ftp/pub/ ##修改权限,给ftp组写的权限

1.首先将selinux模式设置为警告模式:


2.在警告模式下,设置匿名用户可以上传文件:


3.此时再将selinux模式设置为强制模式:


完成后,我们可以看到在强制模式下,用户已经不能上传文件:


4.使用getsebool -a我们可以看到在强制模式下为什么不能上传文件的原因:
----gersebool -a | grep ftp


可以看到,允许匿名用户上传文件的参数ftpd_anon_write是关闭状态,因此即使改变了配置文件,但在selinux开启的情况下,我们依旧无法上传文件,所以开启ftpd_anon_write==on
--setsebool -P ftpd_anon_write on
--gersebool -a | grep ftp


“注意”:-P参数表示永久开启

此时我们依旧无法上传文件:


这是因为pub/目录的安全上下文对目录权限有限制:


此时我们再上传文件,就可以正常上传:


注:此处上传passwd报错553是因为之前已经将passwd上传过了,此时上传group可以正常上传

九.selinux的日志分析
1./var/log/audit/audit.log 此文件中存放seliunx的日志信息,此日志中会提示selinux的错误信息,但不会有解决方案
2.setroubleshoot-server.x86_64 此软件采集/var/log/audit/audit.log中的日志并进行分析,并提出解决方案,存入/var/log/messages中,若是不安装此软件,/var/log/messages就没有selinux的解决方案与日志存在,只要是selinux的问题,都会报错
清空日志:>/var/log/audit/audit.log
清空日志:>/var/log/messages
实验:
在警告模式下:
--touch /mnt/file
--mv /mnt/file /var/ftp
--lftp 172.25.254.188
--ls


看到在/var/log/audit/audit.log有警告信息生成


在/var/log/messages会有日志信息生成


并且在此日志中会提出针对此问题的解决方案:

rpm -qa | grep settroubleshoot ##查看提供解决方案的软件


yum remove setroubleshoot-server-3.2.17-2.el7.x86_64 ##卸载这个软件


清空日志:> /var/log/audit/audit.log
清空日志:> /var/log/messages

lftp 172.25.254.177
ls


cat /var/log/audit/audit.log  ##提供问题出在哪里


cat /var/log/messages ##只有日志,没有解决方案


yum install setroubleshoot-server -y  ##安装这个软件


清空日志:> /var/log/audit/audit.log
清空日志:> /var/log/messages
lftp 172.25.254.177
ls


cat /var/log/audit/audit.log           ##提供问题出在哪里


cat /var/log/messages ##有日志,且提供解决方案

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值