Linux安全加固教程_账户策略SELinux防护实战

16次阅读

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

Linux安全加固教程_账户策略SELinux防护实战

linux系统安全加固需从账户策略、权限控制和强制访问机制三方面入手,SELinux是其中关键一环,但不能替代基础账户管理。单纯开启SELinux而不规范用户权限、密码策略和登录控制,反而可能掩盖真实风险。

账户与认证策略必须前置落地

SELinux再严格,也无法阻止弱口令或root远程直连。加固应先完成基础账户治理:

  • 禁用默认账户(如red”>syncshutdownhalt),用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策略,而非全盘mlsstrict

  • 确认状态:sestatus 查看当前模式与策略类型
  • 临时切换:setenforce 1(enforcing)或setenforce 0(permissive),仅限测试
  • 永久生效:修改/etc/selinux/configSELINUX=enforcingSELINUXTYPE=targeted
  • 避免盲目restorecon -Rv /——它会重置所有文件上下文,可能破坏自定义服务的SELinux标签

精准修复SELinux拒绝日志,不靠盲目关闭

服务启动失败或功能异常时,先查/var/log/audit/audit.logausearch -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_tadmin_home_t,非default_t
  • 定期审计:ps -eZ查进程域,id -Z查用户上下文,sesearch -A -s httpd_t -t shadow_t验证是否意外允许Web进程访问密码文件
text=ZqhQzanResources