selinux内核级防火墙的初级管理
1.什么是Selinux?
- Selinux,内核级加强型防火墙,是基于内核开发出来的一种安全机制,它有力的保障了系统的安全
- SElinux是强制访问控制(MAC)安全系统,是linux历史上最杰出的新安全系统。
- 对于linux安全模块来说,SElinux的功能是最全面的,测试也是最充分的,这是一种基于内核的安全系统。
- 它的作用主要有两方面,一方面是在服务上添加安全上下文(标签),安全上下文匹配才能通过,不匹配,则会被过滤。
- 另一方面,则是在功能上进行限制,也就是功能开关处于关闭状态,如果要使用某些功能,就需要打开功能开关。
2.如何管理selinux级别?
1)Selinux的三个模式
Enforcing 强制(强制模式)— SELinux 策略强制执行,基于 SELinux 策略规则授予或拒绝主体对目标的访问
Permissive 宽容(警告模式)— SELinux 策略不强制执行,不实际拒绝访问,但会有拒绝信息写入日志
Disabled 禁用(关闭模式)— 完全禁用SELinux
2)selinux开启或者关闭
在配置文件"/etc/sysconfig/selinux"下将"SELINUX=enforcing"改为"SELINUX=disabled",因为SElinux是基于内核的安全系统,所以在设置完成之后需要重启内核,即需要重启电脑才可以生效。
vim /etc/sysconfig/selinux
selinux=disabled ##关闭状态
selinux=Enforcing ##强制状态
selinux=Permissive ##警告状态
getenforce ##查看状态
setenforce 0|1 ##更改selinux运行级别
注意:当selinux开启时, "setenforce"可以设置SElinux的状态,但是只能设置0和1两种,即警告模式或者强制模式。
3)selinux不同状态是否可以查看标签不同的文件
getenforce ##查看内核级防火墙的状态
vim /etc/sysconfig/selinux ##配置文件,用于修改防火墙状态
##强制状态和关闭状态的相互转化,需要在配置文件中修改,同时reboot重启才能生效
在文件里面修改了selinux的状态,保存退出后,如果没有重启,再次查看会发现状态并没有改变。
setenforce 0 ##强制状态(enforcing)转化为警告状态(permissive)
setenforce 1 ##警告状态转化为强制状态
- 警告状态下,可以查看安全上下文不一致的文件
可见新建的westosfile和其他文件的安全上下文是不匹配的,我们来看看是否可以查看
可见,在警告状态下,是可以查看标签不匹配的文件。
2.强制状态下,不能查看安全上下文不一致的文件
警告状态转化成了强制状态,可见新建的redhatfile和westosfile与其他文件的安全上下文标签是不匹配的,我们来看看是否能够查看
可见,与其他文件安全上下文标签不匹配的redhatfile和westosfile是不能被查看的,那么想查看怎么办呢?
答:通过改变某一文件的安全上下文,该文件就可以在强制状态下被查看
chcon -t public_content_t westosfile ##修改文件的安全上下文
这里我改变了westosfile的安全上下文,测试一下是否能被查看
可见,更改过的westosfile的安全上下文,就可以查看到了。但没有改变的redhatfile还是不能查看。
3.如何更改文件安全上下文
mkdir -p /ftpdir/pub ##创建发布目录
vim /etc/vsftpd/vsftpd.conf ##更改默认发布目录
1.准备:创建爱哪一个发布目录,我们在配置文件修改后匿名用户登陆后,进入的目录。
创建发布目录,修改配置文件,并设置匿名用户的家目录。
2.临时修改安全上下文
我们创建的发布目录与默认发布目录/var/ftp/pub的安全上下文是不一致的,为此我们可以临时的修改发布目录的安全上下文
chcon -t public_content_t /ftpdir/ -R ##临时设定该文件的上下文
(1)将当前的强制状态(enforcing)改为关闭 状态(disabled),然后重启
(2) 在关闭状态下,我们发现该目录的安全上下文没有改变,我们再次设置内核级防火墙的状态为强制状态(enforcing),然后重启。
在强制状态下,我们查看该目录的安全上下文,发现安全上下文恢复
可见,安全上下文改变了。
3.永久更改安全上下文
semanage fcontext -l | grep /var/ftp/ ##查看永久安全标签的设置
ls -Zd /ftpdir ##查看该目录的安全上下文
ls -Z /ftpdir/* ##查看该目录下文件的安全上下文
semanage fcontext -a -t public_content_t '/ftpdir(/.*)?' ##对该目录及目录下的所有文件设置永久上下文
semanage fcontext -l | grep /ftpdir ##查看设置是否生效
restorecon -RvvF /ftpdir ##刷新所有文件,使更改生效
通过查看/var/ftp目录安全上下文的永久设置,我们可以通过【semanage】命令进行永久安全上下文的设置,在我们设置,该目录下的所有子文件可能还没有改变,我们需要通过【restorecon】命令进行文件的更新,使所有的更改生效。
4.强制状态下的上传权限设置
1.关闭状态下文件可上传
可见,处于关闭状态下,依旧可以上传文件。
2.警告状态下文件的上传
切换成警告状态
可见,警告i状态下也可可以上传文件。
3.强制状态下上传文件
getenforce ##查看防火墙状态
若为enforcing则不用修改,若为permissive则需要执行以下操作
setenforce 1 ##内核级防火墙设置为强制状态,不用重启
可见,在开启状态下,不能上传文件,即使修改了权限,依旧不能上传文件。此时想上传该怎么办呢?
1)解决办法
- 内核级防火墙强制状态下,功能开关都是关闭的,我们需要打开功能开关,让配置文件允许的功能可以使用。由于在准备工作中已经将配置文件中的功能已经开启了,这里不再过多解释。
getsebool -a | grep ftp ##查看关于ftp服务的开关
setsebool -P ftp_home_dir on ##开启功能
setsebool -P ftpd_anon_write 1 ##开启上传功能
vim /etc/vsftpd/vsftpd.conf ##在配置文件中打开上传功能
anon_upload_write=YES
systemctl restart vsftpd ##重启服务
chmod 775 /var/ftp/pub ##将权限调大(出现553权限过小时,进行的操作)
chgrp ftp /var/ftp/pub ##修改用户组
开启了功能开关。
文件依旧不能上传
2.将内核级防火墙中的功能开关打开,我们会发现还是不能上传文件,在修改好文件的权限和用户组后,还需要将安全上下文改为可读写,这样就可以上传文件了。
chcon -t public_content_rw_t /var/ftp/pub/ ##修改安全上下文,使它变为可写
ls -Zd /var/ftp/pub ##查看该目录的安全上下文,看更改是否生效
将/var/ftp/pub改编成了可写,我们来看看是否可以上传了
可见此时,上传。etc,passwd成功了。
5.介绍一个解决问题的工具(settroubleshoot)
1. 现象1:由于不同位置文件的标签不同,通过移动文件到/var/ftp/pub中,标签不一致,内核防火墙不允许通过,产生问题,但系统中存在一个可以可供解决问题的软件setroubleshoot。
> /var/log/messages
> /var/log/audit/audit.log ##清空日志信息
cd /mnt
mv mntfile /var/ftp/pub
新建的mntfile文件和其他文件安全上下文标签不匹配,不能查看到。
查看日志文件,我们会发现有错误提示,并且提供了解决问题的方法。
最后一行为解决问题的建议。
2. 现象2:卸载setroubleshoot软件,观察是否还会有问题解决建议
注意:一定要保存好该软件的软件安装包或者是有yum仓库。
查看selinux相关的软件。找到提供解决问题的软件。
卸载后,观察还能否提出问题的解决方案。
再次移动安全上下文不一致的文件到/var/ftp/pub目录下,同时清空之前的日志信息,再次登录lftp查看
可见mntfile被过滤掉了,并没有显示。
查看日志文件,我们发现没有问题解答建议
因为卸载了,所以这里不会给解决办法。
上一篇: 淘宝商品页爬取
下一篇: spring Security安全框架