Slowloris攻击与Netflow
Slowloris是网络攻击中比较老牌的选手了,关于它的防范技术也都很成熟,如果加上Netflow技术,其实可以做到更多。
一、认识Slowloris
Slowloris是一种DDoS(分布式拒绝服务攻击)工具,它利用了Web服务器的设计漏洞,通过向目标服务器发送大量的半连接(half-open connections)来耗尽服务器资源,导致目标服务器无法响应合法请求。
Slowloris攻击的原理是利用Web服务器对TCP协议的实现,服务器在接收到TCP连接请求后需要维护该连接的状态,包括客户端的IP地址、端口号等信息。攻击者发送大量的半连接请求,这些请求会在服务器的等待队列中占用连接资源,导致服务器无法响应新的请求。Slowloris攻击通常针对HTTP协议,因为HTTP协议使用单一连接的方式传输数据,因此攻击者可以利用Slowloris攻击来迫使Web服务器无法响应客户端请求。
搭建web服务的时候如果没有考虑这些问题,就可能会被攻击者盯上。
二、防范措施
为了防止Slowloris攻击,Web服务器管理员可以采取以下措施:
- 增加Web服务器的连接限制和超时配置,以减少等待队列中半连接请求的数量。
- 安装Web应用程序防火墙(WAF),使用WAF对网络流量进行过滤和分析,以检测Slowloris攻击。
- 升级Web服务器软件的版本,新版本的软件通常会修复Slowloris攻击的漏洞。
- 限制服务器对外提供服务的带宽和连接数,以减轻Slowloris攻击的影响。
三、Netflow中的特征
如图所示,网络流中是可以看到,TCP协议的流量中,有一些流量会带有 [ACK] 、[TCP Keep-Alive]等标记。
其实还有更多类型的标记,TCP协议中常见的类型有以下这些:
- SYN包:用于建立一个连接。客户端向服务器发送SYN包,服务器回应SYN+ACK包,客户端再回应一个ACK包,这样连接就建立起来了。
- ACK包:用于确认收到数据。当一方发送数据时,对方会回应一个ACK包,表示已经收到了数据。
- FIN包:用于关闭一个连接。当一方发送FIN包时,表示不再发送数据了,对方收到后会回应一个ACK包,然后也发送一个FIN包,表示同意关闭连接。
- RST包:用于重置一个连接。当一方发送RST包时,表示该连接出现了错误,需要重置。
- PSH包:用于提示接收方应该立即将数据交给应用层处理,而不是等待缓冲区填满再处理。PSH包通常用于实现Telnet等应用协议。
- URG包:用于提示接收方该数据包包含一个紧急数据段,需要立即处理。URG包通常用于实现远程登录等应用协议。
- Window Update包:用于通知接收方更新窗口大小。TCP协议使用窗口控制机制来控制数据流量,当接收方的缓冲区有足够的空间时,可以发送Window Update包通知发送方可以发送更多数据。
- Data包:用于携带应用层数据,即要传输的数据内容。
四、结合Netflow
通过采集Netflow数据流对网络中的流量进行监控,对指定的重点IP、IP段进行实时侦测,分析Destination为目标IP、Protocol与端口号对应Web服务的流量,对SYN的包做聚量分析,可以尽早发现网络中的攻击,并从网络运营服务的角度进行处置或清洗,避免了客户受到网络威胁。
聚类分析时可采用配置阈值的方式进行触发攻击告警,一般采用浮动比例阈值、浮动绝对值阈值、最小值阈值等多重限制,减少了误报的可能性,避免错误封堵对客户带来的损失。
通过留存已确定为告警事件期间的Netflow数据包,通过回溯分析,可以学习攻击事件的特征,有助于后续的攻击识别能力提升。