Linux历史上最杰出的新安全子系统:内核级加强型防火墙SElinux

本文介绍了SELinux这一内核级加强型防火墙,它是Linux历史上杰出的新安全子系统,提供强制访问控制。文中探讨了SELinux开启和关闭对安全上下文的影响,给出解决安全上下文不一致的临时和永久办法,还说明了设置为enforcing时上传文件的方法及相关日志情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#################

selinux

#################


内核级加强型防火墙


要做selinux的东西,首先得带大家稍微了解一下selinux有多么厉害吧

SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux历史上最杰出的新安全子系统。NSA是在Linux社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。SELinux 默认安装在 Fedora 和 Red Hat Enterprise Linux 上,也可以作为其他发行版上容易安装的包得到。
SELinux 是 2.6 版本的 Linux 内核中提供的强制访问控制(MAC)系统。***对于目前可用的 Linux安全模块来说,SELinux 是功能最全面,而且测试最充分的,***它是在 20 年的 MAC 研究基础上建立的。SELinux 在类型强制服务器中合并了多级安全性或一种可选的多类策略,并采用了基于角色的访问控制概念。 [1]
大部分使用 SELinux 的人使用的都是 SELinux 就绪的发行版,例如 Fedora、Red Hat Enterprise Linux (RHEL)、Debian或 Centos。它们都是在内核中启用 SELinux 的,并且提供一个可定制的安全策略,还提供很多用户层的库和工具,它们都可以使用 SELinux 的功能。
SELinux是一种基于 域-类型 模型(domain-type)的强制访问控制(MAC)安全系统,它由NSA编写并设计成内核模块包含到内核中,相应的某些安全相关的应用也被打了SELinux的补丁,最后还有一个相应的安全策略。任何程序对其资源享有完全的控制权。假设某个程序打算把含有潜在重要信息的文件扔到/tmp目录下,那么在DAC情况下没人能阻止他。SELinux提供了比传统的UNIX权限更好的访问控制。

* selinux的开关



> vim /etc/sysconfig/selinux
>     SELINUX=enforcing	              ##selinux开启,级别为强制
>     SELINUX=permissive	          ##selinux开启,级别为警告
>     SELINUX=disabled	              ##selinux关闭,
>     setenforce 0|1		          ##更改selinux当前的级别0警告1标示强制
>     getenforce 		              ##查看selinux的状态

注意:当selinux从关到开,或者从开到关,需要重启系统

1.现在先看看在selinux开启和关闭的情况下对安全上下文的影响

在selinux开启的时候,可以看到当将一个文件移到/var/ftp/pub时,查看不到那个文件
在这里插入图片描述
在这里插入图片描述

当seliux关闭的时候,就可以看得到

在这里插入图片描述
在这里插入图片描述
其实yyh这个文件确实已经到pub底下了,只是安全上下文不匹配,它不显示
在这里插入图片描述

2.怎样解决安全上下文不一致的问题?

当selinux对文件有影响时,是因为文件上面的标签不一样

因此当selinux开启时在默认发布目录下就不能看到刚才mv的文件

因为/var/ftp/这个默认发布目录与mv进去的文件标签不一样

查看文件或者目录的标签:ls -Zd /var/ftp/

在这里插入图片描述
办法一:
#临时更改适用于更改文件

chcon -t 安全上下文  文件
chcon -t public_content_t 文件

将mv进去的文件的标签改成与发布目录一致的就可以了,但是chcon这个更改标签的方式是临时的,selinux重启之后就不会再生效
selinux这个插件被禁用又被启用

如下图所示,当我将aaa的标签改了之后,再将aaa移动到pub下,就可以看到了,因为安全上下文匹配成功了

在这里插入图片描述

办法二
#永久更改文件安全上下文

semanage fcontext -l | grep /var/ftp
 查看系统已经为默认发布目录设置的标签

在这里插入图片描述

semanage fcontext -a -t public_context_t '/ftpdir(/.*)?' 
将自己建立的发布目录加上标签(目录里面的内容)


semanage fcontext -l | grep /ftpdir
 这此查看就可以看到我们自己新建的ftp发布目录标签也是public了

在这里插入图片描述

restorecon -RvvF /ftpdir/ 对目标进行刷新

在这里插入图片描述

ls -Zd /ftpdir/ 
查看标签

不管selinux是开启还是关闭,永久设置都会生效
这个实验主要的目的就是永久将mv进去的由default改为public以及自己新建的默认发布目录改为public

3.使selinux设置为enforceing仍然可以上传文件

系统服务上设定sebool开关
getsebool -a | grep ftp 查看匿名用户的能力
sebool会限制服务的不安全功能,如果需要用此功能,必须调整sebool值
*selinux的bool值的设定
sebool值是控制服务功能开关
getsebool  | grep 服务名称
setsebool -P bool值  on |off	

在这里插入图片描述

getsebool  | grep  ftp 
setsebool -P(永久设置) ftpd_anon_write 1(on)让匿名用户可以上传

在这里插入图片描述

chcon -t public_content _rw_t /var/ftp/pub/ 让匿名用户具有读写这个目录的权力(必须设置)

在这里插入图片描述

还要结合之前在配置文件里写的东西和给予pub的权限等,这样,即使在selinux为enforcing的情况下仍然能够上传文件

在这里插入图片描述

4.与selinux相关的两个日志

/var/log/messages 为系统日志,提供一些解决方案 ,需要安装服务才能提供解决方案
/var/audit/audit.log 为selinux真正的日志,不提供解决方案
yum search selinux 
yum install setroubleshoot-server.x86_64 -y

在这里插入图片描述

当把setroubleshoot-server.x86_64 删除之后,假如出现报错,那么在/var/log/messages
下看不到任何解决方案,但是如果setroubleshoot-server.x86_64
存在的话,假如出现报错,那么在/var/log/messages下就会看到解决方案

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值