必须禁用root弱口令、定期更新防火墙规则、关闭SSH密码登录、为/tmp挂载noexec/nosuid选项。管理员常忽视配置与实际运行态的持续对齐,导致安全策略形同虚设。

root密码设成123456或空密码
很多管理员在初始化系统后,为图省事把 root 密码设成弱口令,甚至留空。这等于给攻击者直接开后门——只要能连上 SSH 或本地终端,就能立刻获得最高权限。
- 检查方式:
sudo grep 'root:' /etc/shadow | cut -d: -f2
若输出为*、!或为空,说明密码被锁定或未设置;若是一串短哈希(如$1$...),需用工具验证强度 - 强制启用强密码策略:安装
pam_pwquality,并在/etc/pam.d/common-password中确保有password requisite pam_pwquality.so retry=3 minlen=12 difok=3 - 更安全的做法是禁用
root密码登录,改用密钥+普通用户提权:PermitRootLogin no
加入/etc/ssh/sshd_config,再用sudo控制权限边界
firewalld或iptables规则长期不更新
刚装系统时配了一套防火墙规则,之后几年从不 review,这是典型“一次配置,永久遗忘”。新服务上线、端口变更、内网拓扑调整都会让旧规则失效甚至起反作用。
- 定期导出当前规则比对:
sudo firewall-cmd --list-all
或sudo iptables -L -n -v
,重点关注INPUT链中是否开放了22、80、443以外的端口 - 避免无条件放行内网:
source zone: internal不等于安全,内部网段若存在失陷主机,会绕过所有外网限制 - 临时调试后忘记关闭端口很常见:用
firewall-cmd --remove-port=8080/tcp --permanent清理残留,再firewall-cmd --reload
SSH默认端口22 + 密码登录长期开启
暴露 22 端口在公网等于每天接收数万次暴力破解请求。即便密码够强,高频尝试也会触发 PAM 锁定机制,反而导致合法用户被踢出。
- 改端口只是基础项,真正有效的是禁用密码登录:
PasswordAuthentication no
和PubkeyAuthentication yes
必须同时生效 - 密钥必须带密码短语(passphrase),否则私钥文件一旦泄露即等同于密码泄露
- 限制可登录用户范围比改端口更重要:
AllowUsers deploy@192.168.1.* admin@2001:db8::/64
可精确到 IP 段和用户名
/tmp 目录未挂载 noexec,nosuid
/tmp 是攻击链常用跳板:上传恶意二进制、构造 LD_PRELOAD、利用 world-writable 目录提权。默认挂载几乎都不加安全选项。
- 检查当前挂载参数:
mount | grep ' /tmp '
,若没看到noexec,nosuid,nodev就存在风险 - 临时挂载(重启失效):
sudo mount -o remount,noexec,nosuid,nodev /tmp
- 永久生效需改
/etc/fstab对应行,例如:tmpfs /tmp tmpfs defaults,noexec,nosuid,nodev,size=2G 0 0
;注意不要影响依赖/tmp写临时文件的服务(如某些 Java 应用)
实际运维中,最常被忽略的是规则与现实的脱节——比如防火墙放行了数据库端口,但应用早已迁走;或者 SSH 密钥轮换了,却忘了清理旧公钥。安全不是配完就结束的事,而是持续对齐配置与运行态的过程。










