挂在公网上的服务器,每天被扫几百次很正常。真正需要紧张的是"有没有登录成功"。这份流程按顺序做,别一上来就慌着重装。

第一步:先看日志,判断性质

last -20                 # 最近的登录记录
lastb -20                # 失败的登录尝试
grep -i "failed" /var/log/auth.log | tail -50

要区分三种情况:

  • 只有扫描和失败尝试 → 收紧入口即可,不必恐慌
  • 失败尝试集中来自某个 IP → 封掉这个 IP
  • 出现了成功的陌生登录 → 按事故处理,见第四步

第二步:收紧入口

  • 密码登录改成密钥登录,禁用 root 直接登录
  • 改 SSH 默认端口只是减少噪音,不是安全措施
  • 用 fail2ban 之类的工具自动封禁多次失败的 IP

第三步:封 IP 与限流

iptables -I INPUT -s 203.0.113.9 -j DROP   # 临时封禁,重启失效
iptables -L INPUT -n --line-numbers        # 查看当前规则

别把 Web 访问日志当成唯一证据:攻击者最常做的一步就是清日志。所以日志最好实时同步一份到别处。

第四步:如果已经进了

  1. 先断网保留现场,别急着重启
  2. 导出日志、进程列表、定时任务、以及可疑目录的清单
  3. 改所有相关密码与密钥(数据库、面板、SSH)
  4. 检查有没有新增用户、有没有定时任务与自启项被改过
  5. 说不清被改了什么,就重装 —— 从干净镜像重建比"清理"更快更彻底

日常的三个习惯

  • 面板类软件(宝塔、Kangle 等)重点确认"有没有暴露到公网"
  • 定期看"最近登录"与"定时任务"
  • 重要数据每天自动备份到站外