一、【直观变化】应用出现异常
- 网络和设备正常的情况下,服务器突然出现连接断开、访问卡顿、用户掉线等情况。
- 服务器CPU或内存占用率出现明显增长。
- 网络出方向或入方向流量出现明显增长。
- 您的业务网站或应用程序突然出现大量的未知访问。
- 登录服务器失败或者登录过慢。
- ……
如发现以上情况,那么,恭喜您!您的服务器有可能正在遭受DDoS攻击……
二、【命令排查】netstat与DDoS攻击
前文说道,DDoS攻击种类较多,有洪水攻击、CC攻击、慢速攻击等。具体可参见上一篇【DDoS系列-01】什么是DDoS攻击?
。
所以,我们需先确认其攻击方式,才能有的放矢、对症下药。
netstat
:该命令用于显示网络状态,利用 netstat 指令可让你得知整个 Linux 系统的网络情况。因此我们可以使用它来进行DDoS攻击分析。
1、开放端口,进行初步定位
我们可以先确定目前开放了哪些端口,来初步排查可能是哪类攻击。查看开放端口的方法有很多:
- 使用
netstat -ano
命令,查看目前服务器打开的所有TCP、UDP端口。【不推荐,公网可见端口数<=真实开放端口数】 - 使用
nmap
或masscan
从外部进行端口扫描,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等协议,以及不同端口流量的统计。如果某个端口流量较大,则再针对该端口进行分析。
好了,今天的分享就到这儿了。
如果喜欢本文,请关注公众号:开猿笔记,里面会有持续更新噢!