ECS 被用作 DDoS 攻击跳板(Bastion Host)是云安全中非常典型且棘手的问题。一旦中招,不仅你的实例会被封禁、产生高额流量费,甚至可能牵连到你的账号安全或业务信誉。
排查的核心逻辑只有一条:确认异常流量的来源、去向和协议特征。不要凭感觉猜,要用数据说话。以下是基于 Linux 系统(主流云服务器 OS)的实战排查步骤,按优先级从高到低排列。
第一步:快速定位“谁在发疯”(实时流量监控)
如果攻击正在进行中,你需要立刻找到占用带宽最高的进程或连接。
-
查看当前网络连接状态
使用netstat或更强大的ss命令。重点关注ESTABLISHED状态下的连接,尤其是那些发送数据量巨大但接收数据极少的连接。# 查看 TCP 连接数最多的 IP(排除本地回环和本地服务) ss -tna | grep ESTAB | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head -20- 判断依据:如果发现大量连接到陌生的海外 IP,或者连接到已知的恶意 IP 段,且这些连接并非你业务所必需的,那就是嫌疑对象。
-
定位具体进程
找到可疑 IP 后,需要知道是哪个 PID(进程 ID)在发起连接。# 假设可疑 IP 为 1.2.3.4,查找对应的 PID lsof -i :80 -i :443 -i @1.2.3.4 # 根据端口调整 # 或者直接使用 ss 配合 ps ss -tunap | grep '1.2.3.4'拿到 PID 后,通过
/proc/<PID>/exe查看可执行文件路径,或者用ps aux | grep <PID>看启动参数。这能帮你判断是正常业务进程被劫持,还是恶意脚本在运行。 -
实时监控带宽消耗
使用iftop或nethogs。iftop:按 IP 显示带宽占用,适合看哪个外部 IP 在吃满你的上行带宽。nethogs:按进程显示带宽占用,适合直接揪出是哪个程序在疯狂发包。
yum install nethogs -y nethogs eth0 # 假设网卡名为 eth0
第二步:回溯历史行为(日志分析)
如果攻击已经停止,或者你想找出漏洞根源,必须看日志。
-
系统日志(/var/log/messages 或 journalctl)
重点搜索kernel、firewalld、iptables相关的报错。有时内核会因为数据包过大而丢弃,留下记录。 -
应用日志(Nginx/Apache/Tomcat 等)
如果你的 Web 服务日志中出现大量异常的 POST 请求、User-Agent 为空或乱码、或者来自同一 IP 的高频短连接,可能是应用层被利用作为反射源。 -
关键:检查 crontab 和 systemd 服务
黑客入侵后,通常会留下后门以维持持久化。这是排查的重中之重。# 检查所有用户的定时任务 crontab -l ls -la /etc/cron.d/ /var/spool/cron/ # 检查是否有新增的系统服务 systemctl list-units --type=service --state=active | grep -v "systemd" # 重点检查最近修改的服务文件 find /etc/systemd/system -mtime -7- 警惕点:寻找名称伪装成系统服务的恶意脚本(如
kworker.sh、update-service等),或者指向/tmp下可执行文件的 Service。
- 警惕点:寻找名称伪装成系统服务的恶意脚本(如
-
检查 SSH 登录日志
lastb | head -20 # 失败的登录尝试 cat /var/log/secure | grep "Accepted publickey"如果你发现陌生 IP 成功登录了 root 或有 sudo 权限的用户,说明服务器已被渗透,DDoS 只是结果而非原因。
第三步:深度排查隐藏后门(进阶)
如果常规手段找不到问题,可能需要更深入的分析。
-
检查网络路由和 ARP 表
ip route show arp -a确保没有异常的路由规则将流量重定向到恶意网关。
-
扫描隐藏进程(Rootkit 检测)
有些恶意软件会隐藏进程,ps命令看不到。可以使用chkrootkit或rkhunter。yum install chkrootkit -y chkrootkit -
检查 iptables/nftables 规则
有时候,防火墙规则被篡改,允许特定流量通过或屏蔽了你的报警流量。iptables -L -n -v # 注意观察 REJECT 或 ACCEPT 规则中是否有异常的目标 IP
第四步:处置与加固
找到问题后,不要急着重启,按以下步骤操作:
- 隔离:立即断开 ECS 的网络连接(在阿里云控制台点击“停止实例”或“卸载弹性网卡”),防止继续向外发包导致账号被封。
- 取证:对磁盘镜像进行快照备份,保留现场供后续深入分析或报案使用。
- 清理:
- 终止恶意进程。
- 删除恶意脚本、后门文件和异常 Cron 任务。
- 重置所有用户密码(特别是 root)。
- 更新系统和软件补丁。
- 重装:对于生产环境,最稳妥的方式是使用干净的镜像重新创建实例,并将数据迁移过去。因为 Rootkit 很难彻底清除,残留后门风险极高。
- 防护:
- 开启云盾安骑士(云安全中心),设置基线检查和病毒查杀。
- 配置安全组,仅开放必要端口,限制源 IP。
- 启用 SSH 密钥登录,禁用密码登录。
- 部署 WAF(Web 应用防火墙)防护应用层攻击。
常见诱因自查
- 弱口令:SSH 或数据库密码是否过于简单?
- 未打补丁:是否存在已知的高危漏洞(如 Log4j2、Struts2 等)?
- 暴露高危端口:Redis、MongoDB、MySQL 等是否直接暴露在公网且无认证?
- 开发测试机:是否有长期闲置的开发机被遗忘,成为攻击者的“肉鸡”?
总结
排查 DDoS 跳板问题的关键在于“先止血,再溯源”。不要试图在不隔离的情况下在线调试,否则你可能正在帮助攻击者完成他们的攻击链。利用 ss、nethogs 快速定位异常,通过 crontab 和 systemd 追踪持久化机制,最后务必通过重装系统来彻底净化环境。
云技术博客