当前位置: 首页 > news >正文

SELinux加固Linux安全

SELinux 模式

  • enforcing 模式: SELinux强制执行访问控制规则。 在强制模式下,如果规则没有明确允许访问,则拒绝访问,并写入日志。此模式是默认模式。

  • Permissive 模式:SELinux 加载策略并处于活动状态,但不强制执行访问控制规则,⽽是记录访问违规。此模式有助于对应用和规则进行测试和故障排除。

  • disable 模式:完全关闭 SELinux。不拒绝任何SELinux违规,不予记录。

[root@server ~ 18:47:49]# getenforce Enforcing#permission是临时关闭用来测试是不是selinux引起的原因[root@server ~ 18:49:23]# setenforce usage:  setenforce [ Enforcing | Permissive | 1 | 0 ][root@server ~ 18:49:36]# setenforce 0[root@server ~ 18:49:56]# getenforce Permissive[root@server ~ 18:50:01]# setenforce 1[root@server ~ 18:50:04]# getenforce Enforcing​***关闭要编辑配置文件完成***selinux是内核级别功能

SELinux 的文件标签机制

新文件默认 SELinux 上下文
#核心标签是 tmp_t → 相当于给 /tmp 贴了 “临时公共区” 标签,说明这是系统默认的临时文件存放地,所有用户 / 程序都能临时用,但权限受 SELinux 限制(比如不能假装自己是 “网站文件”)[root@server ~ 18:50:06]# ls -dZ /tmpdrwxrwxrwt. root root system_u:object_r:tmp_t:s0       /tmp​#文件 /tmp/lyk 是 user_tmp_t → 这是 “用户在临时区创建的文件” 专属标签,继承了 /tmp 的 “公共临时” 属性,但和系统级临时文件标签区分开了[root@server ~ 18:55:40]# touch /tmp/lyk[root@server ~ 18:56:14]# ls -dZ /tmp /tmp/lykdrwxrwxrwt. root root system_u:object_r:tmp_t:s0       /tmp-rw-r--r--. root root unconfined_u:object_r:user_tmp_t:s0 /tmp/lyk[root@server ~ 18:56:29]# ls -dZ /var/www/html/drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html/​#文件 index.html 也是 httpd_sys_content_t → 继承了文件夹的 “网站内容” 标签,说明 “这是正经的网页文件”,httpd 服务能正常读取它[root@server ~ 18:57:19]# touch /var/www/html/index.html[root@server ~ 18:57:33]# ls -Zd /var/www/html/index.html /var/www/html/drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html/-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/index.html
#总结:这些命令讲了 SELinux 的 2 个核心知识点#-标签继承性:文件默认会继承所在文件夹的 SELinux 标签(比如 /var/www/html 里的文件默认是 httpd_sys_content_t,/tmp 里的文件默认是 user_tmp_t)。​#-标签决定性:一个程序能否访问文件,不仅看权限(rwx),还要看双方的标签是否 “匹配”。比如 httpd 服务默认只能访问 httpd_sys_content_t 标签的文件,如果你把网页文件放到 /tmp(标签 tmp_t),即使权限够,SELinux 也会阻止访问(因为标签不匹配)。​简单说:SELinux 靠标签给文件 “分类”,限制程序只能访问 “同类标签” 的文件,防止越权访问,让系统更安全。这就是为什么配置网站时,文件放对目录(带正确标签)很重要~

-a

​[root@server ~ 18:58:49]# ls -Zd /rootdr-xr-x---. root root system_u:object_r:admin_home_t:s0 /root[root@server ~ 19:04:02]# cp /tmp/lyk ./lyk-1[root@server ~ 19:04:48]# ls -Zd /root /root/lyk-1dr-xr-x---. root root system_u:object_r:***admin_home_t***:s0 /root-rw-r--r--. root root unconfined_u:object_r:***admin_home_t***:s0 /root/lyk-1[root@server ~ 19:05:04]# cp -a /tmp/lyk ./lyk-2[root@server ~ 19:05:39]# ls -Zd /root /root/lyk-2dr-xr-x---. root root system_u:object_r:***admin_home_t***:s0 /root-rw-r--r--. root root unconfined_u:object_r:***user_tmp_t***:s0 /root/lyk-2

-z

  • 用于显示和设置SELinux上下文

[root@server ~ 16:20:41]#  ps -C sshd -ZLABEL                              PID TTY          TIME CMD-                                 1012 ?        00:00:00 sshd-                                 1070 ?        00:00:00 sshd[root@server ~ 17:02:21]# ls -Z /homedrwx------. lyk lyk unconfined_u:object_r:user_home_dir_t:s0 lyk​# 其他命令中 -Z 选项# cp -Z     set SELinux security context of destination file to default type# mkdir -Z     set SELinux security context of each created directory to the default type
设置文件 SELinux 上下文

设置文件上下文命令

  • chcon 命令,直接更改文件SELinux上下文。但是,它不会将上下文更改保存到 SELinux 上下文数据库中。系统下一次对所有文件进行 relabel 操作时,将导致该上下文恢复。它对于测试和实验很有用。

  • restorecon 命令,根据 SELinux上下文数据库中规则,恢复文件SELinux上下文。原先通过 chcon命令所做的更改,将失效。

    #chcon
#修改标签user_tmp_t:s0 /root/lyk-2->admin_home_t:s0 /root/lyk-2-rw-r--r--. root root unconfined_u:object_r:user_tmp_t:s0 /root/lyk-2-rw-r--r--. root root unconfined_u:object_r:user_tmp_t:s0 /root/lyk-3[root@server ~ 19:15:03]# chcon -t admin_home_t /root/lyk-2[root@server ~ 19:22:59]# ls -Zd /root /root/lyk-*dr-xr-x---. root root system_u:object_r:admin_home_t:s0 /root-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 /root/lyk-1-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 /root/lyk-2-rw-r--r--. root root unconfined_u:object_r:user_tmp_t:s0 /root/lyk-3
#restorecon
#恢复原来标签 user_tmp_t->admin_home_t[root@server ~ 19:23:04]# restorecon -Rv /rootrestorecon reset /root/lyk-3 context unconfined_u:object_r:user_tmp_t:s0->unconfined_u:object_r:admin_home_t:s

示例:配置 web 站点监听端口

[root@server ~ 19:24:33]# mkdir /www[root@server ~ 19:27:40]# ls -Zd /wwwdrwxr-xr-x. root root system_u:object_r:default_t:s0   /www[root@server ~ 19:27:51]# vim /etc/httpd/conf/httpd.conf #编辑DocumentRoot "www"<Directory "/www">AllowOverride None# Allow open access:Require all granted</Directory>​[root@server ~ 19:30:02]# systemctl start httpd[root@server ~ 19:30:59]# systemctl disable firewalld.service --now​[root@server ~ 19:31:41]# echo hello > /www/index.html[root@server ~ 19:32:33]# setenforce 0[root@server ~ 19:34:26]# ls -Zd /wwwdrwxr-xr-x. root root system_u:object_r:default_t:s0   /www​[root@server ~ 19:35:41]# ls -Zd /var/www/html/drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html/​[root@server ~ 19:35:51]# chcon -t httpd_sys_content_t /www​[root@server ~ 19:37:25]# ls -Zd /wwwdrwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /www
http://www.dtcms.com/a/315775.html

相关文章:

  • 将普通用户添加到 Docker 用户组
  • 第十七天:原码、反码、补码与位运算
  • RAFT:让语言模型更聪明地用文档答题
  • Java从入门到精通 - 集合框架(一)
  • 最长连续序列(每天刷力扣hot100系列)
  • FastDeploy2.0:报qwen2.embed_tokens.weight
  • 2.4 组件通信
  • 24. 前端-js框架-Vue
  • Occ3D: A Large-Scale 3D Occupancy Prediction Benchmark for Autonomous Driving
  • Python高级编程与实践:Python性能分析与优化
  • Java技术栈/面试题合集(3)-Java并发篇
  • 【功能测试】软件功能上线测试经验总结
  • 场外个股期权的额度为何受限?
  • java web 服务员点餐系统demo 比较完整的前端后端+mysql + 图片上传 练习
  • 从审批流到审计链:刻录系统的全周期管控技术解析
  • Spring MVC框架中DispatcherServlet详解
  • 【开源工具】基于Python的PDF清晰度增强工具全解析(附完整源码)
  • LeetCode算法日记 - Day 2: 快乐数、盛水最多容器
  • 力扣经典算法篇-43-全排列(经典回溯问题)
  • vite面试题及详细答案120题(01-30)
  • 普通树状数组
  • 《Node.js与 Elasticsearch的全文搜索架构解析》
  • Leetcode 13 java
  • 2025-08-05Gitee + PicGo + Typora搭建免费图床
  • MongoDB学习专题(二)核心操作
  • MongoDB 从3.4.0升级到4.0.0完整指南实战-优雅草蜻蜓I即时通讯水银版成功升级-卓伊凡|bigniu
  • 时序数据库flux aggregateWindow命令详解
  • Baumer相机如何通过YoloV8深度学习模型实现道路场所路人口罩的检测识别(C#代码UI界面版)
  • 概率论之条件概率
  • ubuntu自动重启BUG排查指南