Chinaunix首页 | 论坛 | 博客

OPS

  • 博客访问: 504942
  • 博文数量: 117
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1210
  • 用 户 组: 普通用户
  • 注册时间: 2015-05-05 14:50
个人简介

hellow 运维

文章分类

全部博文(117)

文章存档

2019年(1)

2018年(1)

2017年(45)

2016年(38)

2015年(32)

我的朋友

分类: 系统运维

2015-12-22 17:16:40

#当我们的网站遭到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) |
0

上一篇:lvs布置脚本

下一篇:mysql优化参数解释

给主人留下些什么吧!~~