电脑疯子技术论坛|电脑极客社区

微信扫一扫 分享朋友圈

已有 2608 人浏览分享

CC攻击应急:自动拉黑IP的Shell脚本

[复制链接]
2608 0
前言

前两天参加面试 面试官问我:如果攻击方采用代理ip进行cc攻击 我们应该如何应急?
由这个问题 引发了我的一些思考 他假定的场景是网站没有任何防护措施 就是在互联网上裸奔 好吧 既然没有任
何的防护 在应急的时候 能不能通过脚本自动分析web日志 根据访问量自动拉黑ip?

脚本介绍

脚本设计思路:通过计划任务统计单位时间内的IP访问量 设定一个阀值 访问量超过阀值就自动拉黑。
  1. #!/bin/bash
  2. #该脚本可以根据web日志的访问量,自动拉黑IP(加入计划任务 结合计划任务在固定时间段内执行
  3. 并根据该时间段内产生的日志进行分析)
  4. #首先把日志保存到根目录一份,计算日志有多少行
  5. line1=`wc -l /access_log|awk '{print$1}'`
  6. cp /var/log/httpd/access_log /
  7. #计算现有的日志有多少行
  8. line2=`wc -l /var/log/httpd/access_log |awk '{print$1}'`
  9. #根据上一次备份的日志和现在拥有的行数差值,作为单位时间内分析日志访问量
  10. tail -n $((line2-line1)) /var/log/httpd/access_log|awk '{print$1}'|sort -n|uniq -c|sort >/1.txt
  11. cat /1.txt|while read line
  12. do
  13. echo $line >/line
  14. num=`awk '{print$1}' /line`
  15. #设定阀值num,单位时间内操作这个访问量的ip会被自动拉黑
  16. if (($num>12))
  17. then
  18.         ip=`awk '{print$2}' /line`
  19.         firewall-cmd --add-rich-rule="rule family=ipv4 source address='${ip}'
  20. port port=80 protocol=tcp reject" --permanent
  21.         firewall-cmd --reload

  22. fi
  23. done
复制代码

脚本测试

一台centos7虚拟机 搭建有http服务

1.Web可以正常访

1588051642_5ea7bebabe040.png

2.启动虚拟机centos的防火墙

1588051790_5ea7bf4e50754.png

3.把脚本加入计划任务

1588051831_5ea7bf777c244.png

4.用nikto模拟大量的访问

8.png

5.再访问可以看到本地的IP已经无法访问网页

6.png

6.通过firewall-cmd –list-all 可以看到自己本地的ip地址已经被拉黑

5.png

7.我们也可以对在/etc/firewalld/zones/public.xml文件中对防火墙的规则进行直接操作方便
我们后期对拉黑的ip进行移除修改等操作

4.png

总结:

这个脚本只是给出一个样例,里面的阀值num需要根据自己网站的访问量自行调整 也可以根据这个脚本来演化
比如基于访问特征拉黑ip,有兴趣的可以自己研究。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

关注

0

粉丝

9021

主题
精彩推荐
热门资讯
网友晒图
图文推荐

Powered by Pcgho! X3.4

© 2008-2022 Pcgho Inc.