挂在公网上的服务器,每天被扫几百次很正常。真正需要紧张的是"有没有登录成功"。这份流程按顺序做,别一上来就慌着重装。
第一步:先看日志,判断性质
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 访问日志当成唯一证据:攻击者最常做的一步就是清日志。所以日志最好实时同步一份到别处。
第四步:如果已经进了
- 先断网保留现场,别急着重启
- 导出日志、进程列表、定时任务、以及可疑目录的清单
- 改所有相关密码与密钥(数据库、面板、SSH)
- 检查有没有新增用户、有没有定时任务与自启项被改过
- 说不清被改了什么,就重装 —— 从干净镜像重建比"清理"更快更彻底
日常的三个习惯
- 面板类软件(宝塔、Kangle 等)重点确认"有没有暴露到公网"
- 定期看"最近登录"与"定时任务"
- 重要数据每天自动备份到站外