一、【直观变化】应用出现异常

  1. 网络和设备正常的情况下,服务器突然出现连接断开、访问卡顿、用户掉线等情况。
  2. 服务器CPU或内存占用率出现明显增长。
  3. 网络出方向或入方向流量出现明显增长。
  4. 您的业务网站或应用程序突然出现大量的未知访问。
  5. 登录服务器失败或者登录过慢。
  6. ……

如发现以上情况,那么,恭喜您!您的服务器有可能正在遭受DDoS攻击……

二、【命令排查】netstat与DDoS攻击

前文说道,DDoS攻击种类较多,有洪水攻击、CC攻击、慢速攻击等。具体可参见上一篇【DDoS系列-01】什么是DDoS攻击?

所以,我们需先确认其攻击方式,才能有的放矢、对症下药。

netstat:该命令用于显示网络状态,利用 netstat 指令可让你得知整个 Linux 系统的网络情况。因此我们可以使用它来进行DDoS攻击分析。

1、开放端口,进行初步定位

我们可以先确定目前开放了哪些端口,来初步排查可能是哪类攻击。查看开放端口的方法有很多:

  • 使用netstat -ano命令,查看目前服务器打开的所有TCP、UDP端口。【不推荐,公网可见端口数<=真实开放端口数】
  • 使用nmapmasscan从外部进行端口扫描,masscan -p0-65535,U:0-65535 你的IP --rate=10000推荐
  • ping 你的IP,确认服务器是否开启了ICMP协议
  • ……

通过端口打开情况,进行初步判断:

  • 如果只开了HTTP相关端口,较大可能会是连接型DDoS攻击或者Web应用层DDoS攻击
  • 如果开启了ICMP协议,则存在ICMP flood攻击的可能;
  • 如果开启UDP 53端口,则存在DNS DDoS攻击的可能;
  • 否则,则可能是其他类型的DDoS攻击……

2、HTTP层DDoS攻击排查

列出所有连接到本机80端口的IP地址和其连接数。

1
netstat -plan|grep :80|awk {'print $5'}|cut -d: -f 1|sort|uniq -c|sort -nk 1

> 具体根据上一步打开的端口排查,这里使用80来做示例。

显示所有80端口的网络连接并通过IP排序。

1
netstat -an | grep :80 | sort

> 如果看到同一个IP有大量连接的话就可以判定单点流量攻击了。

显示目前连接的总数(仅显示一个数值)

1
netstat -an | grep :80 | sort | wc -l


列出所有连接到本机80端口的IP地址和其连接数。

1
netstat -plan|grep :80|awk {'print $5'}|cut -d: -f 1|sort|uniq -c|sort -nk 1

检查 ESTABLISHED 连接(即连接中)并且列出每个IP地址的连接数。

1
netstat -ntu | grep ESTAB | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr

计算每个IP连接到本机的连接数。

1
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

如果每个IP,存在几十次,甚至上百、上千次连接,则可能是一般CC攻击,他们一个IP可能发起多次恶意请求,消耗你的带宽和资源。

如果每个IP连接数很少,但IP个数较多,同时基本都是ESTABLISHED,则有可能是HTTP慢速攻击,他们一直连接占用着服务。

3、其他攻击类型的排查

列出本机活动的 SYNC_REC 连接数量(仅显示一个数值)。

1
netstat -n -p|grep SYN_REC | wc -l

>正常来说这个值很小,最好小于5。 当有DoS攻击或邮件炸弹的时候,这个值相当的高。尽管如此,这个值和系统有很大关系,有的服务器值就很高,也是正常现象。

列出本机活动的 SYNC_REC 连接。

1
netstat -n -p | grep SYN_REC | sort -u


列出所有发送SYN_REC连接节点的IP地址。

1
netstat -n -p | grep SYN_REC | awk '{print $5}' | awk -F: '{print $1}'


列出所有连接到本机的UDP或者TCP连接的IP数量。

1
netstat -anp |grep 'tcp|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n


我们也可以使用iptraf等网络监控工具来查看当前的TCP、UDP、ICMP等协议,以及不同端口流量的统计。如果某个端口流量较大,则再针对该端口进行分析。


好了,今天的分享就到这儿了。

如果喜欢本文,请关注公众号:开猿笔记,里面会有持续更新噢!