Linux安全加固须先落实账户策略(禁用默认账户、强密码、禁root远程、登录锁定),再配置SELinux(enforcing+targeted模式),精准修复AVC拒绝日志,协同实现最小权限纵深防御。

Linux系统安全加固需从账户策略、权限控制和强制访问机制三方面入手,SELinux是其中关键一环,但不能替代基础账户管理。单纯开启SELinux而不规范用户权限、密码策略和登录控制,反而可能掩盖真实风险。
账户与认证策略必须前置落地
SELinux再严格,也无法阻止弱口令或root远程直连。加固应先完成基础账户治理:
- 禁用默认账户(如red">sync、shutdown、halt),用
usermod -L锁定或passwd -l锁死密码 - 强制密码复杂度:编辑/etc/pam.d/common-password,添加
password [success=1 default=ignore] pam_pwquality.so retry=3 minlen=10 difok=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1 - 限制root远程登录:在/etc/ssh/sshd_config中设
PermitRootLogin no,并重启sshd - 设置登录失败锁定:启用
pam_faillock.so,5次失败后锁定300秒,记录于/var/log/faillog
SELinux运行模式与策略选择要匹配场景
SELinux不是“开就安全”,错误配置会导致服务异常甚至系统不可用。生产环境推荐使用enforcing模式配合targeted策略,而非全盘mls或strict:
- 确认状态:
sestatus查看当前模式与策略类型 - 临时切换:
setenforce 1(enforcing)或setenforce 0(permissive),仅限测试 - 永久生效:修改/etc/selinux/config中
SELINUX=enforcing和SELINUXTYPE=targeted - 避免盲目
restorecon -Rv /——它会重置所有文件上下文,可能破坏自定义服务的SELinux标签
精准修复SELinux拒绝日志,不靠盲目关闭
服务启动失败或功能异常时,先查/var/log/audit/audit.log或ausearch -m avc -ts recent | audit2why,定位具体拒绝原因:
- 常见误报:Web服务无法绑定端口,实际是端口未在SELinux端口上下文中注册,执行
semanage port -a -t http_port_t -p tcp 8080 - 文件访问被拒:确认进程域(如
httpd_t)是否有权读取目标文件,用ls -Z查文件上下文,用semanage fcontext -a -t httpd_sys_content_t "/srv/www(/.*)?"添加规则,再restorecon -Rv /srv/www - 慎用
setsebool -P httpd_can_network_connect 1类布尔值——仅在明确需要时开启,且加-P持久化前先验证效果
最小权限原则贯穿账户与SELinux协同设计
账户策略管“谁可以操作”,SELinux管“以什么身份能做什么”。两者叠加才能实现纵深防御:
- 为运维脚本创建专用系统用户(如bkpuser),禁用shell登录(
/sbin/nologin),仅赋予所需目录的sudo命令白名单 - 为该用户指定SELinux用户角色,如
semanage user -a -R "staff_r" -r s0 bkpuser_u,使其无法进入sysadm_r等高权限角色 - 敏感目录(如/etc/shadow、/root)确保其SELinux类型为
shadow_t或admin_home_t,非default_t - 定期审计:
ps -eZ查进程域,id -Z查用户上下文,sesearch -A -s httpd_t -t shadow_t验证是否意外允许Web进程访问密码文件










