跳转到主要内容

Linux 主机安全加固:构建防御纵深的基石

博主
1 分钟
191 字
--

在公有云环境下,虽然厂商提供了安全组和 DDoS 防护,但主机本身的安全(Host Security)依然是用户的责任。一旦攻击者突破边界防火墙,裸奔的 Linux 主机就是待宰的羔羊。

本文整理了一份标准化的 Linux 主机安全加固清单(Hardening Checklist),适用于生产环境的初始化配置。

1. 账户与认证安全

身份认证是第一道大门。

1.1 SSH 强化配置

修改 /etc/ssh/sshd_config

  • 禁止 Root 登录: PermitRootLogin no。强制使用普通用户登录后 sudo
  • 禁用密码认证: PasswordAuthentication no。仅允许 SSH Key 密钥认证,彻底杜绝暴力破解。
  • 修改默认端口: 将 Port 22 修改为高位端口(如 22222),减少扫描噪音(虽然不能防定点攻击,但能防脚本小子)。
  • 限制重试次数: MaxAuthTries 3

1.2 密码策略

虽然禁用了 SSH 密码登录,但本地 sudo 仍需密码。使用 pam_pwquality 模块强制复杂度:

  • 最小长度 12 位。
  • 必须包含大小写字母、数字和特殊符号。
  • 定期轮换(例如 90 天)。

2. 最小权限原则

2.1 Sudo 权限控制

不要给所有人都配置 ALL=(ALL) NOPASSWD: ALL

  • 精细化授权: 只给开发人员开启特定命令的 sudo 权限(如重启服务、查看日志),禁止 suvisudo
  • 审计: 所有的 sudo 操作都会记录在 /var/log/secure/var/log/auth.log 中,必须接入日志审计系统。

2.2 文件系统权限

  • UMASK: 设置默认 umask 027,确保新建文件对“其他组”不可写。
  • SUID/SGID: 查找并移除不必要的 SUID 程序(如 ping, mount 如果业务不需要)。这些程序以 root 权限运行,若有漏洞极易提权。
    find / -type f -perm -4000 -o -perm -2000
    

3. 网络与服务加固

3.1 最小化服务

  • 关闭不必要的端口: 使用 netstat -tulpn 检查。停用 Postfix (25), RPC (111) 等非业务必须服务。
  • 本地监听: 对于仅供本机使用的服务(如 Redis, MongoDB),配置 bind 127.0.0.1,防止监听 0.0.0.0 暴露到外网。

3.2 主机防火墙 (Iptables/Firewalld)

即使有云安全组,主机防火墙也是必要的第二道防线(Defense in Depth)。

  • 默认策略设置为 DROP
  • 仅放行已知的业务端口和管理端口。
  • 配置连接频率限制(Rate Limit)防止 DoS。

4. 入侵检测与审计

4.1 关键文件完整性 (AIDE)

使用 AIDE (Advanced Intrusion Detection Environment) 监控 /bin, /sbin, /etc 等目录。一旦系统文件被篡改(如被植入 Rootkit),立即告警。

4.2 历史命令记录

黑客入侵后通常会清除 ~/.bash_history

  • 加固: 设置 HISTCONTROL=ignoredups,增加 HISTSIZE
  • 实时传输: 使用 PROMPT_COMMAND 将操作实时通过 Syslog 发送到远程日志服务器,防止本地痕迹被抹除。
export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"'

5. 总结

安全加固没有终点,它是一个持续对抗的过程。除了上述配置,及时修补内核漏洞(Kernel Patching)同样重要。建议建立自动化的基线扫描机制(如使用 OpenSCAP 或 CIS Benchmark),定期检查所有服务器的合规性,确保安全策略不随时间漂移。

分享文章