1. SELinux基础认知
SELinux(Security-Enhanced Linux)是美国国家安全局(NSA)开发的内核安全模块,通过**强制访问控制(MAC)**机制限制进程与系统资源的交互,即使进程被攻破,也能有效降低损害范围。其核心组件包括:
用户:角色:类型:级别),是SELinux实施访问控制的基础;targeted策略(针对常见服务,如Apache、MySQL);Enforcing(强制执行,违反规则拒绝操作并记录)、Permissive(宽容模式,仅记录违规不阻止)、Disabled(完全关闭SELinux)。2. 环境准备与状态管理
sestatus(详细状态,包括模式、策略名称)或getenforce(仅当前模式)命令,确认SELinux是否启用及运行模式;sudo setenforce 1(Enforcing)、sudo setenforce 0(Permissive)(立即生效,重启失效);/etc/selinux/config文件,将SELINUX=后的值改为enforcing/permissive/disabled,重启系统生效。Enforcing模式,仅在调试时切换至Permissive。3. 核心操作技能掌握
ls -Z(如ls -Z /var/www/html);ps -Z(如ps -Z | grep httpd);id -Z(如unconfined_t表示不受限用户)。sudo chcon -t 类型 文件路径(如sudo chcon -t httpd_sys_content_t /var/www/html/index.html);semanage fcontext添加规则:sudo semanage fcontext -a -t 类型 "文件路径正则"(如sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?");sudo restorecon -Rv 文件路径(递归恢复目录)。getsebool -a;getsebool 布尔名(如getsebool httpd_can_network_connect);setsebool 布尔名 值(1=开启,0=关闭);-P参数(如sudo setsebool -P httpd_can_network_connect 1)。4. 日志分析与故障排查
/var/log/audit/audit.log,可使用ausearch命令过滤AVC(访问控制违规)事件:sudo ausearch -m avc -ts recent;audit2allow工具将日志中的违规信息转换为策略模块:
sudo ausearch -m avc -ts recent | audit2why(分析违规原因);sudo ausearch -c '进程名' --raw | audit2allow -M 策略名(如sudo ausearch -c 'httpd' --raw | audit2allow -M my_httpd_policy);sudo semodule -i 策略名.pp(如sudo semodule -i my_httpd_policy.pp)。5. 实战案例练习
http_port_t类型:sudo semanage port -a -t http_port_t -p tcp 8080;/etc/httpd/conf/httpd.conf),将Listen 80改为Listen 8080;sudo systemctl restart httpd。ls -Z /var/www/html/wp-content/uploads(通常为httpd_sys_content_t);sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/wp-content/uploads(/.*)?";sudo restorecon -Rv /var/www/html/wp-content/uploads。shadow文件上下文:ls -Z /etc/shadow(应为shadow_t);chcon -t shadow_t /etc/shadow临时修复,或通过semanage fcontext永久修改。6. 进阶学习方向
semanage user管理SELinux用户(如user_u、staff_u),实现更严格的身份隔离;seinfo分析策略复杂度,移除不必要的规则,降低SELinux对系统性能的影响;