快速识别默认账户和弱密码需筛/etc/shadow中非锁定用户,检查root等高危账户状态;SSH须禁用密码登录、限制root直登;禁用非必要自启服务并正确mask;加固脚本需适配系统差异,操作前备份且验证依赖。

如何快速识别出厂默认账户和弱密码
Linux服务器刚上架时,root密码常为厂商预设(如admin、password或空口令),/etc/shadow中部分账户可能未锁死。不查清这些,等于留着后门。
- 用
sudo awk -F: '$2 != "*" && $2 != "!" {print $1}' /etc/shadow筛出密码非锁定的用户 - 重点检查
root、admin、oracle、mysql等常见服务账户——它们常被预置且未改密 -
passwd -S查看各账户状态,若显示PW而非LK,说明密码可用;NP表示无密码,极度危险 - 别只扫
/etc/passwd,有些厂商把默认账户藏在/etc/shadow-或/opt/xxx/conf/users.cfg里
SSH默认配置有哪些必须改的项
OpenSSH出厂配置普遍开启PasswordAuthentication yes和PermitRootLogin yes,这是暴力破解主入口。改错参数反而会导致SSH连接中断,务必同步验证。
- 禁用密码登录前,先确认
PubkeyAuthentication yes已生效,且公钥已写入~/.ssh/authorized_keys - 把
PermitRootLogin从yes改为prohibit-password(允许密钥但禁止密码直登root),比no更稳妥 - 删掉
AllowUsers或AllowGroups的默认注释行——它们一旦启用但没配具体用户,会直接锁死所有登录 -
ClientAliveInterval 300和ClientAliveCountMax 2建议加上,防长连接僵死占用资源
systemd服务自启项里藏着哪些隐蔽风险
厂商预装的监控工具、诊断服务、Web管理界面(如webmin、cockpit)常默认开机启动,端口暴露+权限过高,是横向移动跳板。
- 运行
systemctl list-unit-files --state=enabled,重点关注非系统核心服务:比如snmpd、telnetd、vsftpd、httpd(尤其带setup或demo字样的) - 用
ss -tlnp | grep :80或ss -tlnp | grep :443确认哪些进程真在监听,避免误关“配置启用但实际未跑”的服务 - 禁用服务后务必执行
systemctl daemon-reload,否则下次重启仍会拉起 - 别用
systemctl disable xxx.service直接删软链——某些OEM服务依赖WantedBy=multi-user.target,该命令会破坏依赖关系,应改用systemctl mask xxx.service
加固脚本执行前最易忽略的兼容性断点
一键加固脚本不是万能胶,CentOS 7/8、Ubuntu 20.04/22.04、AlmaLinux 9对firewalld、auditd、sysctl.conf路径和参数支持差异极大,硬套会触发服务异常。
- 检查
/etc/sysctl.conf是否被拆成/etc/sysctl.d/*.conf(RHEL8+默认),直接覆盖主文件会导致子配置失效 -
ufw在CentOS系默认不存在,脚本若调用ufw enable会报command not found,需先判断which ufw或systemctl is-active firewalld - 审计规则写入
/etc/audit/rules.d/后,必须augenrules --load才生效,仅systemctl restart auditd不够 - 所有修改前加
cp -a /etc/{ssh,systemd,sysctl.conf} /root/backup-$(date +%F),别信“脚本自带备份”——多数开源加固脚本压根没这行
真正卡住人的从来不是哪条命令不会敲,而是改完sshd_config忘了开新终端测试就退出,或者mask了关键服务却没留意systemctl list-dependencies里的隐式依赖。










