selinux

一、selinux功能

1、selinux:内核级加强型防火墙,是保护系统安全性的一个插件
2、selinux功能: 当selinux开启会给系统中的每一个文件及每一个程序加载安全上下文,特定安全上下文的程序只能访问特定安全上下文的文件(限定系统中的每一个文件只能被特定程序访问,否则会访问失败),进一步加强了系统中的安全性,当selinux开启会对服务本身相对不安全的功能加载开关sebool并且设定开关为关闭状态以保证服务安全性
注意:当需要此功能时需要超级用户手动调节

3、实验观察selinux的功能:

实验环境:rhel8主机,将ftp的所有设定改回之前默认的(删除配置文件/etc/vsftpd/,然后重新安装ftp服务:dnf reinstall vsftpd -y),并且修改ftp服务的配置文件,具体修改内容如下:
在这里插入图片描述
1、seliux关闭状态下:
在/mnt/中建立文件,文件安全上下文为空,文件被移动到ftp默认发布目录中,可以被访问,ftp程序安全上下文为空,用户可以上传文件(-Z:查看安全上下文)
在这里插入图片描述
2、打开selinux:
(1)、vim /etc/sysconfig/selinux
在这里插入图片描述
(2)、reboot重启虚拟机,在重启过程中,可以看到selinux在给系统中的文件和程序加载一个标签,标签即为安全上下文,标签的作用是:特定文件的标签只能被特定程序的标签访问,如果标签不匹配,则访问会被拒绝(比如护照,出国时每个人都有一个护照,但是该护照并不能让你去任何国家,只能去你持有的护照所指的国家,持有哪个国家的护照就只能去哪个国家)

在这里插入图片描述

(3)、当selinux打开时:可以看到我们建立的文件以及程序的安全上下文,可以看到在/mnt下建立的文件weiwei的安全上下文为mnt_t,而ftp服务的安全上下文为ftpd_t,此时再登录ftp服务时是不能够看到weiwei文件的,因为特定程序的安全上下文只能访问匹配的安全上下文文件,否则会被拒绝

在这里插入图片描述
但是在rhel8中本地用户的上传和删除是不受影响的
在这里插入图片描述那就以匿名用户的上传和删除为例:默认情况下(selinux关闭时),当匿名用户写的功能开启并且修改了权限后,是可以给/pub目录里边写文件的,但是当selinux开启后,写功能失败,并且报错553,表示文件系统权限限制,这是因为selinux开启后,除了给文件和程序加载安全上下文以外,还会给程序的功能上添加一个开关(比如微信朋友圈,可以自己设定开或关),当selinux开启后,会给ftp程序的匿名用户写的功能加载一个开关,可以看到该开关时关闭状态(图三)。而在selinux关闭时,这些开关是没有的(图四)

图一
在这里插入图片描述
图二
在这里插入图片描述
图三:selinux开启时给ftp程序的功能加载的开关如下:
在这里插入图片描述
图四
在这里插入图片描述

二、selinux状态

getenforce 	#查看selinux状态
 
状态类型:
disabled 	#关闭
enforcing 	#强制
permissive 	#警告
setenforce 0|1 	#0表示警告模式 1表示强制模式(该设置为临时设置)

selinux开关:
vim /etc/sysconfig/selinux	#修改selinux的配置文件

SELINUX=[selinux的状态]

reboot 		#每次修改都需要重启系统

在这里插入图片描述
区分强制状态和警告状态:
强制状态:看不到想要看到的内容,而且可以在日志中看到ftp的警告,permissive=0表示权限为0

在这里插入图片描述
警告状态:警告但可以看到内容,此时permissive=1表示允许查看
在这里插入图片描述

三、安全上下文

解释:安全上下文使得特定的安全上下文文件只能被特定的安全上下文程序访问

1.临时更改安全上下文
chcon -t 安全上下文 文件
chcon -R -t 安全上下文 目录
例如:chcon -t public_content_t /var/ftp/weiwei
更改完后,访问服务器会发现此文件可被访问成功

在这里插入图片描述

2.永久更改目录或文件的安全上下文
1、mkdir /ftpuserdir/weidir		#建立目录
2、设定westos用户登陆ftp服务时默认家目录为/ftpuserdir(修改ftp配置文件)
3、当用westos用户登陆ftp时/ftpuserdir中的内容无法访问,因为selinux安全上下文不匹配
4、semanage fcontent -l | grep /ftpuserdir 	#内核安全上下文列表中无信息
   semanage fcontent -a -t public_content_t /ftpuserdir'(/.*)?'	
#指定目录以及目录里面内容的安全上下文
 其中(/.*)? 表示目录中将要出现的内容的安全上下文也要更改
5、可以看到第四步的命令只添加列表信息,当前不生效
6、restorecon -RvvF /ftpuserdir/ 	
   #刷新文件安全上下文,完成后可以看到安全上下文全部修改,其中R表示递归,vv显示非常详细的信息
7、此时再次登录可以看到家目录里的内容

在这里插入图片描述

四、sebool

SEBOOL:selinux对服务功能能添加的开关
getsebool -a | grep ftp 		#查看ftp的功能开关
setsebool -P ftpd_anon_write=1|on	#表示开启此匿名用户写的功能,-P表示永久生效
setsebool -P ftpd_anon_write=0|off 	#表示关闭此匿名用户写的功能

实验过程:

在selinux强制状态下:
1、开启匿名用户的上传功能
2、给pub/目录满权限,任何人可以上传文件
3、匿名用户上传文件失败,报错553,表示权限过小
4、将selinux修改为警告状态时
5、匿名用户上传成功
以上操作表明,文件上传能否成功,主要是selinux的作用
在这里插入图片描述

将pub/目录的安全上下文的属性修改为能够读和写,进一步排除安全上下文对于写的限制,此时在selinux强制状态下,上传文件依然失败

在这里插入图片描述现在本地文件系统已经允许写,并且文件的安全上下文也已经允许写操作,那为什么还是上传失败呢???这是因为系统中有一个非常重要的sebool,当selinux服务开启后,会给服务上类似不安全的功能加载一个开关,并且开关为关,bool是一种赋值方式,只有两个值(0/1,on/off),具体命令如下图:

在这里插入图片描述
打开开关后,即使selinux在强制状态下,匿名用户依然可以上传文件

在这里插入图片描述

五.setrouble

setrouble:是一个软件,用来对selinux的日志进行分析,并且提供解决方案

实验过程:

1、dnf install setroubleshoot-server-3.3.19-1.el8.x86_64 -y
安装setrouble,该服务默认是安装过的
在这里插入图片描述
2、创建文件/mnt/haha,并且将该文件移动到/var/ftp目录下,匿名用户登录ftp服务时看不到该文件,查找日志/var/log/audit/audit.log只有错误信息,但是并没有告诉我们怎么排错
在这里插入图片描述
3、sealert -a /var/log/audit/audit.log #分析日志并提供解决方案

在这里插入图片描述

4、输入提示的排错命令后,再次登录ftp服务可以看到刚才看不到的文件haha
在这里插入图片描述

结束!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值