0
点赞
收藏
分享

微信扫一扫

第11章节笔记

腊梅5朵 2022-03-12 阅读 51
运维

SELinux 安全子系统

简介

SELinux 是美国国家安全局在 Linux 开源社区的帮助下开发的一个 强制访问控制 安全子系统

RHEL7 系统使用 SELinux 技术的目的是 为了让各个 服务进程 都受到约束 使其仅获取到本应获取的资源

例如 您在自己的电脑上下载了一个美图软件 当您全神贯注地使用它给照片进行美颜的时候 它却在后台默默监听着浏览器中输入的密码信息 而这显然不应该是它应做的事情

SELinux 安全子系统就是为了杜绝此类情况而设计的,它能够从多方面监控违法行为 对服务程序进行限制 [ SELinux 域 限制 服务程序做不了出格的事情 ] ;对文件资源限制 [ SELinux 安全上下文 确保文件资源只能被其所属的服务程序进行访问 ]

SELinux 机制

所有的进程和文件都被 标记一种类型,类型定义进程的操作域,每一个进程都被限制在自己的活动

域中,SElinux 策略规则定义了 进程和文件之间的访问权限,仅当有明确的策略规则时才会被允许

三种配置模式

  • enforcing:强制启用安全策略模式 [ 一旦发现 直接阻止 ]
  • permissive:只发出警告而不强制拦截 [ 只记录 不阻止 ]
  • disabled:对于越权的行为不警告也不拦截 [ 关闭状态 ]
vim /etc/selinux/config

img

SELinux 服务的主配置文件中 定义的是 SELinux 的 默认运行状态 重启系统才生效

获得当前 SELinux 服务的运行模式

getenforce

img

修改 SELinux 当前的运行模式 [ 0 为禁用,1 为启用 ]

setenforce [0|1]

0 设置为 permissive
1 设置为 enforcing

注意 这种修改只是临时的 系统重启后就会失效

查看 SELinux 启用状态

sestatus

img

我们可以通过 ls -Z 这个命令来查看我们文件的 SELinux 上下文信息 [ 安全标签 ]

ls -Z index.html

img

httpd_sys_content_t :这个就是 SELinux的上下文信息 也就是 安全标签

表示 index.html 文件 只能在 httpd.sys_content_t 活动域 运行

测试

安装 httpd

yum install httpd -y

/var/www/html 下创建 index.html 文件

cd /var/www/html/

vim index.html

[root@RHCE8 html]# ls -Z index.html 
unconfined_u:object_r:httpd_sys_content_t:s0 index.html

systemctl restart httpd
systemctl enable httpd

在本机访问 http://127.0.0.1/index.html 网页

img

我们在 家目录 创建一个 test.index

ll -Z test.index

img

他的 SELinux 上下文信息 显然和在 html 目录下创建的 不一样

我们将他 移动html 目录 [ 保证他的安全上下文信息不会发生改变 ]

mv test.index /var/www/html/

img

重启 httpd 服务 >> 访问

img

安全上下文 为 httpd_sys_content_t 的 index.html 可以访问

安全上下文 为 admin_home _t 的 test.html 无法访问

img

这就是 SELinux 的机制

如何让 test.html 也能被访问

  • 使用命令 让 test.html 能够继承 服务器 html 的 安全上下文
restorecon -Rv ./*

img

img

继承成功

img

完成

测试 2

修改 http 配置文件

vim /etc/httpd/conf/httpd.conf

img

我们将 listen 端口 改为 82

然后重启 httpd 服务

img

报错

我们可以通过 journalctl -xe 命令查看报错信息

img

翻译上述报错

img

可以发现是 SELinux 在阻止

当然 我们也可以通过 查看 /var/log/messages 找到报错原因

tail -f /var/log/messages

img

semanage 命令

用于管理 SELinux 的策略

semanage port -l | grep http

➢ -l 参数用于查询;
➢ -a 参数用于添加;
➢ -m 参数用于修改;
➢ -d 参数用于删除。

img

如图 http_port_t 也就是说 httpd 服务端口

可以为 80, 81, 443, 488, 8008, 8009, 8443, 9000

测试

vim httpd.conf

img

重启服务

img

成功

尝试添加 端口

semanage port -a -t http_port_t -p tcp 82

img

再次修改 httpd 配置文件

vim httpd.conf

systemctl restart httpd

img

img

完成

举报

相关推荐

0 条评论