




刚装好的Linux服务器必须立刻改root密码,因其默认密码或空密码是自动化扫描工具的首要突破口;应使用sudo passwd root设置强密码或sudo passwd -l root锁定账户,并确保/etc/ssh/sshd_config中PermitRootLogin为no。
默认 root 密码或空密码是自动化扫描工具的首要突破口,ssh 暴力破解日志里 Failed password for root 出现频率远高于普通用户。不改密码等于把门锁换成插销。
sudo passwd root 启用并设置强密码(至少 12 位,含大小写字母、数字、符号)sudo passwd -l root 锁定账户,后续用 sudo 提权/etc/ssh/sshd_config 中 PermitRootLogin 是否设为 no,改完执行 sudo systemctl restart sshd
攻击者常通过未授权开放的端口(如 23/tcp telnet、21/tcp ftp、6379/tcp redis 默认端口)横向渗透。别
只看“有没有防火墙”,先确认“开了什么”。
sudo ss -tuln 查看所有监听端口,重点关注非标准端口和 0.0.0.0: 绑定项sudo lsof -i : 查进程名,确认是否为必要服务(如 nginx、postgres)vsftpd 但实际不用 FTP,执行 sudo systemctl stop vsftpd && sudo systemctl disable vsftpd
lastb 只记录失败登录且依赖 btmp 文件,而很多系统默认不启用或被清空;faillog 仅针对 PAM 记录,漏掉 SSH 协议层拒绝(如密钥不匹配)。真正有效的日志在 systemd-journald 里。
sudo journalctl -u sshd --since "2 hours ago" | grep -E "(Accepted|Failed|Invalid)"
sudo journalctl -u sshd --since "1 day ago" | grep "Failed password" | awk '{print $11}' | sort | uniq -c | sort -nr | head -10
/var/log/journal 已启用持久化(Storage=persistent 在 /etc/systemd/journald.conf 中)ufw 是 iptables 封装,但规则按添加顺序匹配,ufw deny from 192.168.1.100 如果加在 ufw allow 22 之后,攻击者仍能连上 SSH——因为允许规则已先命中。
sudo ufw default deny incoming,再逐条添加 allow
sudo ufw insert 1 deny from 203.0.113.45 插入第一条,不能用 ufw deny
sudo ufw allow 443/tcp,避免 ufw allow 443 同时放行 UDP(可能被滥用)sudo ufw status numbered # 看编号后,用 insert 调整顺序,比删了重加更安全
关键不是规则多,而是每条规则是否真在生效。很多“已配置防火墙”的服务器被攻破,问题出在 ufw status 显示 active,但 sudo ufw status verbose 里看到 Default: deny (incoming) 下面跟着一条没写协议的 allow 22 —— 它放行了所有发往 22 端口的 UDP 包。