排查 DDoS 攻击造成的网站搜索功能故障

一、网络流量数据排查与解读

(一)带宽使用情况

  • 总带宽占用率
    • 正常网络环境下,带宽占用率依据业务活动在一定范围内波动。比如,一个电商网站正常时段入口带宽占用率可能在 30% – 60%,这是由用户访问商品页面、下单等操作产生的流量导致。当遭受 DDoS 攻击时,带宽占用率会急剧攀升。如果发现带宽占用率突然提升到 90% 甚至接近 100%,并且持续一段时间,这极有可能是 DDoS 攻击。因为攻击者会发送海量数据包,耗尽网络带宽,阻碍正常流量传输。
  • 带宽使用的时间序列分析
    • 正常网络流量呈现一定规律,如办公网络在工作日的白天流量大,夜晚和节假日流量小。通过对带宽使用情况进行时间序列分析,能够更直观地观察流量变化模式。在 DDoS 攻击发生时,带宽使用曲线会出现突兀的峰值,这些峰值没有规律,与正常业务流量高峰有明显差异。例如,正常情况下企业内部网络的流量高峰在上班后的前几个小时,而 DDoS 攻击产生的峰值可能在凌晨或其他非工作时段。

(二)流量来源和目的地

  • 源 IP 地址分布
    • 查看流量的源 IP 地址分布是判断 DDoS 攻击的重要依据。正常网络流量的源 IP 地址是分散的,来自不同的合法用户或网络节点。在 DDoS 攻击时,可能会出现大量流量来自少数几个 IP 段或者单个 IP 地址。例如,发现有大量请求来自同一个数据中心的 IP 段,且这些请求的行为不符合正常业务逻辑,就可能是攻击者利用僵尸网络发动攻击。同时,还可能会发现大量伪造的 IP 地址,这是一些复杂 DDoS 攻击(如反射式 DDoS 攻击)的典型特征。
  • 目的 IP 和端口分布
    • 明确流量的目的 IP 和端口有助于确定攻击目标和攻击方式。正常情况下,目的 IP 和端口的流量分布与网络服务的部署和使用情况相符。例如,对于一个提供 Web 服务的服务器,其 80(HTTP)或 443(HTTPS)端口会有较多的流量。在 DDoS 攻击下,可能会发现某个特定的 IP 和端口受到大量流量的集中攻击。比如,出现大量 UDP 数据包涌向服务器的某个非标准 UDP 服务端口,这可能是 UDP Flood 攻击的迹象。

(三)流量协议类型

  • 协议类型分布
    • 正常网络中会有多种协议类型的流量,如 HTTP 用于网页浏览、SMTP 用于邮件传输、DNS 用于域名解析等,并且它们的比例相对稳定。在 DDoS 攻击时,可能会出现某种协议类型的流量异常增多。例如,正常情况下 HTTP 流量占总流量的 60% 左右,突然发现 HTTP 流量占比上升到 90% 以上,同时其他正常协议流量减少,这可能是 HTTP Flood 攻击。或者出现大量异常的协议流量,如出现大量不常见的 ICMP(Internet Control Message Protocol)协议流量,可能是 ICMP Flood 攻击。
  • 协议行为分析
    • 除了关注协议类型的分布,还要分析协议的行为。正常的协议行为是符合协议规范的,例如,HTTP 请求会有正常的请求头、请求方法(如 GET、POST)和符合语法规则的 URL。在 DDoS 攻击中,可能会发现协议行为异常,如 HTTP 请求中包含大量不符合语法的 URL 或者恶意的脚本代码,这可能是应用层 DDoS 攻击的一种形式,如跨站脚本攻击(XSS)或 SQL 注入攻击被包装在大量请求中用于攻击。

二、服务器性能数据排查与解读

(一)CPU 和内存使用率

  • CPU 使用率变化
    • 在正常情况下,服务器的 CPU 使用率会根据业务负载有一定的波动。例如,一个文件服务器在正常读写文件操作时,CPU 使用率可能在 20% – 50% 之间。当遭受 DDoS 攻击时,由于服务器需要处理大量的恶意请求,CPU 使用率会急剧上升。可能会出现 CPU 使用率持续在 90% 以上的情况,这表明服务器正承受巨大的计算压力。例如,在 SYN Flood 攻击中,服务器要处理大量的 TCP 连接请求,这些请求会占用大量的 CPU 资源来建立和维护连接。
  • 内存使用率变化
    • 服务器内存的使用情况也很关键。正常业务操作下,内存使用率相对稳定。例如,数据库服务器内存使用率可能保持在 60% – 80% 左右,用于缓存数据和执行查询操作。在 DDoS 攻击期间,内存使用率可能会迅速上升,特别是当攻击涉及大量数据缓存或内存占用型操作时。比如,攻击者发送大量需要服务器缓存的数据请求,导致内存被快速填满,使服务器性能下降,甚至可能导致内存溢出错误,影响服务器的正常运行。

(二)网络 I/O 和磁盘 I/O

  • 网络 I/O 数据
    • 网络 I/O 数据反映了服务器与外部网络之间的数据传输情况。正常情况下,网络接收和发送的数据量与业务需求相匹配。例如,一个邮件服务器在正常工作时,每秒接收和发送的数据量相对稳定。在 DDoS 攻击时,网络 I/O 数据会出现异常。可能会看到网络接收的数据量远远超过正常水平,而有效数据(与正常业务相关的数据)占比却很低。这是因为攻击流量充斥了网络接口,导致服务器忙于处理这些无效数据,影响正常的网络通信。
  • 磁盘 I/O 数据
    • 磁盘 I/O 数据体现了服务器对磁盘的读写操作情况。在正常业务中,磁盘读写操作有一定的频率和模式。例如,数据库服务器会根据查询和更新操作有规律地读写磁盘。在 DDoS 攻击下,磁盘 I/O 可能会出现异常。如果攻击涉及大量对磁盘数据的请求(如攻击者试图通过大量请求耗尽服务器磁盘资源),磁盘读写速度可能会急剧下降,队列长度增加,导致磁盘 I/O 出现瓶颈,影响服务器的整体性能。

三、系统和应用程序日志数据排查与解读

(一)系统日志

  • 连接相关记录
    • 系统日志中的连接记录是排查 DDoS 攻击的重要线索。正常情况下,服务器会记录合法的连接请求,如 TCP 连接的建立和断开。在 DDoS 攻击时,会出现大量异常的连接记录。例如,在 SYN Flood 攻击中,会看到大量的 TCP SYN 请求记录,但很少有对应的 TCP ACK 完成三次握手的记录,这表明有大量的半开连接尝试占用服务器资源。同时,还可能发现连接请求的源 IP 地址分布异常,如大量来自相同或相似 IP 地址的连接请求。
  • 系统资源相关记录
    • 系统日志也会记录服务器资源的使用情况和相关的错误信息。在正常运行时,可能会偶尔出现因资源紧张而产生的警告记录。但在 DDoS 攻击期间,会频繁出现资源不足的记录,如 “内存不足”、“CPU 过载” 等。这些记录与服务器性能监控数据相互印证,可以帮助确定攻击对服务器的影响程度和时间范围。

(二)应用程序日志

  • 业务逻辑相关记录
    • 应用程序日志记录了应用程序内部的业务逻辑执行情况。正常的应用程序日志反映了合法用户的操作和系统的正常响应。在 DDoS 攻击时,会发现大量不符合正常业务逻辑的记录。例如,对于一个在线购物应用,正常情况下用户会按照一定的步骤进行浏览、加入购物车、下单等操作。在攻击时,可能会出现大量没有购物车操作直接下单的记录,或者同一用户在短时间内进行大量不符合常理的操作,这些记录可能是攻击者通过自动化工具发送大量恶意请求导致的。
  • 错误和异常记录
    • 应用程序日志中的错误和异常记录在 DDoS 攻击期间也会增多。这些错误可能是由于服务器资源不足导致应用程序无法正常执行,或者是因为攻击流量中的恶意内容引发的。例如,可能会看到 “数据库连接超时”、“无法处理请求” 等错误记录,这些记录可以帮助定位攻击对应用程序的具体影响,如哪些功能模块受到了攻击的干扰。