VPS 流量异常通常表现为入站流量突增或连接数暴涨,排查需先用监控工具确认攻击类型,再通过系统日志和网络日志定位攻击源 IP。
先说结论:排查 VPS 攻击来源需结合实时流量监控与日志分析,优先区分是网络层 DDoS 还是应用层 CC 攻击。
- 先判断:使用 iftop 或 netstat 确认是带宽占满还是连接数异常。
- 优先做:分析 Web 访问日志或系统安全日志提取高频 IP。
- 再验证:通过 tcpdump 抓包确认攻击特征后实施封禁。
命令速用版
以下命令可直接在 Linux 终端执行,用于快速定位异常流量和日志特征。
# 查看实时流量来源 IP 及带宽占用
iftop -n
# 查看特定端口(如 80)的连接数
netstat -anp | grep :80 | wc -l
# 分析 Nginx 日志中访问量前 20 的 IP
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -n 20
# 捕获 1000 个数据包用于后续分析
tcpdump -i any -c 1000 -w capture.pcap
# 查看 SSH 失败登录尝试
grep "Failed password" /var/log/auth.log为什么会这样
流量异常通常由外部攻击或内部程序异常引起,不同原因对应的日志特征和流量表现不同。
入站流量突增多为 DDoS 攻击或爬虫扫描,表现为带宽跑满;出站流量突增可能是数据泄露或挖矿木马,表现为服务器向外发送大量数据。连接数异常如 TCP 连接暴涨,通常是 SYN Flood 攻击;特定端口如 22 或 80 流量异常,则对应 SSH 暴力破解或 CC 攻击。系统日志和网络日志记录了这些活动的来源 IP、请求路径和时间戳,是定位根源的关键依据。
分步处理
按照从监控到日志再到抓包的顺序排查,确保每一步都有明确的检查点。
第一步:确认流量异常类型
登录 VPS 后,使用 top 或 htop 查看 CPU 和内存使用率是否异常高。使用 netstat -an 或 ss -tunlp 查看网络连接状态,重点关注 ESTABLISHED 状态的连接数量。如果发现大量来自不同 IP 的连接指向特定端口(如 80、443),可能是 CC 攻击或应用层 DDoS 攻击。使用 iftop 或 nethogs 监控网络带宽,确认是哪个进程占用了大量带宽。
第二步:分析系统日志和 Web 日志
系统日志位于/var/log/目录下,auth.log 或 secure 记录登录信息,messages 记录系统级事件。使用 grep "Failed password" /var/log/auth.log 查看失败的 SSH 登录尝试,判断是否存在暴力破解。对于 Web 服务器,检查 Nginx 的/var/log/nginx/access.log 或 Apache 的/var/log/apache2/access.log。当遭受 CC 攻击时,日志中会频繁出现来自大量不同 IP 的、针对动态页面的短时间高频请求。
第三步:深层流量分析
对于复杂的流量分析,借助 tcpdump 捕获网络数据包。使用 tcpdump -i any -c 1000 -w capture.pcap 捕获数据包,然后使用 Wireshark 等工具打开分析。通过分析数据包,可以识别出 SYN Flood 攻击的特征(大量 SYN 包无响应)或 UDP Flood 攻击的特征(大量 UDP 数据包发往随机端口)。
第四步:应急处置与加固
确认攻击源后,可通过防火墙限制异常 IP。若为云服务器,通过控制台启用安全组规则限制出入站流量。终止可疑进程,删除恶意定时任务,检查/etc/passwd 是否有新增异常账号。更新系统及软件补丁,修改所有用户密码,配置防火墙仅开放必要端口。
怎么验证是否生效
验证需观察流量监控数据和日志更新情况,确认异常行为已停止。
执行 iftop 或 nethogs 观察带宽占用是否恢复正常水平。再次运行 netstat -anp | grep :80 查看特定端口连接数是否下降。检查日志文件,确认不再有高频的异常 IP 请求或失败登录记录。若之前 CPU 或内存负载过高,使用 top 确认负载已回落。对于 Web 业务,观察网站访问速度和响应状态码是否恢复正常。
常见坑
排查过程中容易误操作导致证据丢失或业务中断,需注意以下风险边界。
避免直接关机,应保留内存中的攻击痕迹供取证,优先断开网络连接或切换至隔离 VLAN。不能仅凭流量跑满就推断是 DDoS,需先了解公司内部是否有促销等活动导致用户量激增。日志分析时注意区分正常爬虫和攻击流量,部分合法搜索引擎爬虫也可能导致流量升高。若日志已被清空或篡改,需依赖网络抓包或云平台流量监控数据进行回溯。
常见问题
服务器被攻击能查到具体是谁发起的吗?
通常只能查到攻击来源 IP,难以直接定位到具体个人。
通过分析流量日志可以找到攻击流量的来源 IP 和目标端口,但攻击者常使用代理或肉鸡,公开资料中没有看到可靠的量化数据能直接通过 IP 锁定现实身份,需配合执法部门调取运营商数据。
日志被删除了还能排查吗?
本地日志删除后恢复难度大,需依赖外部监控或残留痕迹。
若系统日志被清空,可检查云平台监控记录、数据库日志或备份文件。使用 last 命令查看用户登录历史记录,或通过~/.bash_history 查看历史命令执行记录,寻找入侵线索。
如何区分是攻击还是业务高峰?
需结合业务场景和日志特征进行判断。
先了解公司内部是否有进行某种促销或者其他类型活动,导致用户量激增。检查不同的 URL 访问量比例,若平时是 1:1 出问题的时候变成 4:1,可能定位到出问题的项目。攻击流量通常 UserAgent 异常或 IP 分布不合理,正常业务高峰 IP 和 userAgent 相对正常。
参考来源
- 树叶云 - VPS IP 遭攻击,如何查攻击源与原因?
- 网硕互联 - 服务器被 DDOS 攻击了,可以查到是谁发起攻击的吗?
- 云服务器流量异常排查详解
- 服务器遭到入侵后的排查与应对
- 网站异常了,日志要怎么看? - wang# - 博客园
- 服务器被入侵怎么查找入侵痕迹,该如何保护主机安全?
- 服务器遭受攻击如何处理 (记录排查)
- 网站服务器安全:排查入侵痕迹与预防措施