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

SELinux 强制访问控制安全策略验证

1. 核心概念与原理定义SELinux Security-Enhanced Linux是美国国家安全局在 Linux 开源社区的帮助下开发的一个强制访问控制MACMandatory Access Control的安全子系统用于各个服务进程都受到约束使其仅获取到本应获取的资源。作用SELinux 域限制对服务程序的功能进行限制以确保服务程序做不了出格的事情。SELinux 安全上下文对文件资源的访问限制确保文件资源只能被其所属的服务程序访问。与传统权限的区别传统 DAC (自主访问控制)靠权限控制的主体是用户。当某个进程想要对文件进行访问时系统就会根据该进程的所有者/用户组并比较文件的权限若通过权限检查就可以访问该文件。注意各种权限设置对 root 用户是无效的。SELinux MAC (强制访问控制)靠策略规则控制的主体则是进程。可以针对特定的进程与特定的文件资源来进行权限的控制即使你是 root 在使用不同的进程时你所能取得的权限并不一定是 root。对比项传统权限DACSELinuxMAC控制主体用户进程控制依据所有者 / 用户组 文件 rwx 权限策略规则 安全上下文匹配root 权限不受任何权限约束受进程策略限制不一定是完全 root 权限控制粒度粗粒度用户对文件细粒度进程对文件风险程序越权、提权风险高大幅降低越权风险2. SELinux 的启动、关闭与查看三种配置模式enforcing强制模式启用 SELinux将拦截服务的不合法请求。permissive宽容模式启用 SELinux遇到服务越权访问时只发出警告而不强制拦截。disabled关闭模式SELinux 没有运行。模式说明enforcing强制模式启用 SELinux拦截非法请求permissive宽容模式仅警告不拦截用于排错disabled关闭模式SELinux 不运行原理图模式管理命令命令作用备注getenforce查看当前模式-setenforce 0临时关闭 selinux转为宽容模式重启系统失效setenforce 1临时开启 selinux转为强制模式重启失效sestatus查看 selinux 的详细状态-永久配置编辑 /etc/selinux/config 文件修改 SELINUXenforcing (或 disabled/permissive)。修改后需重启系统生效。# 安装所需软件 [rootserver ~]# yum install selinux-policy selinux-policy-targeted -y # 编辑selinux配置文件 [rootserver ~]# vim /etc/selinux/config # 先转为临时模式 SELINUXpermissive [rootserver ~]# touch /.autorelabel # 重建文件 [rootserver ~]# reboot ​ [rootserver ~]# vim /etc/selinux/config # 改为强制模式 SELINUXenforcing [rootserver ~]# reboot3. SELinux的状态及其配置文件3.1 状态[rootserver ~]# sestatus SELinux status: enabled # 是否启用 SELinuxfs mount: /sys/fs/selinux # selinux临时文件系统的挂载点 SELinux root directory: /etc/selinux # 启动目录配置文件位置 Loaded policy name: targeted # 当前加载的策略类型 # 策略类型 # targeted只保护目标运行默认 # minimum少数选定进程进行保护 # mls多级安全保护最高级 Current mode: enforcing # 执行的模式重要 Mode from config file: enforcing # 配置文件的模式 Policy MLS status: enabled Policy deny_unknown status: allowed Memory protection checking: actual (secure) Max kernel policy version: 333.2 配置文件[rootserver ~]# vim /etc/selinux/config ​ SELINUXenforcing # 设置模式 ​ SELINUXTYPEtargeted # 设置策略类型 ​ # 注意/etc/sysconfig/selinux文件与上述配置问价内容相同选择一个配置即可4. 实验实验一使用nginx服务演示安全上下文值的设定服务端操作# 开启selinux [rootnode1 ~]# vim /etc/selinux/config [rootnode1 ~]# touch /.autorelabel [rootnode1 ~]# reboot [rootnode1 ~]# getenforce Permissive [rootnode1 ~]# vim /etc/selinux/config [rootnode1 ~]# reboot [rootnode1 ~]# getenforce Enforcing ​ # nginx软件安装 [rootnode1 ~]# yum install nginx -y [rootnode1 ~]# systemctl enable --now nginx Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service. ​ # 新建存储网页的目录 [rootnode1 ~]# mkdir /www [rootnode1 ~]# ls /www zy ​ # 编辑nginx主配置文件 [rootnode1 ~]# vim /etc/nginx/nginx.conf root /www/zy/zy; [rootnode1 ~]# systemctl restart nginx ​ # 测试返回403说明selinux对/www/zy/zy的安全上下文件检测未通过 ​ # 将/www/zy的策略类型改为已知可以访问的策略 [rootnode1 ~]# ls -Zd /usr/share/nginx/html/ system_u:object_r:httpd_sys_content_t:s0 /usr/share/nginx/html/ [rootnode1 ~]# ls -Zd /www/zy unconfined_u:object_r:default_t:s0 /www/zy [rootnode1 ~]# chcon -Rv -t httpd_sys_content_t /www/zy ​ # 注意chcon命令也可以使用参照范例文件修改来实现访问 [rootnode1 ~]# chcon -R --reference/usr/share/nginx/html/ /www/zy/zy [rootnode1 ~]# ls -Zd /www/zy/zy system_u:object_r:httpd_sys_content_t:s0 /www/zy [rootnode1 ~]# systemctl restart nginx实验二使用nginx服务的端口号修改演示selinux的设定# 基于上例 ​ # 检查selinux的状态 [rootserver ~]# getenforce Enforcing ​ # 编辑httpd的主配置文件修改监听端口号 [rootserver ~]# vim /etc/nginx/nginx.conf server { listen 7777; ​ ​ # 重启服务失败selinux拦截端口的修改 [rootserver ~]# systemctl restart nginx Job for nginx.service failed because the control process exited with error code. See systemctl status nginx.service and journalctl -xeu nginx.service for details. ​ # 查看selinux允许的端口号 [rootserver ~]# semanage port -l | grep http_port_t http_port_t tcp 80, 81, 443, 488, 8008, 8009, 8443, 9000 pegasus_http_port_t tcp 5988 ​ # 使用semanage命令将7777端口号添加到http_port_t类型列表中 [rootserver ~]# semanage port -a -t http_port_t -p tcp 7777 [rootserver ~]# semanage port -l | grep http_port_t ​ # 重启服务 [rootserver ~]# systemctl restart nginx ​ # 测试,浏览器输入192.168.48.130:7777实验三演示ssh端口号修改的selinux设定[rootserver ~]# vim /etc/ssh/sshd_config # 修改ssh的端口号为2222 Port 2222 ​ [rootserver ~]# systemctl restart sshd # 重启服务失败 Job for sshd.service failed because the control process exited with error code. See systemctl status sshd.service and journalctl -xeu sshd.service for details. ​ [rootserver ~]# semanage port -l | grep ssh_port_t # 查看ssh的的端口号策略 ssh_port_t tcp 22 [rootserver ~]# semanage port -a -t ssh_port_t -p tcp 2222 # 策略中添加新端口 [rootserver ~]# semanage port -l | grep ssh_port_t ssh_port_t tcp 2222, 22 [rootserver ~]# systemctl restart sshd
http://www.gsyq.cn/news/1338611.html

相关文章:

  • Audio Slicer:智能音频分割工具,告别手动剪辑烦恼
  • Windows音频设备切换神器:AudioSwitch让你的音频管理效率提升300%
  • Ryujinx完整指南:5步快速上手开源Switch模拟器
  • DellFanManagement终极指南:彻底掌控戴尔笔记本散热与噪音
  • 网络诊断工具终极指南:iperf3 Windows版完整教程与性能测试
  • 当蒸汽波遇上日本City Pop:跨文化风格融合的5层语义对齐法,实测提升风格一致性达91.4%(附对比热力图)
  • IPv4 与 IPv6 基础区别,以及 IP 检测时需要同时查看的原因
  • SOCD Cleaner:终极键盘输入优化工具,彻底解决游戏按键冲突
  • 初创公司利用Taotoken快速原型验证多个AI模型效果
  • 青少年近视防控方案技术选型:三套主流架构的落地分析与避坑指南
  • 5分钟搞定小程序多级选择:Vant Weapp级联选择器终极指南
  • BilibiliDown音频提取:5分钟掌握无损音乐提取的完整实践指南
  • Taotoken CLI 工具一键配置多开发环境接入信息
  • 英语发音MP3音频下载:119,376个单词发音免费获取终极指南
  • Redis——哈希类型相关指令
  • WPS 重营销、轻基础底层,劫持注册表让office没法用
  • DDrawCompat完整指南:3步让Windows 11完美运行经典老游戏的终极兼容性修复方案
  • 【Appium 系列】第16节-WebView-H5上下文切换 — 混合应用的自动化难点
  • 收藏!想进大模型行业?一文搞懂5大核心岗位,小白也能轻松入门!
  • codex ctl最新版本安装配置 - Leonardo
  • Cortex-Debug架构深度解析:从GDB MI协议到VSCode调试体验的完整实现
  • 电弧喷涂技术在炊具行业的应用:导磁涂层、钛耐磨涂层工艺与优势
  • Unitree GO2四足机器人ROS2开发终极指南:从零到自主导航的完整教程
  • 3个真实场景告诉你,为什么Windows用户需要Winhance中文版
  • 戴尔G15散热终极指南:如何用开源工具告别过热降频烦恼
  • 2026乌鲁木齐租车哪家靠谱?高性价比租车品牌横向实测测评 - GrowthUME
  • 明日方舟智能基建助手:彻底告别手动排班的终极解决方案
  • AI 智能体新手入门:从零构建你的第一个 Agent
  • 一多操作系统的生命体架构是从根本上为 AI 铺平了接管软件开发的道路
  • Midjourney巴洛克风格终极对照表(含鲁本斯/贝尼尼/哈尔斯原作像素级特征拆解)