我开始看到这种奇怪的效果,类似于针对 Linux 服务器的拒绝服务攻击。其效果是网络至少部分不可用,与传统 DOS 或 DDOS 攻击的情况非常相似。
以下是netstat
“攻击”期间的修剪过的转储(假设就是这样):
Proto Recv-Q Send-Q Local Address Foreign Address State PID
tcp 1 0 1.2.3.1:80 50.128.251.184:1768 CLOSE_WAIT 18482/httpd
tcp 0 1 1.2.3.4:80 71.75.22.31:52323 LAST_ACK -
tcp 0 18980 1.2.3.4:80 98.180.31.210:60499 ESTABLISHED 18016/nginx: worker
tcp 0 11709 1.2.3.4:80 98.180.31.210:60498 ESTABLISHED 18016/nginx: worker
tcp 0 55743 1.2.3.4:80 71.75.22.31:52239 LAST_ACK -
tcp 0 0 1.2.3.5:80 75.190.139.103:58265 ESTABLISHED 16808/httpd
tcp 0 32814 1.2.3.4:80 71.75.22.31:52279 LAST_ACK -
tcp 0 48029 1.2.3.4:80 71.75.22.31:52284 LAST_ACK -
tcp 1 33581 1.2.3.4:80 71.75.22.31:52285 LAST_ACK -
tcp 0 23582 1.2.3.4:80 71.75.22.31:52283 LAST_ACK -
tcp 0 684 1.2.3.5:80 123.125.71.31:57865 FIN_WAIT1 -
tcp 0 37621 1.2.3.4:80 71.75.22.31:52218 LAST_ACK -
tcp 0 18980 1.2.3.4:80 174.106.209.104:39937 ESTABLISHED 18016/nginx: worker
tcp 0 0 1.2.3.1:80 95.140.125.125:60078 ESTABLISHED 18377/httpd
tcp 0 0 1.2.3.2:39509 2.2.3.1:3306 ESTABLISHED 18379/httpd
tcp 0 174 1.2.3.2:33029 2.2.3.1:3306 ESTABLISHED 18482/httpd
tcp 0 44538 1.2.3.4:80 72.230.205.217:58271 FIN_WAIT1 -
tcp 0 64812 1.2.3.2:80 184.35.67.238:49173 ESTABLISHED 1251/httpd
tcp 1 0 1.2.3.1:80 174.96.155.77:59167 CLOSE_WAIT 18379/httpd
tcp 0 1 1.2.3.4:80 174.110.137.71:61496 FIN_WAIT1 -
tcp 1 31751 1.2.3.4:80 99.25.112.12:55747 CLOSING -
tcp 0 33396 1.2.3.4:80 99.25.112.12:55764 ESTABLISHED 18016/nginx: worker
主要注意的是,基本上已关闭或部分关闭的连接对 Send-Q 缓冲区空间的使用率很高。通过保持这些连接打开,攻击者似乎可以烧毁允许的发送队列并基本停止流量。这似乎不是一个复杂的攻击,但只需几个攻击者就可以使流量最小的服务器瘫痪。
有人能识别这种攻击模式并知道如何应对吗?
答案1
看起来像是一种资源耗尽攻击。需要更多数据才能给出更具体的答案,但您能获取攻击流量的独立数据包捕获吗?
不确定您要保护什么,但您是否需要从整个互联网接收大量连接?我的第一个反驳尝试是,您可能能够限制正在设置的连接数 - 为每个(主机/网络范围/等)设置一个合理的阈值。