
核心要点(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 username2. 限制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/passwd | 644 | 所有用户可读 |
| /etc/shadow | 000 | 仅root可读 |
| /etc/ssh/sshd_config | 600 | 仅root可读写 |
| /etc/crontab | 600 | 仅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)。