发布网友 发布时间:2022-04-23 05:13
共1个回答
热心网友 时间:2022-04-12 19:43
方法/步骤
1
先检查了web服务器日志,没有异常。查看防火墙日志和路由器日志,发现部分可疑流量,进而发现攻击时,路由器日志里有大量64字节的数据包,还有大量的“UDP-other”数据包,而web服务器日志还是正常。
2
SYN洪泛式攻击,利用tcp三次握手,由伪造的IP地址向目标端发送请求报文,而目标端的响应报文永远无法发送,如果有成千上万的这种连接,目标端等待关闭连接的过程会消耗大量的主机资源
3
禁止所有发给目标IP的UDP包,这种做法会让服务器丧失部分功能,如:DNS.
好处:减轻了web服务器的压力,web可以正常工作
弊端:攻击仍然可以到达web,影响网络性能
4
联系上游带宽提供商,暂时*网站端口的UDP进入流量,降低网络到服务器的流量
5
统计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攻击
END
解决策略
分析web日志
把单IP PV数高的封掉(可按天定义PV=1000即封掉)
[root@xiaoya ~]# cat test#!/bin/bash while true do ####access.log为web日志文件 awk '{print $1}' access.log | grep -v "^$" | sort | uniq -c > tmp.log exec < 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 done sleep 3 done
分析网络连接数
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/bash while true do grep EST est.log | awk -F '[ :]+' '{print $6}' | sort | uniq -c > tmp.log ####netstat -an | grep EST | awk -F '[ :]+' '{print $6}' | sort | uniq -c exec < 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 done sleep 3 done