#当我们的网站遭到ddos攻击时,我们只能断网来处理,所以我们需要提前定义好日均pv量多少称之为公司,就禁止他来访问我们的ip地址,下面的脚本就是来防止这个的,每三分钟执行一次,当pv大于1000是就主动键入iptables
[root@mysql file]# vim iptab.sh
#!/bin/bash
while true
do
cat /tmp/access.log | awk '{print $1}' | sort | uniq -c | sort -nr > /tmp/ip
#找到日志文件里面的ip的pv量
exec while read line #写入line
do
ip=`echo $line |awk '{print $2}'`
#找到ip地址
ipc=`echo $line |awk '{print $1}'`
#找到pv量
if [ $ipc -gt 1000 ] && [ `iptables -L -n | grep "$ip"| wc -l` -lt 1 ]; then
#匹配pv量大于10的,切在加入防火墙是不重复加入{不然会重复键入}
iptables -I INPUT -s $ip -j DROP
#第一时间拒绝次ip访问
echo "$ip is not";
fi
done
sleep 180
done
~
或者通过网络来限制访问: netstat -anl | grep ' ESTABLISHED'|grep -v '192.168'|grep -v '10.10' | awk -F '[ :]+' '{print $6}'|sort|uniq -c
-v:过滤这个参数
sort:排序
uniq:去重
#!/bin/bash
while true
do
netstat -anl | grep ' ESTABLISHED'|grep -v '10.168.100.226'|grep -v '10.117.33.24' | awk -F '[ :]+' '{print $6}'|sort|uniq -c
exec
while read line
do
ip=`echo $line |awk '{print $2}'`
ipc=`echo $line |awk '{print $1}'`
if [ $ipc -gt 10 ] && [ `iptables -L -n | grep "$ip"| wc -l` -lt 1 ]; then
iptables -I INPUT -s $ip -j DROP
echo "$ip is not";
fi
done
sleep 3
done
阅读(1297) | 评论(0) | 转发(0) |