给公网服务器看一眼 SSH 日志:24 小时 6000 多次爆破尝试,我是这样排查和加固的

举报
yd_286747025 发表于 2026/11/10 16:24:41 2026/11/10
【摘要】 服务器开在公网上,我一直知道会有人扫,但从没认真看过日志。这次顺手统计了一下,数字比想象中夸张,记录一下排查方法和加固思路。一、先看有多少人在敲门Ubuntu 24.04 上 sshd 的日志在 journal 里,服务名是 ssh:sudo journalctl -u ssh --since “24 hours ago” --no-pager | grep -c “Invalid user...

服务器开在公网上,我一直知道会有人扫,但从没认真看过日志。这次顺手统计了一下,数字比想象中夸张,记录一下排查方法和加固思路。

一、先看有多少人在敲门
Ubuntu 24.04 上 sshd 的日志在 journal 里,服务名是 ssh:

sudo journalctl -u ssh --since “24 hours ago” --no-pager | grep -c “Invalid user”

我这台 2 核 2G 的机器,过去 24 小时返回 6195。再统计被试得最多的用户名:

sudo journalctl -u ssh --since “24 hours ago” --no-pager
| grep “Invalid user”
| sed -E ‘s/.Invalid user ([^ ]) from.*/\1/’
| sort | uniq -c | sort -rn | head

结果前几名是 ubuntu(759)、user(553)、admin(512)、dell(382)、debian(200)。另外针对 root 的密码失败有 4424 次。也就是说,扫描器基本是拿常见用户名加弱口令字典在撞,不挑目标。

二、看看自己的配置有没有被撞开的可能
不要只看 /etc/ssh/sshd_config,因为还有 sshd_config.d 里的片段,直接看生效值:

sudo sshd -T | grep -E “^(passwordauthentication|permitrootlogin|pubkeyauthentication|maxauthtries)”

我这台的输出是:密码登录 yes、root 登录 yes、公钥 yes、最大尝试 6。说明默认配置下,只要密码够弱,4424 次 root 尝试里就有可能中。我自己的密码不弱,但"靠密码够强"不是个好的防线。

三、加固步骤

  1. 先确认公钥登录能用。新开一个终端测试,不要关掉现有会话:

ssh -i ~/.ssh/your_key appuser@your-server

  1. 关闭密码登录和 root 直登。在 /etc/ssh/sshd_config.d/ 下新建一个文件,比如 01-hardening.conf:

PasswordAuthentication no
PermitRootLogin no
MaxAuthTries 3

注意 sshd 对同一个选项是"先读到的生效",片段按文件名排序读取,所以名字要排在云厂商默认片段(如 50-cloud-init.conf)之前,改完用 sshd -T 验证。

  1. 改完先检查语法再重载,而不是重启:

sudo sshd -t && sudo systemctl reload ssh

  1. 装 fail2ban,对反复失败的来源临时封禁:

sudo apt install fail2ban
sudo tee /etc/fail2ban/jail.d/sshd.local <<‘EOF’
[sshd]
enabled = true
maxretry = 4
findtime = 10m
bantime = 1h
EOF
sudo systemctl restart fail2ban

Ubuntu 24.04 默认走 systemd journal,fail2ban 的 backend 设成 systemd 更稳。

四、踩坑提醒

  • 改 sshd 配置前一定留一个已登录的会话,改错了还能救。云厂商控制台的 VNC 也是后路,但要提前确认你能登。
  • 关了密码登录后,云控制台"重置密码"就不再能帮你进 SSH 了,私钥要备份好。
  • 改 SSH 端口只能减少日志噪音,不算真正的防护;真正有用的是关密码、限来源。
  • 如果安全组能只放行自己常用的出口地址,那是最省事的一层,但家里和其他网络的出口会变,要权衡。

五、小结
一台没做任何宣传的小服务器,一天也有六千多次登录尝试,说明"没人知道我的机器"这个想法不成立。排查只需要两条命令:journalctl 统计失败次数,sshd -T 看生效配置。加固三件事:公钥登录、关闭密码和 root 直登、fail2ban 兜底。顺序别反,先验证公钥,再关密码。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。