大家好,欢迎来到IT知识分享网。
一、服务器可能遭受的攻击
1、SYN/ACK Flood攻击(半连接攻击)
主要是通过向受害主机发送大量伪造源IP和源端口的SYN或ACK包,导致主机的未连接队列被长时间占用并且资源耗尽,而正常的SYN请求被丢弃。由于源都是伪造的故追踪起来比较困难。缺点是实施起来有一定难度,需要高带宽的僵尸主机支持。
2、tcp全连接攻击
通过许多僵尸主机不断地与受害服务器建立大量TCP连接,客户端仅仅“连接”到服务器,然后再也不发送任何数据,直到服务器超时后处理或者耗尽服务器的处理进程。
缺点是需要很多僵尸主机,并且由于僵尸主机的IP是暴露的,因此此种DDOS攻击方式容易被追踪。
3、CC攻击
攻击者控制某些主机不停地发大量正常数据包给对方服务器,造成服务器资源耗尽,一直到宕机崩溃。由于这种攻击方式是正常的请求,暴露了正常的源IP地址,禁止这些ip就可以了。
4、慢速攻击
1)http服务器中,攻击者与服务器建立连接,只提交部分数据,导致服务器持续等待,通过控制僵尸主机或通过多线程进程来不断增加这样的连接,就会使服务器的资源被耗尽,导致服务器宕机或不再接受新的请求。
2)tcp服务器中,攻击者与服务器建立连接并请求数据,采用调整tcp协议中的滑动窗口的大小,来对服务器单词发送的数据大小进行控制,当tcp的window size过小或为0时,迫使服务器等待并不断发送报文探测客户端窗口大小,因此,这样的连接不断增加会使服务器无法访问。
二、防御方法
1、设置内核联网功能
net.ipv4.tcp_max_syn_backlog=102400 //设置监听队列
net.ipv4.tcp_syncookies=1 //设置syn cookies
net.ipv4.tcp_synack_retries=3 //设置syn ack重传次数
net.ipv4.tcp_syn_retries=3 //设置syn 重传次数
net.ipv4.tcp_keepalive_time=1800 //设置无数据发送的存活时间
net.ipv4.tcp_keepalive_probes=5 //tcp发送keepalive探测该链接已经断开的次数
net.ipv4.tcp_keepalive_intvl=15 //设置探测消息发送的频率(秒为单位)
net.ipv4.tcp_retries1=3 //设置tcp连接请求放弃前重传次数
net.ipv4.tcp_retries2=5 //设置tcp连接丢弃前重传次数
net.ipv4.tcp_abort_on_overflow=1 //设置进程溢出时,中断连接
设置方法如:sysctl -w net.ipv4.tcp_syncookies=1
查看方法:sysctl -a | grep tcp
2、设置iptables初始防御功能
//允许外网每个IP最多50个tcp连接,超过的丢弃
iptables -A INPUT -p tcp –syn -m connlimit –connlimit-above 50 –connlimit-mask 32 -j DROP
//每个ip每秒只能连接10次,超过的拒接
iptables -A INPUT -p tcp -m state –state NEW -m recent –name SSHPOOL –set
iptables -A INPUT -p tcp -m state –state NEW -m recent –name SSHPOOL –rcheck –seconds 1 –hitcount 10 -j DROP
//抵御DDOS ,允许外网最多5000个初始连接,然后服务器每秒新增5000个(根据服务器性能设置,在不影响正常处理的情况下)
iptables -A INPUT -p tcp –syn -m limit –limit 5000/s –limit-burst 5000 -j ACCEPT
iptables -A INPUT -p tcp –syn -j DROP
//限制icmp连接
iptables -A INPUT -p icmp -m limit –limit 100/s –limit-burst 100 -j ACCEPT
iptables -A INPUT -p icmp -j DROP
3、主动查看,根据ip限制
1)检查每个ip到服务器的连接数,并排序
netstat -ntu | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -n
2)检查每个ip的ESTABLISHED或SYN_RECEIVED的连接数,并排序
netstat -ntu | grep ESTABLISHED | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -n
netstat -ntu | grep SYN_RECEIVED | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -n
3)检查对口80的每个ip的连接数,并排序
netstat -plan | grep :80 | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -n
检查到的所有连接数量异常的ip地址,可以使用一下方式屏蔽
将对方ip加入iptables进行防御($IPADDR填入实际ip)
Iptables -I INPUT -s $IPADDR -j DROP
(删除该条规则可用–D替换-I : Iptables -D INPUT -s $IPADDR -j DROP)
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/13626.html