在服务器遭受DDoS攻击时,第一时间精准定位攻击源IP是实施防御策略的关键前提。核心结论是:通过结合系统网络连接状态分析(如netstat/ss命令)、实时流量抓包(如tcpdump)以及Web服务器访问日志审计,可以高效识别并锁定异常IP地址。 这一过程要求运维人员具备对TCP/IP协议栈的深刻理解,并能够从海量数据中快速筛选出高频连接或异常流量特征,为后续的防火墙策略配置或高防服务接入提供准确的数据支撑。

系统级连接状态分析:快速定位高频连接IP
当服务器遭遇SYN Flood、ACK Flood等基于传输层的攻击时,系统网络连接表会迅速膨胀,利用系统自带的网络统计工具是排查的第一步。
使用netstat或ss命令筛选异常IP是运维中最基础且有效的方法,在攻击发生期间,攻击者通常会建立大量半开连接(SYN_RECEIVED)或保持大量ESTABLISHED连接,通过执行netstat -ant | grep SYN_RECV | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr,管理员可以立即看到处于SYN_RECV状态的IP及其连接数量,如果某个IP或某个IP段发起了数以万计的连接,这无疑是攻击源,同理,对于ESTABLISHED状态的连接,若单个IP的连接数远超正常业务阈值(例如超过100),则极有可能是CC攻击或连接耗尽攻击。
值得注意的是,现代Linux系统中,ss命令比netstat更高效,因为它直接从内核读取数据,在遭受高并发攻击导致系统负载极高时,ss -ant的响应速度远快于netstat,能够更快地输出结果,争取宝贵的防御时间。
实时流量抓包与协议分析:深度解析攻击特征
仅依靠连接数有时无法完全识别复杂的攻击行为,特别是UDP Flood或ICMP Flood等不建立连接的攻击。使用tcpdump进行实时抓包分析是必要的手段。
通过tcpdump -i eth0 -nn命令,管理员可以实时查看到达网卡的数据包,为了过滤出攻击流量,可以结合特定端口或协议进行抓取,如果发现服务器响应极慢,且带宽占用异常高,可以通过tcpdump -i eth0 -nn 'tcp[tcpflags] & tcp-syn != 0'来捕获大量的SYN包,如果抓包结果显示大量来自不同IP但数据包载荷高度相似的数据包,或者指向同一个非业务端口的UDP流量,这通常意味着僵尸网络正在发动攻击。

独立见解在于分析TTL值和ID特征,专业的运维人员会检查抓包文件中的TTL(Time To Live)值,如果大量来自不同IP的攻击包TTL值完全相同,这往往是伪造源IP的特征,因为真实的网络路径千差万别,TTL值不可能一致,这种技术细节的判断能帮助区分是真实IP的攻击还是反射放大攻击。
Web服务器日志审计:精准打击应用层攻击
针对HTTP GET/POST Flood(CC攻击),攻击者通常会模拟浏览器行为,使得连接数看起来并不异常,但请求频率极高。分析Nginx或Apache的访问日志(access.log)是应对此类攻击的核心手段。
通过编写awk或脚本分析日志,可以统计单位时间内(如每分钟)单个IP的请求次数,执行awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -n 20,即可列出访问量最高的20个IP,在CC攻击中,这些IP往往请求的是同一个动态URL(如登录页、数据库查询接口),且User-Agent可能高度一致。
专业的解决方案包括对日志进行“指纹识别”,不仅要看IP频率,还要看请求的URL特征,如果大量IP集中请求某个特定的接口,或者User-Agent为空、包含特定脚本特征,这些IP即使连接数不多,也应被判定为恶意IP,应在Web服务器配置层(如Nginx的limit_req_zone模块)直接对这些特征进行拦截,而不仅仅是封禁IP,因为攻击者可能会动态更换IP池。
带宽监控与流量清洗:验证与防御的闭环
在确认攻击IP后,必须结合iftop或nload等工具监控带宽占用情况,DDoS攻击的最终目的是耗尽带宽,如果发现某个特定IP占用了服务器出口带宽的绝大部分,那么直接在网关或防火墙处Drop该IP是立竿见影的手段。

面对分布式反射攻击(如NTP反射、DNS反射),源IP通常是伪造的受害者IP。盲目封禁源IP会导致误伤,正确的做法是通过抓包分析发现攻击流量的特征(如特定的源端口53),然后在防火墙上游运营商处进行流量清洗,或者配置服务器丢弃特定源端口的数据包,这体现了E-E-A-T原则中的权威性与专业性不仅要会查,更要懂防御的边界与策略。
相关问答
Q1:如果攻击者使用了代理或CDN,如何获取真实攻击IP?
A:这种情况在CC攻击中非常常见,如果服务器前端有CDN或反向代理,Web日志中记录的往往是CDN节点的IP,此时需要检查HTTP头信息,寻找X-Forwarded-For (XFF) 或 CF-Connecting-IP 等字段,通过配置Web服务器记录这些真实IP字段,或者利用ModSecurity等WAF模块解析XFF头,可以追溯到真实的源IP,但需注意,攻击者也可能伪造XFF头,因此需要结合IP信誉库和请求行为特征进行交叉验证。
Q2:服务器已经卡死无法输入命令,该如何查看DDoS攻击IP?
A:当系统负载极高导致无法交互登录时,远程排查已无意义,专业的做法是立即登录云服务商的控制台,查看“流量监控”或“安全组日志”面板,大多数云厂商(如阿里云、AWS)在后台层面会记录流入流出的流量峰值和Top IP,应考虑重启服务器进入救援模式(Rescue Mode),挂载磁盘后分析离线日志,或者在攻击发生前就部署好自动化脚本,将异常连接数据实时推送到远程监控服务器,以便在宕机时也能获取最后的现场数据。
互动
您在服务器运维过程中是否遇到过难以追踪的隐蔽DDoS攻击?欢迎在评论区分享您的排查思路或遇到的疑难杂症,我们可以共同探讨更高效的防御策略。
原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/37341.html