欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

selinux内核级防火墙的初级管理

程序员文章站 2022-04-26 15:41:03
...

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内核级防火墙的初级管理

selinux内核级防火墙的初级管理
在文件里面修改了selinux的状态,保存退出后,如果没有重启,再次查看会发现状态并没有改变。

setenforce 0    ##强制状态(enforcing)转化为警告状态(permissive)
setenforce 1    ##警告状态转化为强制状态
  1. 警告状态下,可以查看安全上下文不一致的文件 

selinux内核级防火墙的初级管理

可见新建的westosfile和其他文件的安全上下文是不匹配的,我们来看看是否可以查看

selinux内核级防火墙的初级管理

可见,在警告状态下,是可以查看标签不匹配的文件。

       2.强制状态下,不能查看安全上下文不一致的文件

selinux内核级防火墙的初级管理

警告状态转化成了强制状态,可见新建的redhatfile和westosfile与其他文件的安全上下文标签是不匹配的,我们来看看是否能够查看

selinux内核级防火墙的初级管理

可见,与其他文件安全上下文标签不匹配的redhatfile和westosfile是不能被查看的,那么想查看怎么办呢?

答:通过改变某一文件的安全上下文,该文件就可以在强制状态下被查看

chcon -t public_content_t westosfile       ##修改文件的安全上下文

selinux内核级防火墙的初级管理

这里我改变了westosfile的安全上下文,测试一下是否能被查看

selinux内核级防火墙的初级管理

可见,更改过的westosfile的安全上下文,就可以查看到了。但没有改变的redhatfile还是不能查看。

3.如何更改文件安全上下文

 

mkdir -p /ftpdir/pub          ##创建发布目录
vim /etc/vsftpd/vsftpd.conf   ##更改默认发布目录

1.准备:创建爱哪一个发布目录,我们在配置文件修改后匿名用户登陆后,进入的目录。

selinux内核级防火墙的初级管理

selinux内核级防火墙的初级管理

创建发布目录,修改配置文件,并设置匿名用户的家目录。

2.临时修改安全上下文

我们创建的发布目录与默认发布目录/var/ftp/pub的安全上下文是不一致的,为此我们可以临时的修改发布目录的安全上下文

chcon -t public_content_t /ftpdir/ -R     ##临时设定该文件的上下文

(1)将当前的强制状态(enforcing)改为关闭 状态(disabled),然后重启

selinux内核级防火墙的初级管理

selinux内核级防火墙的初级管理

(2) 在关闭状态下,我们发现该目录的安全上下文没有改变,我们再次设置内核级防火墙的状态为强制状态(enforcing),然后重启。

selinux内核级防火墙的初级管理

selinux内核级防火墙的初级管理

 在强制状态下,我们查看该目录的安全上下文,发现安全上下文恢复

selinux内核级防火墙的初级管理

可见,安全上下文改变了。

3.永久更改安全上下文

semanage fcontext -l | grep /var/ftp/      ##查看永久安全标签的设置

selinux内核级防火墙的初级管理

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】命令进行文件的更新,使所有的更改生效。

selinux内核级防火墙的初级管理

4.强制状态下的上传权限设置

1.关闭状态下文件可上传

selinux内核级防火墙的初级管理

selinux内核级防火墙的初级管理

可见,处于关闭状态下,依旧可以上传文件。

2.警告状态下文件的上传

selinux内核级防火墙的初级管理

切换成警告状态

selinux内核级防火墙的初级管理

可见,警告i状态下也可可以上传文件。

3.强制状态下上传文件

getenforce                         ##查看防火墙状态
若为enforcing则不用修改,若为permissive则需要执行以下操作
setenforce 1                       ##内核级防火墙设置为强制状态,不用重启

selinux内核级防火墙的初级管理

selinux内核级防火墙的初级管理

可见,在开启状态下,不能上传文件,即使修改了权限,依旧不能上传文件。此时想上传该怎么办呢?

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             ##修改用户组

selinux内核级防火墙的初级管理 

selinux内核级防火墙的初级管理

开启了功能开关。

selinux内核级防火墙的初级管理

文件依旧不能上传

      2.将内核级防火墙中的功能开关打开,我们会发现还是不能上传文件,在修改好文件的权限和用户组后,还需要将安全上下文改为可读写,这样就可以上传文件了。

chcon -t public_content_rw_t /var/ftp/pub/    ##修改安全上下文,使它变为可写
ls -Zd /var/ftp/pub                           ##查看该目录的安全上下文,看更改是否生效

selinux内核级防火墙的初级管理

将/var/ftp/pub改编成了可写,我们来看看是否可以上传了

selinux内核级防火墙的初级管理

可见此时,上传。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

selinux内核级防火墙的初级管理

selinux内核级防火墙的初级管理

新建的mntfile文件和其他文件安全上下文标签不匹配,不能查看到。

查看日志文件,我们会发现有错误提示,并且提供了解决问题的方法。

selinux内核级防火墙的初级管理

selinux内核级防火墙的初级管理

最后一行为解决问题的建议。

selinux内核级防火墙的初级管理

selinux内核级防火墙的初级管理

2. 现象2:卸载setroubleshoot软件,观察是否还会有问题解决建议

注意:一定要保存好该软件的软件安装包或者是有yum仓库。

selinux内核级防火墙的初级管理

查看selinux相关的软件。找到提供解决问题的软件。

selinux内核级防火墙的初级管理

卸载后,观察还能否提出问题的解决方案。

再次移动安全上下文不一致的文件到/var/ftp/pub目录下,同时清空之前的日志信息,再次登录lftp查看 

selinux内核级防火墙的初级管理

selinux内核级防火墙的初级管理

可见mntfile被过滤掉了,并没有显示。

查看日志文件,我们发现没有问题解答建议

selinux内核级防火墙的初级管理

因为卸载了,所以这里不会给解决办法。