SYN Flood 或称 SYN洪水、SYN洪泛是一种阻断服务攻击,起因于攻击者传送一系列的SYN请求到目标系统。 SYN洪水攻击是DDOS攻击中最常见的攻击类型之一,是一种利用TCP 协议缺陷,攻击者向被攻击的主机发送大量伪造的TCP连接请求,从而使得被攻击方主机的资源耗尽(CPU 满负荷或内存不足) 的攻击方式。
SYN攻击的目标不止于服务器,任何网络设备,都可能会受到这种攻击,针对网络设备的SYN攻击往往会导致整个网络瘫痪。
用户和服务器之间的正常连接,正确执行3次握手。
当客户端尝试与服务器建立TCP连接时,客户端和服务器在正常情况下交换一组信息,如下所示:
1、客户端将SYN同步信息发送到服务器并请求连接设置
2、服务器响应客户端SYN-ACK响应请求
3、客户端承诺ACK并建立连接
这是在所谓的TCP 3次握手中使用TCP传输协议的每个连接的基础。
水槽洪水,攻击者发送许多数据包,但不向服务器发送“ACK”。因此,连接半开,吞下服务器资源,由于阻止服务攻击,合法用户尝试连接到服务器但被拒绝。
SYN Flood是一种众所周知的攻击,在现代网络中通常无效。这种类型的攻击仅在服务器收到SYN后才分配资源,但在本节中,它会在收到ACK之前生效。
今天驰网小林分享一下如何利用iptables来缓解SYN攻击。
sysctl -w net.ipv4.tcp_max_syn_backlog=2048
sysctl -w net.ipv4.tcp_syncookies=1
sysctl -w net.ipv4.tcp_syn_retries = 0
重传次数设置为0,只要收不到客户端的响应,立即丢弃该连接,默认设置为5次
iptables -t filter -A INPUT -p tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 10 --connlimit-mask 32 -j REJECT
使用iptables限制单个c类子网的并发链接数量:
iptables -t filter -A INPUT -p tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 10 --connlimit-mask 24 -j REJECT
设置如下:
iptables -t filter -A INPUT -p tcp --dport 80 -m --state --syn -m recent --set
iptables -t filter -A INPUT -p tcp --dport 80 -m --state --syn -m recent --update --seconds 60 --hitcount 30 -j DROP
为了取得更好的效果,需要修改/etc/modprobe.conf
options ipt_recent ip_list_tot=1000 ip_pkt_list_tot=60
iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j D
以上关于SYN洪水攻击的原理,SYN洪水攻击的解决办法详解的内容就讲到这里
如果想了解更多内容请