提升篇——SELINUX相关介绍

本文深入介绍了SELinux(Secure Enhanced Linux),一个内核级别的安全模块,用于增强系统安全性。文章涵盖SELinux的基本概念、状态切换、安全上下文以及其对vsftpd服务的影响。内容包括如何查看和修改安全上下文,解决SELinux导致的权限问题,以及通过布尔开关设定本地用户文件上传和匿名用户上传文件的权限。同时,提供了针对SELinux错误的排查方法。

1.SElinux简介

SELinux:Secure Enhanced Linux,是美国国家安全局(NSA=The National Security Agency)和SCC(Secure Computing Courporation)开发的LInux的一个强制控制的安全模块。2000年以GNU GPL发布,Linux内核2.6版本后继承在内核中。

对于目前可用的 Linux安全模块来说,SELinux 是功能最全面,而且测试最充分的,它是在 20 年的 MAC 研究基础上建立的。SELinux 在类型强制服务器中合并了多级安全性或一种可选的多类策略,并采用了基于角色的访问控制概念。它们都是在内核中启用 SELinux 的,并且提供一个可定制的安全策略,还提供很多用户层的库和工具,它们都可以使用 SELinux 的功能。

SElinux(安全增强型linux):内核级的加强型火墙,内核上的插件,改变后要重启。它是可保护系统安全性的额外机制。在某种程度上,它可以被看作是与标准权限系统并行的权限系统。在常规模式中,以用户身份运行进程,并且系统上的文件和其他资源都设置了权限标签。(控制哪些用户对哪些文件具有哪些访问权,selinux的另一个不同之处在于,若要访问文件必须具有普通访问权限和selinux访问权限。因此,即使以超级用户身份运行程序,根据进程以及文件或资源的selinux安全性上下文可能拒绝访问文件或资源)

SELinux策略:

对象(object):所有可以读取的对象,包括文件、目录和进程,端口等

主体:进程称为主体(subject)

SELinux中对所有的文件都赋予一个type的文件类型标签,对于所有的进程也赋予各自的一个domain的标签。domain标签能够执行的操作由安全策略里定义。

当一个subject试图访问一个object,Kernel中的策略执行服务器将检查AVC(访问矢量缓存Access Vector Cache),在AVC中,subject和object的权限被缓存(cached),查找“应用+文件”的安全环境。然后根据查询结果运行或拒绝访问。

安全策略:定义主体读取对象的规则数据库,规则中记录了哪个类型的主体使用哪个方法读取哪一项对象是允许还是拒绝的,并且定义了那种行为是运行或拒绝。

2.SElinux状态介绍及更改方式

状态功能
Enforcing警告并拒绝
Permissive警告不拒绝
Disabled不警告不拒绝

更改方式1

setenforce 0			##警告不拒绝		此状态下安全上下文不同的文件可以显示(后面会详细解释安全上下文)
setenforce 1			##警告并拒绝

注意:我们还可以用来更改SElinux的状态

更改方式2

vim  /etc/sysconfig/selinux        ##开启selinux,enforcing-->disabled
reboot       ##重启虚拟机
getenforce  ##查看状态

在这里插入图片描述
更改后需重启
在这里插入图片描述
在这里插入图片描述
查看目前系统完整的selinux状态

sestatus

在这里插入图片描述
因为selinux是需要内核或内核模块来支持的,那么也就需要对应的配置文件来提供读取,这里说明了其主配置目录为/etc/selinux,而当前状态为enabled启用状态,也就是说selinux还是可以通过命令来设置是否开启。而当前模式表示其selinux的具体管理方式。

3.安全上下文

传统的 Linux中一切皆文件,由用户、组、权限控制访问。而在SELinux中一切皆对象(object),由存放在inde表的扩展属性域的安全元素所控制其访问。

安全上下文(security context):所有的文件和端口资源和进程都具备的安全标签

组成元素:user:role:type:sesitivity:category

如:user_u:object_r:tmp_t:s0:c0

SElinux安全上下文工作类型:

类型功能
strictcentos5,每个进程都受到selinux的控制
targeted用来保护常见的网络服务,仅有限进程受到 selinux控制,只监控容易被入侵的进程,rhel4只保护13个服务,rhel5保护88个服务
minimumcentos7,修改过的targeted,只对选择的网络服务。
mls提供MLS(多级安全)机制的安全性
注意minimum和mls稳定性不足,未加以应用

安全上下文的查看

ls  -Z    file        ##查看文件的安全上下文
ls  -Zd   dir         ##查看目录的安全上下文
id -Z				  ##查看用户安全上下文

在这里插入图片描述

4.安全上下文对于vsftpd服务的影响

1.文件安全上下文限制了访问用户的权限——目录下的文件若安全上下文若不一致,不可查看。

实验:

由图可见,/mnt下建立的文件westso于/var/ftp/pub的文件安全上下文不一致,匿名用户登陆时无法查看,但是实际上文件确实存在于目录中
在这里插入图片描述
此时我们在/var/ftp中建立文件发现,安全上下文一致能被查看
在这里插入图片描述

2.安全上下文的修改

1)临时更改——重启服务后其安全上下文就会恢复

chcon   -t    public_content_t    /var/ftp/westos       ##更改westos的安全上下文为public_content_t

在这里插入图片描述
我们还可以用实验来证明:

(1)首先更改vsftpd的配置文件,更改匿名用户加目录为/westos
在这里插入图片描述
(2)在/下建立目录/westos,并在目录中建立文件,并用lftp登陆查看
在这里插入图片描述
(3)更改/westos及其下文件的安全上下文

chcon -t public_content_t /westos/ -R

在这里插入图片描述
(4)修改SElinux状态,重启后再打开SElinux,然后重启

在这里插入图片描述
在这里插入图片描述
(5)查看/westos及其下文件安全上下文——恢复default_t(默认安全上下文)
在这里插入图片描述

2)永久更改

==更改前
在这里插入图片描述
更改后

semanage  fcontext  -a  -t public_content_t '/westos(/.*)?'					##永久更改
semanage  fcontext  -l | grep  /hello   									##查看该文件安全上下文列表
restorecon   -FvvR  /westos													##刷新文件安全列表,使更改生效
ls  -Zd /westos																##查看安全列表

在这里插入图片描述

5.设定本地用户文件上传——布尔开关

更改前——出现553报错,权限过小
在这里插入图片描述
找到相关布尔开关

getsebool  -a | grep ftp             ##查看关于ftp的所有sebool的值
setsebool  -P ftp_home_dir on        ##打开selinux本地用户上传开关,-P为永久开启

在这里插入图片描述

布尔型 开关0----->关 1------>开 on–>开 , off–> 关
在这里插入图片描述
开启后测试
在这里插入图片描述

6.匿名用户上传文件

1)修改本地文件系统的权限

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

在这里插入图片描述
2)修改主配置文件

vim /etc/vsftpd/vsftpd.conf
anon_upload_enable=YES 
systemctl  restart  vsftpd		##在配置文件中打开匿名用户上传参数

在这里插入图片描述
3)设置布尔开关

getsebool   -a  |  grep  ftp
setsebool  -P  ftpd_anon_write on

在这里插入图片描述
4)修改安全上下文

ls  -Zd /var/ftp/pub
semanage fcontext  -a  -t  public_content_rw_t /var/ftp/pub
restorecon  -FvvR    /var/ftp/pub

在这里插入图片描述

测试

在这里插入图片描述

7.解决SElinux的报错问题

报错详细信息可以在系统日志中查看

我们首先清空日志

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

在这里插入图片描述
模拟问题:我们把上面实验中关于匿名用户上传权限的布尔开关关掉

setsebool  -P  ftpd_anon_write 0

在这里插入图片描述
现在我们使用匿名用户登陆并上传文件
在这里插入图片描述
安装能提供报错解决方案的软件

rpm -qa | grep setroubleshoot 											##查看报错的文件 
 yum install setroubleshoot-server-3.2.17-2.el7.x86_64 -y				##安装报错软件

安装成功后

> /var/log/messages         ##清空日志
cat /var/log/messages       ##查看报错解决方案

系统提示你应该打开关于匿名用户上传权限的布尔开关
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值