SYN DDOS 防御策略
---恢复内容开始---
DDOS是分布式拒绝访问服务攻击,就是海量的向服务器发起request,而服务器难以区分这些request哪些是真实请求。只能都进行回应,
于是服务器的带宽被榨干,无法相应,使得正常的访问也被拒绝。
SYN攻击的原理;
SYN攻击主要利用的是TCP/IP协议
TCP三次握手的过程
client server
SYN(SEQ=x)
=========================>
state SYN_SEND
SYN(SEQ=Y) ACK(ACK=x+1)
<========================
state SYN_RECV
ACK(ACK=y+1)
=========================>
state ESTABLISHED <==================>ESTABLISHED
......
如上图所示,建立一次连接需要经过三次连接,当第二次握手发生时,server断就会将client端的地址放入一个缓存队列,等待client完成第三次握手。
SYN攻击使得服务器发回第二次握手给一个并不存在的地址,并将其存在缓存队列等待。很快队列会被填满,攻击效果达到。
linux下的防御措施
主:
方式1、减少发送syn+ack包时重试的次数
synctl -w net.ipv4.tcp_syncak_retries=3
synctl -w net.ipv4.tcp_syn_retires=3
方式2、开启SYN cookies
synctl -w net.ipv4.tcp_syncookies=1
方式3、增加backlog队列
synctl -w net.ipv4.tcp_max_syn_backlog=2048
次:
关闭ICMP协议请求
synctl -w net.ipv4.icmp_echo_ignore_all=1
通过iptables防止扫描
iptables -A FORWARD -p tcp -syn -m limit -limit 1/s -limit-burst 5 -j ACCEPT
iptables -A FORWARD -p tcp -tcp-flags SYN,ACK,FIN,RST RST -m limit -limit 1/s -j ACCEPT
iptables -A FORWORD -p icmp -icmp-type echo-request -m limit -limit 1/s -j ACCEPT
---恢复内容结束---
DDOS是分布式拒绝访问服务攻击,就是海量的向服务器发起request,而服务器难以区分这些request哪些是真实请求。只能都进行回应,
于是服务器的带宽被榨干,无法相应,使得正常的访问也被拒绝。
SYN攻击的原理;
SYN攻击主要利用的是TCP/IP协议
TCP三次握手的过程
client server
SYN(SEQ=x)
=========================>
state SYN_SEND
SYN(SEQ=Y) ACK(ACK=x+1)
<========================
state SYN_RECV
ACK(ACK=y+1)
=========================>
state ESTABLISHED <==================>ESTABLISHED
......
如上图所示,建立一次连接需要经过三次连接,当第二次握手发生时,server断就会将client端的地址放入一个缓存队列,等待client完成第三次握手。
SYN攻击使得服务器发回第二次握手给一个并不存在的地址,并将其存在缓存队列等待。很快队列会被填满,攻击效果达到。
linux下的防御措施
主:
方式1、减少发送syn+ack包时重试的次数
synctl -w net.ipv4.tcp_syncak_retries=3
synctl -w net.ipv4.tcp_syn_retires=3
方式2、开启SYN cookies
synctl -w net.ipv4.tcp_syncookies=1
方式3、增加backlog队列
synctl -w net.ipv4.tcp_max_syn_backlog=2048
次:
关闭ICMP协议请求
synctl -w net.ipv4.icmp_echo_ignore_all=1
通过iptables防止扫描
iptables -A FORWARD -p tcp -syn -m limit -limit 1/s -limit-burst 5 -j ACCEPT
iptables -A FORWARD -p tcp -tcp-flags SYN,ACK,FIN,RST RST -m limit -limit 1/s -j ACCEPT
iptables -A FORWORD -p icmp -icmp-type echo-request -m limit -limit 1/s -j ACCEPT