SYN Flooding 攻击防御
1,SYN Flooding 是利用TCP三次握手,
说明:
攻击原理:在第二步中server端会把链接的信息记录在TCP队列中,该条信息会一直存在TCP队列中,直到Server端收到Client端的确认封包才会从队列中清除。如果client端部响
应确认封包3给server端,如果经过一段时间后仍然无法得到Client的响应,server端会重复2发送封包给client端,这样重试动作默认会有5次,如最后还是无法得到client的回应
,serer就会从TCP队列中移除该链接的暂存信息。假设client端故意发送大量的SYN封包,却有不回复第三个封包给server端,则server端的TCP队列很可能被占满,那些正常的建
立连接就无法完成,这样就打到dos攻击了。
当然,单一主机想服务器端发送SYN Flooding攻击是没有意义的,我们可以用netstat -an 发现攻击IP地址,然后用iptables拒绝攻击,如果攻击者以SYN Flooding 攻击手法来伪
造来源地址,再加上DDOS 这种大规模的攻击,一般是很难发现和防御的。因为你无法识别那个syn连接时正常的连接。
2,Syn Flooding的攻击防御
syn Flooding攻击都目前为止并没有任何有效的防御方法,因为问题的根本在于我们无法从三次握手的第一次封包来判别其是否为攻击行为,因此,我们能做的只有尽量降低syn
Flooding攻击所带来的危害,完全隔离syn Flooding的攻击时不可能做到的。一下为集中防御的办法:
2.1单一主机上的防御
我们分析攻击原理,可以从两个方面做
一是,调整系统核心中关于TCP连接的参数,其二是启动tcp_syncookies机制来对抗Syn Flooding的攻击。
调整TCP连接参数做法,首先调整TCP默认的系统在没有收到Client端封包的时候,从新发送封包的次数
在/etc/sysctl.conf net.ipv4.tcp_synack_retries 中定义
改变TCP队列的长度
net.ipv4.tcp_max_syn_backlog 默认值为1024 建议该为2048
其二为启动tcp_syncookies机制
tcp_syncookies运用特殊的算法可以来提供较小规模的syn Flooding攻击防御,但如果攻击量很大,tcp_syncookies还是无法达到安全防御的效果
在/etc/sysctl.conf 中
# Controls the use of TCP syncookies
net.ipv4.tcp_syncookies = 0 把其值该为1 重新启动系统就可以激活该机制。
2网关式防御:
阅读(1427) | 评论(0) | 转发(0) |