SELinux:Linux系统的终极安全防护锁

SELinux:Linux系统的终极安全防护锁 一、直白概述SELinux 是 Linux 系统强制访问控制安全模块相当于系统第二层安全锁。系统原有普通rwx读写权限自主访问控制 DAC放行后SELinux 依旧可依据安全策略拦截非法访问约束进程行为杜绝程序越权操作。二、引入 SELinux 的必要性仅依靠传统文件 rwx 权限DAC存在明显安全缺陷root 超级用户不受常规权限限制账号泄露后可随意篡改、窃取系统全部数据运维误配置777最高开放权限目录文件失去基础防护攻击风险大幅上升应用程序被入侵劫持后会借助权限漏洞跨目录越权破坏、读取涉密数据SELinux 作为强制访问控制 MAC与传统权限双重校验。即便权限配置失误、root 账号被控、基础权限全开依旧能限制进程违规行为构建双层安全防护。访问校验流程进程 → SELinux 策略 (MAC 校验) → 传统 rwx 权限 (DAC 校验) → 系统资源三、SELinux 基础架构与核心组成1. 三层整体架构主体层运行的进程、服务程序Mariadb、Apache、Nginx 等规则层系统预设安全策略、访问控制规则客体层文件、目录、端口、日志、套接字等被访问资源2. 四大核心组成安全上下文文件、进程自带安全标签SELinux 判定访问权限的依据访问策略系统预设规则规定进程允许 / 禁止的操作行为模式控制切换防护拦截强度适配调试、生产不同场景审计日志记录所有违规拦截行为用于故障排查溯源四、SELinux 三种工作模式Enforcing 强制模式默认生产模式直接拦截违规访问同步留存审计日志Permissive 宽容模式不阻断程序运行仅记录违规行为日志多用于故障调试Disabled 关闭模式彻底停用 SELinux 防护无任何安全拦截机制五、Mariadb 进程被 SELinux 拦截高频原因数据库数据目录安全上下文标签错乱Mariadb 进程无读写权限数据库文件、文件夹属主属组基础权限配置异常手动修改 Mariadb 数据存储路径超出系统默认策略识别范围数据库 3306 通信端口被 SELinux 端口策略拦截日志文件、socket 套接字文件安全标签不匹配实际案例迁移 Mariadb 数据目录后数据库无法启动日志提示文件访问拒绝即为典型上下文标签不匹配问题。六、SELinux 常用基础命令实操1. 查看运行状态# 查看SELinux当前工作模式与状态 sestatus2. 临时切换模式重启服务器失效# 临时关闭防护应急排查故障 setenforce 0 # 临时开启强制防护 setenforce 13. 永久修改运行模式修改配置 重启生效# 编辑SELinux主配置文件 vi /etc/selinux/config修改配置参数SELINUXdisabled # 永久关闭防护 SELINUXenforcing # 永久开启强制拦截模式 SELINUXpermissive # 永久设置仅日志记录模式修改保存后执行reboot重启系统即可生效。4. 查看安全上下文标签# 查看文件、目录安全标签 ls -Z # 查看系统进程安全标签 ps -efZ5. 修复目录安全上下文# 恢复网站目录默认安全上下文 restorecon -Rv /var/www/html # 手动指定目录为网页服务可访问标签 chcon -R -t httpd_sys_content_t /var/www/html6. 违规拦截日志排查# 查看近期SELinux拦截记录 ausearch -m avc -ts recent # 安装故障分析工具 yum install setroubleshoot -y # 自动分析日志并给出修复方案 sealert -a /var/log/audit/audit.log七、Mariadb 被 SELinux 拦截标准解决办法方案 1临时关闭防护应急调试不适合生产长期使用setenforce 0方案 2修复数据库目录上下文推荐永久合规放行# 给默认数据库目录授权Mariadb专属访问标签 chcon -R -t mysqld_db_t /var/lib/mysql # 还原目录标准安全上下文解决标签错乱问题 restorecon -R /var/lib/mysql方案 3永久关闭 SELinux仅测试环境使用降低服务器安全性编辑/etc/selinux/config设置SELINUXdisabled重启服务器生效。补充放行数据库 3306 端口端口被策略拦截无法远程连接时执行命令放行端口semanage port -a -t mysqld_port_t -p tcp 3306结尾总结SELinux 是 Linux 不可或缺的安全防护机制依托 MAC 强制校验补足传统权限的防护短板双重校验机制能有效抵御权限漏洞、恶意越权等安全风险。日常运维中服务启动异常、访问受阻大多源于安全上下文、端口策略不匹配。排查故障可先临时关闭防护定位问题正式环境优先通过修改标签、放行规则合规解决尽量不要长期关闭防护兼顾业务正常运行与服务器安全稳定。