zoukankan      html  css  js  c++  java
  • 运维派 企业面试题6 防dos攻击

    Linux运维必会的实战编程笔试题(19题)

    企业实战题6请用至少两种方法实现!
    写一个脚本解决DOS攻击生产案例
    提示:根据web日志或者或者网络连接数,监控当某个IP并发连接数或者短时内PV达到100,即调用防火墙命令封掉对应的IP,监控频率每隔3分钟。防火墙命令为:iptables -A INPUT -s 10.0.1.10 -j DROP。

    思路:

    1. 三分钟监控一次, 放到crontab里面去
      crontab -e
      */3 * * * * COMMAND
    2. 监控某个ip并做统计, 使用awk
    3. 管道之
    4. PV的含义: page view; 以TCP连接里的ip地址为例

    具体如下:

      

    ss -tan | awk '/^ESTAB/{split($5,ipaddr,":");count[ipaddr[1]]++;}END{for(i in count){if(count[i]>=2){print i, count[i]}}}'

    ss -tan命令中, ESTAB表示: ESTABLISHED --> 已建立的连接

    结果如下:

    -218-[root@vm]14:32 /tmp/sh # ss -tan | awk '/^ESTAB/{split($5,ipaddr,":");count[ipaddr[1]]++;}END{for(i in count){if(count[i]>=2){print i, count[i]}}}'
    192.168.142.1 2

    防火墙命令为:iptables -A INPUT -s 10.0.1.10 -j DROP。

    将ip地址通过变量, 循环导入如上命令即可

    ipaddr=`ss -tan | awk '/^ESTAB/{split($5,ipaddr,":");count[ipaddr[1]]++;}END{for(i in count){if(count[i]>=100){print i}}}'`;
    ##ipaddr在拥有多个符合条件的值时,相邻ip地址以空格隔开192.168.142.128 192.168.122.1
    nr=`echo $ipaddr | wc -w`;
    for((i=1;i<=$nr;i++)){
      ip=`echo $ipaddr | cut -d' ' -f$i`
      iptables -A INPUT -s $ip -j DROP
    }

    没有测试环境就不演示了

    done

  • 相关阅读:
    实现PHP Thread基类
    完美实现PHP多线程
    Centos操作记录(一)
    Centos Minimal7 安装问题
    Server Git开发流程
    APP Git协作流程
    git学习笔记
    CentOS安装Nginx
    C++学习笔记(一)
    sql进阶:分组查询、子查询、连接查询
  • 原文地址:https://www.cnblogs.com/gettolive/p/8990652.html
Copyright © 2011-2022 走看看