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

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

思路:

  1. 三分钟监控一次, 放到crontab里面去

    crontab -e
    */ * * * * 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 --> 已建立的连接

结果如下:

--[root@vm]: /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

防火墙命令为: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

最新文章

  1. Oracle Cursor
  2. Hack语言特性之类型化
  3. 简单实例讲解linux的module模块编译步骤
  4. 文件的压缩与解压XZip,XUnzip
  5. poj 3159 差分约束
  6. testng 注解
  7. Android开源项目分类汇总[转]
  8. HDU 1130 How Many Trees?
  9. Step by Step 用Azure Automation 来开虚机(ARM)
  10. nodejs模块xml2js解析xml的坑
  11. [二十五]JavaIO之RandomAccessFile
  12. Windows 主机名映射地址
  13. CentOS7中安装MySQL5.7
  14. Hdoj 4508.湫湫系列故事——减肥记I 题解
  15. [C++ Primer Plus] 第5章、循环和关系表达式(一)程序清单——指针自加减优先级
  16. 安装MySQL-python时报错
  17. 牛顿迭代法(Newton's Method)
  18. MVC中JSON字符长度超出限制
  19. hdu 3794 Magic Coupon
  20. [WC2016]挑战NPC

热门文章

  1. 配置ip地址四种方法,方便学习linux的朋友
  2. hdu 2795 Billboard 【线段树】
  3. jsp错误页面的处理
  4. luogo p3379 【模板】最近公共祖先(LCA)
  5. js(Mandango:壮汉专用,电影院划位工具)
  6. 大数据相关文档&amp;Api下载
  7. ansible shell模块
  8. 小白都能看懂的Linux系统下安装配置Zabbix
  9. Uboot优美代码赏析1:目录结构和malkefile分析
  10. crm 系统项目(二) admin 后台操作表格