Linux主机安全加固12步清单:从账号权限到日志审计实战 核心要点图解,禁用root远程登录并限制su,是阻断暴力破解的第一步。;使用firewalld或ufw只放行必要端口,默认拒绝入站。;关键文件权限应设为644以下,敏感目录如/etc/shadow为000。;启用auditd并集中日志,确保入侵行为可追溯。
Linux主机安全加固12步清单:从账号权限到日志审计实战 · 核心要点一图读懂(AegisX)

核心要点(TL;DR)

  • 禁用root远程登录并限制su,是阻断暴力破解的第一步。
  • 使用firewalld或ufw只放行必要端口,默认拒绝入站。
  • 关键文件权限应设为644以下,敏感目录如/etc/shadow为000。
  • 启用auditd并集中日志,确保入侵行为可追溯。

为什么你的Linux主机总成为攻击目标?

很多运维人员认为Linux天生安全,但默认配置往往存在弱口令、开放端口、权限过宽等问题。攻击者利用这些漏洞植入挖矿、勒索软件,导致业务中断和数据泄露。本文提供一份可落地的12步安全加固清单,涵盖账号权限、SSH、防火墙、文件权限和日志审计,每步附具体命令,助你快速提升主机安全基线。

步骤1-3:账号与权限加固

1. 清理无用账号与空口令

检查并锁定不必要的系统账号,确保无空口令账号。

# 查看可登录账号
awk -F: '!~/nologin|false/{print }' /etc/passwd
# 检查空口令账号
awk -F: '(==""){print }' /etc/shadow
# 锁定账号
usermod -L username

2. 限制su与sudo权限

禁止普通用户通过su切换root,仅允许wheel组使用su。

# 编辑/etc/pam.d/su,启用pam_wheel.so
 auth required pam_wheel.so use_uid
# 将用户加入wheel组
usermod -aG wheel username

同时,精细配置sudo权限,避免ALL=(ALL) NOPASSWD。

3. 强化密码策略

使用pam_cracklib强制密码复杂度,并设置过期时间。

# 安装pam_cracklib(Debian系为libpam-cracklib)
yum install pam_cracklib
# 编辑/etc/pam.d/system-auth,添加:
password requisite pam_cracklib.so retry=3 minlen=10 difok=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
# 设置密码有效期
chage -M 90 username

步骤4-6:SSH与网络服务加固

4. SSH安全配置

修改/etc/ssh/sshd_config,禁用root登录、使用密钥认证、限制用户。

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
AllowUsers deploy admin
Port 2222
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2

重启sshd:systemctl restart sshd。注意先测试密钥登录再禁用密码。

5. 防火墙最小化开放端口

使用firewalld或ufw,默认拒绝入站,仅放行必要端口。

# firewalld示例
firewall-cmd --permanent --add-service=ssh
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
# 查看开放端口
firewall-cmd --list-all

对于SSH,可限制源IP:firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.0/8" port port="22" protocol="tcp" accept'。

6. 关闭不必要的服务

列出监听端口,停用非必需服务。

ss -tulnp
systemctl disable --now telnet.socket rsh.socket

步骤7-9:文件系统与权限控制

7. 关键文件权限设置

确保敏感文件权限最小化。

文件建议权限说明
/etc/passwd644所有用户可读
/etc/shadow000仅root可读
/etc/ssh/sshd_config600仅root可读写
/etc/crontab600仅root可读写

使用chmod和chown修正,并定期用find / -perm -o+w查找全局可写文件。

8. 启用文件完整性监控

使用AIDE或Tripwire监控关键文件变化。

yum install aide
aide --init
aide --check

将检查结果发送到监控系统。

9. 挂载选项加固

为/tmp、/var/tmp等目录添加noexec、nosuid、nodev选项。

# /etc/fstab示例
tmpfs /tmp tmpfs defaults,noexec,nosuid,nodev 0 0

重新挂载:mount -o remount /tmp。

步骤10-12:日志审计与入侵检测

10. 配置系统日志与远程备份

确保rsyslog运行,并将日志发送到远程服务器。

# /etc/rsyslog.conf添加:
*.* @logserver:514
systemctl restart rsyslog

关键日志:/var/log/secure、/var/log/auth.log、/var/log/syslog。

11. 启用auditd审计关键操作

监控文件修改、命令执行等。

# 监控/etc/passwd修改
 auditctl -w /etc/passwd -p wa -k passwd_changes
# 监控execve系统调用
auditctl -a always,exit -F arch=b64 -S execve -k exec_commands

规则持久化到/etc/audit/rules.d/。

12. 部署入侵检测与防暴力破解

安装fail2ban防止SSH爆破,使用rkhunter扫描rootkit。

yum install fail2ban
systemctl enable --now fail2ban
# 配置/etc/fail2ban/jail.local
[sshd]
enabled = true
maxretry = 3
bantime = 3600

定期运行rkhunter --check。

行动建议:立即执行并定期复查

建议将上述12步形成检查清单,每季度复查一次。在防护建议方面,可结合AegisX的主机安全能力,实现基线自动核查与实时入侵检测,减少手工运维成本。安全加固非一劳永逸,持续监控与更新才能有效抵御威胁。

常见问题(FAQ)

如何快速检查Linux主机是否存在弱密码账号?

使用命令 `awk -F: '(==""){print }' /etc/shadow` 检查空密码账号,再用 `john` 或 `hydra` 对/etc/shadow进行离线破解测试。同时,强制密码复杂度策略(如pam_cracklib)并定期更换密码。

SSH加固有哪些必做项?

必做项包括:禁用root直接登录(PermitRootLogin no)、修改默认端口、使用密钥认证并禁用密码登录(PasswordAuthentication no)、限制可登录用户(AllowUsers)、启用fail2ban防暴力破解。修改后重启sshd服务生效。

如何配置防火墙只允许特定IP访问SSH?

使用firewalld:`firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="22" protocol="tcp" accept'`,然后重载防火墙。或使用ufw:`ufw allow from 192.168.1.0/24 to any port 22`。

日志审计需要关注哪些关键文件?

关键日志包括:/var/log/secure(认证日志)、/var/log/auth.log(Debian系)、/var/log/syslog、/var/log/audit/audit.log(auditd)。建议使用rsyslog或filebeat将日志集中到远程服务器,防止本地被清除。

如何检测Linux主机是否被植入后门?

定期检查crontab(`crontab -l`和/etc/cron.*)、异常进程(`ps aux`)、开放端口(`netstat -tulnp`)、SUID文件(`find / -perm -4000 -type f`),并使用rkhunter或chkrootkit扫描。同时监控文件完整性(如AIDE)。