概念:dos攻击,让你的计算机或网络无法提供正常访问。
现象:流量监控系统显示下行的红色曲线,邮件报警,发现web服务器异常,网站访问量瞬间暴跌
常见方式:计算机网络带宽攻击和连通性攻击
排查思路:
先检查了web服务器日志,没有异常。查看防火墙日志和路由器日志,发现部分可疑流量,进而发现攻击时,路由器日志里有大量64字节的数据包,还有大量的“UDP-other”数据包,而web服务器日志还是正常。
解决方式:
SYN洪泛式攻击,利用tcp三次握手,由伪造的IP地址向目标端发送请求报文,而目标端的响应报文永远无法发送,如果有成千上万的这种连接,目标端等待关闭连接的过程会消耗大量的主机资源
1、禁止所有发给目标IP的UDP包,这种做法会让服务器丧失部分功能,如:DNS.
好处:减轻了web服务器的压力,web可以正常工作
弊端:攻击仍然可以到达web,影响网络性能
2、联系上游带宽提供商,暂时限制网站端口的UDP进入流量,降低网络到服务器的流量
3、统计SYN_RECV的状态,发现有大量的tcp同步数据包,但是连接上的却没有几个
[root@xiaoya ~]# netstat -an|grep SYN_RECV|wc -l
1522
或者查看当前最大连接数
[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攻击
4、解决策略
1)分析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
2)分析网络连接数
netstat -an | grep EST查看网络状态如下:
tcp 0 0 192.168.40.125:46476 112.95.242.171:80 ESTABLISHED
tcp 0 74 192.168.40.125:57948 173.194.127.177:443 ESTABLISHED
tcp 0 0 192.168.40.125:52290 118.144.78.52:80 ESTABLISHED
tcp 0 0 192.168.40.125:42593 163.177.65.182:80 ESTABLISHED
tcp 0 0 192.168.40.125:49259 121.18.230.110:80 ESTABLISHED
tcp 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
5、提前防护措施
1)利用“蜜网”防护,加强对攻击工具和恶意样本的第一时间分析和响应。大规模部署蜜网设备以便追踪僵尸网络的动态,捕获恶意代码。部署网站运行监控设备,加强对网页挂马、访问重定向机制和域名解析的监控,切断恶意代码的主要感染途径。采用具备沙箱技术和各种脱壳技术的恶意代码自动化分析设备,加强对新型恶意代码的研究,提高研究的时效性。
2)利用Ossim系统提供的Apache Dos防护策略可以起到监控的作用。
3)利用云计算和虚拟化等新技术平台,提高对新型攻击尤其是应用层攻击和低速率攻击的检测和防护的效率。国外己经有学者开始利用Hadoop平台进行Http Get Flood的检测算法研究。
4)利用IP信誉机制。在信息安全防护的各个环节引入信誉机制,提高安全防护的效率和准确度。例如对应用软件和文件给予安全信誉评价,引导网络用户的下载行为,通过发布权威IP信誉信息,指导安全设备自动生成防护策略,详情见《Unix/linux网络日志分析与流量监控》2.1节。
5)采用被动策略即购买大的带宽,也可以有效减缓DDOS攻击的危害。
6)构建分布式的系统,将自己的业务部署在多地机房,将各地区的访问分散到对应的机房,考虑部署CDN,在重要IDC节点机房部署防火墙(例如Cisco、Juniper防火墙等)这样即使有攻击者进行DOS攻击,破坏范围可能也仅仅是其中的一个机房,不会对整个业务造成影响。
7)如果规模不大,机房条件一般,那可以考虑在系统中使用一些防DDos的小工具,如DDoS Deflate,
参考文档:http://www.jb51.net/os/RedHat/1064.html