RHCE第5章:SELinux

系列文章目录

RHCE第0章:RHCE开始前的准备
RHCE第1章:Web服务器(上)
RHCE第1章:Web服务器(下)
RHCE第2章:DNS服务
RHCE第3章:DHCP服务器
RHCE第4章:Firewall服务
RHCE第5章:SELinux


文章目录

  • 系列文章目录
  • 前言
  • 一、SElinux基本指令
    • 1.查看状态
    • 2.临时开关
    • 3.展示文件上下文
  • 二、安全策略举例
    • 1.软连接测试
    • 2.修改类型
  • 三、端口上下文
  • 总结


前言

SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux历史上最杰出的新安全子系统。NSA是在Linux社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。SELinux 默认安装在 Fedora 和 Red Hat Enterprise Linux 上,也可以作为其他发行版上容易安装的包得到。
简单来说就是一个负责安全的操作系统,之前我们做实验都是关闭SELinux,在此之后我们的虚拟机都要打开SELinux

vim /etc/selinux/config 

RHCE第5章:SELinux_第1张图片
将其参数设置为enforcing,两台虚拟机都要修改。
然后reboot,打开selinux第一次重启需要打标,可能会慢一点。
在这里插入图片描述
确认selinux打开后,抓快照,以后的实验都在selinux打开的情况下做。


一、SElinux基本指令

1.查看状态

sestatus

RHCE第5章:SELinux_第2张图片
这里简单说一下Current mode这个参数表示selnux的状态,我们可以用配置文件看以下

RHCE第5章:SELinux_第3张图片
这个参数共有以上几种状态简单说一下啊。
enforcing 强制禁止,在你的计算机中有服务违反了相关安全策略,selinux会给你直接禁止。
permissive 警告代替禁止,在你的计算机中有服务违反了相关安全策略,selinux会给你通过,但是会给你发个警告信息,然后记录到日志里。
disabled 关闭 selinux安全策略关闭。
selinux还有第四中模式,这里没有,selinux的配置读取是在计算机启动时先加载到内核里,然后读取配置文件,我们可以通过修改内核直接阻止selinux加载到内核。

2.临时开关

setenforce 0

RHCE第5章:SELinux_第4张图片
我可以临时的把模式改成Permissive
RHCE第5章:SELinux_第5张图片
在改回去。

3.展示文件上下文

ls -Z / #以根目录为例

RHCE第5章:SELinux_第6张图片
结果会为每一个目录展示一段信息,每一段信息用三个:分成四个部分,我们主要看第三个部分,可以理解为文件类型。
现在我们在根目录下建立一个测试文件夹。
RHCE第5章:SELinux_第7张图片
我们建的文件夹啊不属于任何系统类型,会变成default。
再举个例子,现在安装一个apache。

ls -Z /var/www/

在这里插入图片描述
红帽7开始的selinux就已经包含了所有服务,基本上计算机能安装的服务,他都有一个默认的类型。

在这里插入图片描述
我们在默认文件夹下建立一个测试也,查看他的类型,可以发现它默认继承了父文件夹的类型。

二、安全策略举例

1.软连接测试

之前做apache实验有一种情况,当网页文件不在默认文件夹下时,可以通过修改配置文件或者软连接的方式访问,现在关闭selinux进行软连接测试。
过程不说了,不会的自己复习。
RHCE第5章:SELinux_第8张图片
现在我们把selinux打开再次访问。
在这里插入图片描述
RHCE第5章:SELinux_第9张图片
访问被拒绝。
这就是selinux的安全策略才拦截。
RHCE第5章:SELinux_第10张图片
由于这个两个文件不在同一个文件夹下,所以继承了不同的文件类型,selinux认为软连接目标不是html的文件类型,这不安全,所以进行拦截。

2.修改类型

知道了问题所在就要解决问题。
这里说三种修改方法。

chcon -R -t httpd_sys_content_t /chaogetest/

R递归所有文件
t 目标类型
最后加要修改的目录。
RHCE第5章:SELinux_第11张图片
现在可以正常访问了,我们在把他改回去说第二种方法。

chcon -R -t default_t /chaogetest/
chcon -R --reference=/var/www/html/ /chaogetest/

–reference+参考目录
把目标目录按参考目录设置。

RHCE第5章:SELinux_第12张图片
现在又通了。
在弄回去,现在说第三种方法。
前边两种都不是直接内核,或者说都是零时生效,所以官方并不推荐,仅作了解,官方推荐使用semange命令

semanage fcontext -a -t httpd_sys_content_t '/chaogetest(/.*)?'

fcontext 修改上下文
a 添加
httpd_sys_content_t 文件类型
‘/chaogetest(/.*)?’ 目标文件这里运用了正则表达式意思是/chaogetest以及目录下的所有文件

这条命令的意思是 为/chaogetest以及目录下的所有文件添加httpd_sys_content_t 为上下文类型,这个要等几秒,因为他要把信息写到内核里边。

restorecon -RFv /chaogetest/

我们再用restorecon 命令使目标文件夹从新变换类型,有点类似于重读配置文件。
在这里插入图片描述
RHCE第5章:SELinux_第13张图片
现在又通了。

三、端口上下文

现在做一个多端口的apache的网页,前边不演示了,因为selinux打开,最后一步重启时会发生错误。
在这里插入图片描述
我们通过以下命令查看日志。

journalctl -xe

RHCE第5章:SELinux_第14张图片
可以看到就是端口问题。
这是因为8899不是apache服务的常用端口selinux认为他不安全,所以我们需要命令添加端口上下文。并且他也直接给出了命令,就是我框住的地方。

semanage port -a -t PORT_TYPE -p tcp 8899,注意这里的PORT_TYPE 代指端口类型,不是实际的代码。
我们要先查看apache的端口类型。

semanage port -a -t PORT_TYPE -p tcp 8899

RHCE第5章:SELinux_第15张图片
可以看到默认端口里没有8899我们要为其添加。

semanage port -a -t http_port_t -p tcp 8899

p 协议类型

在这里插入图片描述
再次查看可以看到我们需要的端口出现了。
此时apache服务就可以重新启动了。
在这里插入图片描述

总结

单独说SElinux没什么意思,还是要结合具体服务具体分析,建议把防火墙和SELinux打开把前边的一些实验都做一下。

你可能感兴趣的:(RHCE,linux,安全,服务器)