Linux中selinux 内核级加强型火墙管理

 1.selinux功能

selinux开启会给系统中的每一个文件及每一个程序加载安全上下文,特定安全上下文的程序只能访问特定安全上下文的文件。当selinux开启会对服务本身相对不安全的功能加载开关sebool并且设定开关为关闭状态以保证服务安全性。当需要此功能时需要超级用户手动调节。selinux是保护系统安全性的插件。
 

1.1 seliux关闭状态 

 安装vsftpd服务,编辑vsftp服务的配置文件,允许匿名用户访问,在/mnt中建立文件,将该文件移动到/var/ftp下后,匿名用户访问ftp可以访问到该文件;编辑vsftp服务的配置文件,允许匿名用户上传文件,匿名用户访问ftp可以上传文件

dnf install -y lftp
dnf install -y vsftpd
vim /etc/vsftpd/vsftpd.conf
 开启匿名登陆和上传
systemctl enable --now vsftpd

touch /mnt/testfile
ls -Z /mnt/testfile
pa auxZ | grep vsftpd
mv /mnt/testfile /var/ftp


chgrp ftp /var/ftp/pub/
chmod 775 /var/ftp/pub/


lftp 172.25.254.128
可以登陆,查看到testfile并且在pub/目录可以上传

 编辑/etc/sysconfig/selinux,开启selinux,重启系统使设定生效,在/mnt中建立文件,将该文件移动到/var/ftp下后,匿名用户访问ftp不能访问到该文件;匿名用户可以通过设置后仍然不能上传文件

 查看vsftpd服务的默认共享目录及该服务程序的安全上下文时,显示selinux为其加载的标签

 2.selinux状态

2.1 查看selinux状态

getenforce

类型解释
Disabled关闭
enforcing强制(有警告,不允许执行)
permissive警告(有警告,允许执行)

我们可以通过编辑/etc/selinux/config这一配置文件(也可以编辑/etc/sysconfig/selinux,该文件是/etc/selinux/config的一个软链接)来更改selinux的状态:

 selinux的状态可以通过getenforce查看,当selinux开启后可以通过setenforce 0—警告和setenforce 1—强制进行强制和警告状态的转换。当selinux为enforcing强制状态时,不符合安全条件的操作一定不被允许,并且会收到警告信息;当selinux为permissive警告状态时,不符合安全条件的操作被允许,并且会收到警告信息,我们可以在selinux日志位置/var/log/audit/audit.log处查看相应的警告信息。

 enforcing不允许执行:

getenforce
#Enforcing

> /var/log/audit/audit.log 
cat /var/log/audit/audit.log
lftp 172.25.254.200   #看不到testfile2

cat /var/log/audit/audit.log 
#path="/testfile2"  permissive=0

 permissive有警告但是允许执行:

setenforce 0
getenforce
#Permissive

> /var/log/audit/audit.log
cat /var/log/audit/audit.log

lftp 172.25.254.128  #可以看到testfile2

cat /var/log/audit/audit.log
#path="/testfile2 permissive=1

 2.3 selinux的临时设定

 setenforce 0|1

0表示警告模式 
1表示强制模式

2.4 selinux开关 

vim /etc/sysconfig/selinux
SELINUX=disabled /enforcing/permissive

reboot 
#重新设定都要重启系统

3.安全上下文

3.1 安全上下文的临时更改

chcon -t 标签 文件|目录:修改文件/目录的安全上下文
chcon -Rt 标签 目录:修改目录及目录中的所有子文件的安全上下文

 chcon更改安全上下文标签的操作是临时设定,重启系统后(selinux会重置其安全上下文)会复原

 

 3.2 永久更改目录或文件的安全上下文

新建目录,修改内核安全上下文列表即使用semanage指定目录及目录中内容的安全上下文标签(’/目录(/.*)?'必须使用单引号因为双引号无法转译?),修改后ls -Z查看该目录的安全上下文标签,设定不会立即生效,需要使用restorecon刷新信息后才生效

 4.sebool

当selinux开启时内核会对程序的功能加载开关,并设定此开关的状态为关闭,当需要此功能时需要手动开启功能开关,此开关叫做sebool。

getsebool -a | grep ftp 				##查看ftp的功能开关 
setsebool ftpd_anon_write=1|on			##表示开启此匿名用户写的功能
setsebool -P ftpd_anon_write=1|on 		##表示永久开启此匿名用户写的功能

5.Seport 

当selinux开启时内核会限制程序、服务使用端口号的范围,我们可以通过以下操作修改seport。

1.selinux开启状态下,安装并开启sshd服务,编辑sshd服务的配置文件,修改sshd服务的默认端口为2222,重启服务失败,这是因为系统内核防火墙selinux会限制http服务所使用的端口号范围,将selinux设置为警告模式可以重启服务

2. 另一种解决方案是在内核安全上下文列表中为http服务添加8888端口号,添加完成后,将selinux设置为强制模式也可以成功重启服务

6.setrouble排错

setroubleshoot软件可以帮助我们采集selinux日志/var/log/audit/audit.log中的警告信息并分析得到解决方案存放到/var/log/messages中(先采集再分析,即需要先查看/var/log/audit/audit.log再查看/var/log/messages)。
 

查看/var/log/messages,可以得到相应解决方案 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值