您的位置首页生活百科

如何防止ddos攻击

如何防止ddos攻击

的有关信息介绍如下:

如何防止ddos攻击

dos攻击,让你的计算机或网络无法提供正常访问

先检查了web服务器日志,没有异常。查看防火墙日志和路由器日志,发现部分可疑流量,进而发现攻击时,路由器日志里有大量64字节的数据包,还有大量的“UDP-other”数据包,而web服务器日志还是正常。

SYN洪泛式攻击,利用tcp三次握手,由伪造的IP地址向目标端发送请求报文,而目标端的响应报文永远无法发送,如果有成千上万的这种连接,目标端等待关闭连接的过程会消耗大量的主机资源

禁止所有发给目标IP的UDP包,这种做法会让服务器丧失部分功能,如:DNS.

好处:减轻了web服务器的压力,web可以正常工作

弊端:攻击仍然可以到达web,影响网络性能

联系上游带宽提供商,暂时限制网站端口的UDP进入流量,降低网络到服务器的流量

统计SYN_RECV的状态,发现有大量的tcp同步数据包,但是连接上的却没有几个

[root@xiaoya ~]# netstat -an|grep SYN_RECV|wc -l1522

或者查看当前最大连接数

[root@xiaoya ~]# netstat -na|grep EST|awk '{print $5}'|cut -d":" -f1,3|sort|uniq -c|sort -n

1 192.168.150.10

2 192.168.150.20

… …

1987 192.168.150.200

明显是收到了dos攻击

分析web日志

把单IP PV数高的封掉(可按天定义PV=1000即封掉)

[root@xiaoya ~]# cat test#!/bin/bashwhile truedo####access.log为web日志文件awk '{print $1}' access.log | grep -v "^$" | sort | uniq -c > tmp.logexec < tmp.log #输入重定向 while read line #读取文件do ip=`echo $line | awk '{print $2}'` count=`echo $line | awk '{print $1}'` if [ $count -gt 100 ] && [ `iptables -n -L | grep "$ip" | wc -l` -lt 1 ]then iptables -I INPUT -s $ip -j DROPecho "$line is dropped" >> droplist.logfidonesleep 3done

分析网络连接数

netstat -an | grep EST查看网络状态如下:

tcp 0 0 192.168.40.125:46476 112.95.242.171:80 ESTABLISHEDtcp 0 74 192.168.40.125:57948 173.194.127.177:443 ESTABLISHEDtcp 0 0 192.168.40.125:52290 118.144.78.52:80 ESTABLISHEDtcp 0 0 192.168.40.125:42593 163.177.65.182:80 ESTABLISHEDtcp 0 0 192.168.40.125:49259 121.18.230.110:80 ESTABLISHEDtcp 0 0 192.168.40.125:52965 117.79.157.251:80 ESTABLISHED

脚本如下

[root@xiaoya ~]# cat test#!/bin/bashwhile truedogrep EST est.log | awk -F '[ :]+' '{print $6}' | sort | uniq -c > tmp.log####netstat -an | grep EST | awk -F '[ :]+' '{print $6}' | sort | uniq -cexec < tmp.log while read line do ip=`echo $line | awk '{print $2}'` count=`echo $line | awk '{print $1}'` if [ $count -gt 100 ] && [ `iptables -n -L | grep "$ip" | wc -l` -lt 1 ] then iptables -I INPUT -s $ip -j DROP echo "$line is dropped" >> droplist.log fi donesleep 3done