提升篇——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相关介绍_第1张图片
更改后需重启
提升篇——SELINUX相关介绍_第2张图片
提升篇——SELINUX相关介绍_第3张图片
查看目前系统完整的selinux状态

sestatus

提升篇——SELINUX相关介绍_第4张图片
因为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安全上下文工作类型:

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

安全上下文的查看

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

提升篇——SELINUX相关介绍_第5张图片

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

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

实验:

由图可见,/mnt下建立的文件westso于/var/ftp/pub的文件安全上下文不一致,匿名用户登陆时无法查看,但是实际上文件确实存在于目录中
提升篇——SELINUX相关介绍_第6张图片
此时我们在/var/ftp中建立文件发现,安全上下文一致能被查看
提升篇——SELINUX相关介绍_第7张图片

2.安全上下文的修改

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

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

提升篇——SELINUX相关介绍_第8张图片
我们还可以用实验来证明:

(1)首先更改vsftpd的配置文件,更改匿名用户加目录为/westos
在这里插入图片描述
(2)在/下建立目录/westos,并在目录中建立文件,并用lftp登陆查看
提升篇——SELINUX相关介绍_第9张图片
(3)更改/westos及其下文件的安全上下文

chcon -t public_content_t /westos/ -R

提升篇——SELINUX相关介绍_第10张图片
(4)修改SElinux状态,重启后再打开SElinux,然后重启

提升篇——SELINUX相关介绍_第11张图片
提升篇——SELINUX相关介绍_第12张图片
(5)查看/westos及其下文件安全上下文——恢复default_t(默认安全上下文)
提升篇——SELINUX相关介绍_第13张图片

2)永久更改

==更改前
提升篇——SELINUX相关介绍_第14张图片
更改后

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

提升篇——SELINUX相关介绍_第15张图片

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

更改前——出现553报错,权限过小
提升篇——SELINUX相关介绍_第16张图片
找到相关布尔开关

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

提升篇——SELINUX相关介绍_第17张图片

布尔型 开关0----->关 1------>开 on–>开 , off–> 关
提升篇——SELINUX相关介绍_第18张图片
开启后测试
提升篇——SELINUX相关介绍_第19张图片

6.匿名用户上传文件

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

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

提升篇——SELINUX相关介绍_第20张图片
2)修改主配置文件

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

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

getsebool   -a  |  grep  ftp
setsebool  -P  ftpd_anon_write on

提升篇——SELINUX相关介绍_第21张图片
4)修改安全上下文

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

提升篇——SELINUX相关介绍_第22张图片

测试

提升篇——SELINUX相关介绍_第23张图片

7.解决SElinux的报错问题

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

我们首先清空日志

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

提升篇——SELINUX相关介绍_第24张图片
模拟问题:我们把上面实验中关于匿名用户上传权限的布尔开关关掉

setsebool  -P  ftpd_anon_write 0

提升篇——SELINUX相关介绍_第25张图片
现在我们使用匿名用户登陆并上传文件
提升篇——SELINUX相关介绍_第26张图片
安装能提供报错解决方案的软件

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

安装成功后

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

系统提示你应该打开关于匿名用户上传权限的布尔开关
提升篇——SELINUX相关介绍_第27张图片

你可能感兴趣的:(Linux基础)