对于web服务器来说,出现最普遍的问题就是网站访问慢甚至访问不到,到服务器上查看后得出的结论是,这个网站被CC攻击了。什么是CC攻击?CC攻击属于DDos攻击的一种,攻击者会利用大量被劫持的“肉鸡”对攻击目标网站发起请求,并且频率很快,这样会导致目标网站的服务器承受不住请求压力而瘫痪。

CC攻击虽然看起来跟正常的访问没有什么区别,但如果我们仔细分析访问日志还是可以找到一些线索,比如某个IP访问频次很高,或者某几个IP的user_agent是固定的等等特性,有的甚至会去模仿正规的搜索引擎,比如,把自己伪装成百度的“蜘蛛爬虫”。当遇到CC攻击时,只要你肯花费一些精力来分析访问日志,终究是可以找到发起CC攻击的真凶,然后封掉他们的IP就行了。

本案例就是要自动封IP和解IP,具体需求如下:

1)每分钟分析一次访问日志 /data/logs/access_log ,日志片段如下:
50.118.255.36 - - [20/Dec/2018:12:42:04 +0800] "GET http://www.sbjudge2.com/azenv.php HTTP/1.1" 301 178 "-" "Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1; Trident/5.0)"
111.206.198.31 - - [20/Dec/2018:12:46:57 +0800] "GET /content/uploads/2018/10/%E5%A4%87%E6%A1%88%E5%9B%BE%E6%A0%87.png HTTP/1.1" 200 509 "https://www.lzxlinux.com/archives/tag/%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4/" "Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1 (compatible; Baiduspider-render/2.0; +http://www.baidu.com/search/spider.html)"
111.121.113.93 - - [20/Dec/2018:13:02:34 +0800] "GET /archives/80365/ HTTP/1.1" 200 11059 "https://www.google.com.hk/" "Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.108 Safari/537.36 MZBrowser/7.9.4"2)把访问量高于100的IP封掉;3)封过的IP都要记录到一个日志文件中;4)每隔30分钟检查一次被封的IP,把没有请求或者请求很少的IP解封;5)解封的IP记录到另外一个日志文件中。

参考脚本如下:

#!/bin/bash
#把访问量很大的IP封掉,如果30分钟内被封IP的请求几乎没有就解封IP#定义1分钟以前的时间,用于过滤1分钟以前的日志
t1=`date -d "-1 min" +%Y:%H:%M`
log=/data/logs/access_logblock_ip()
{egrep "$t1:[0-5]+" $log > /tmp/tmp_last_min.log#把1分钟内访问量高于100的IP记录到一个临时文件中awk '{print $1}' /tmp/tmp_last_min.log |sort -n |uniq -c |sort -n |awk '$1>100 {print $2}' > /tmp/bad_ip.list#计算IP的数量n=`wc -l /tmp/bad_ip.list |awk '{print $1}'`#当ip数大于0时,才会用iptables封掉它if [ $n -ne 0 ];thenfor ip in `cat /tmp/bad_ip.list`doiptables -I INPUT -s $ip -j REJECTdone#将这些被封IP记录到日志里echo "`date` 封掉的IP有:" >> /tmp/block_ip.logcat /tmp/bad_ip.list >> /tmp/block_ip.logfi
}unblock_ip()
{#首先将包个数小于5的ip记录到一个临时文件里,把他们标记为白名单IPiptables -nvL INPUT |sed '1d' |awk '$1<5 {print $8}' > /tmp/good_ip.listn=`wc -l /tmp/good_ip.list |awk '{print $1}'`if [ $n -ne 0 ];thenfor ip in `cat /tmp/good_ip.list`doiptables -D INPUT -s $ip -j REJECTdoneecho "`date` 解封的IP有:" >> /tmp/unblock_ip.logcat /tmp/good_ip.list >> /tmp/unblock_ip.logfi#当解封完白名单IP后,将计数器清零,进入下一个技术周期iptables -Z
}#取当前时间的分钟数
t=`date +%M`#当分钟数为00或30时(即每隔30分钟),执行解封IP的函数,其他时间只执行封IP的函数
if [ $t == "00" ] || [ $t == "30" ];thenunblock_ipblock_ip
elseblock_ip
fi

增加定时任务:

* * * * * /bin/bash /usr/local/sbin/blockip.sh &>/tmp/blockip.log

4. 自动封IP和解IP相关推荐

  1. Nginx自动封禁可疑Ip

    文章目录 一.Nginx封禁ip 1.简介 2.nignx 禁止IP访问 2.1 方法一 2.2 方法二 3.关于 deny 的使用 二.脚本自动封禁Ip 1.流程介绍 2.脚本实战 2.1 核心脚本 ...

  2. Nginx自动封禁IP

    个人网站总被攻击?那就写个自动封禁IP的脚本吧. 思路 AWK统计access.log,记录每分钟访问超过100次的ip,然后配合nginx进行封禁. 编写shell脚本. 定时任务跑脚本. 好,思路 ...

  3. Nginx+Lua脚本+Redis 实现自动封禁访问频率过高IP

    前言:由于公司前几天短信接口被一直攻击,并且攻击者不停变换IP,导致阿里云短信平台上的短信被恶意刷取了几千条,然后在Nginx上对短信接口做了一些限制 临时解决方案: 1.查看Nginx日志发现被攻击 ...

  4. Ngnix IP封禁以及实现自动封禁IP

    1.在ngnix的conf目录下创建一个blockip.conf文件 2.里面放需要封禁的IP,格式如下 deny 1.2.3.4; 3.在ngnix的HTTP的配置中添加如下内容 include b ...

  5. cs1.6服务器ip地址文件,cs1.6服务器端封禁的IP在那个文件夹里?

    CS1.6自架服务器封禁IP小弟我自己架了一个校园局域网服务器,有些玩家我不想让他进来,封IP,输入指令addip 0 ***.***.***.**以后,该IP玩家被ban,禁止进入服务器,查询lis ...

  6. 封禁恶意IP访问在我司实践总结

    1.需求分析 随着公司业务量的增长,有些人可能就会动些小心思搞你一下,爬虫或者恶意访问你,如何限制这些用户访问呢,今天做下总结,大体有三种方案:代码层面:http服务器(以nginx为例):服务器网络 ...

  7. 【代理脚本】只有无尽的跳转,没有封禁的IP

    脚本简介: 在做渗透测试的过程中,最让人头疼的无非就是ip被封了.因为学习需要简单的写了一个快代理的高匿代理ip的爬虫.该脚本涉及了python爬虫的诸多知识点的运用.简单的实现爬取ip并对ip进行有 ...

  8. iptables一次性封多个ip,使用ipset 工具

    ipset是什么? ipset是iptables的扩展,它允许你创建 匹配整个地址集合的规则.而不像普通的iptables链只能单IP匹配, ip集合存储在带索引的数据结构中,这种结构即时集合比较大也 ...

  9. linux防火墙多个 多个ip配置,iptables一次性封多个ip,使用ipset 工具

    ipset是iptables的扩展,它允许你创建 匹配整个地址集合的规则.而不像普通的iptables链只能单IP匹配, ip集合存储在带索引的数据结构中,这种结构即时集合比较大也可以进行高效的查找, ...

最新文章

  1. Pycharm设置pylint real-time scan实时扫描代码规范
  2. ffmpeg转码速度控制方法
  3. 计算机网络 实验 使用端口完成地址转换,Wireshark抓包工具计算机网络实验解析...
  4. 获取网站服务器数据库,利用XmlHttp获取服务器数据库数据以表格的方式返回客户的代码示例...
  5. 中山计算机辅助设计报考,中山模具设计与CNC数控编程专业
  6. [引]符号的英文说法
  7. 强化学习中价值迭代和策略迭代各有什么优缺点?
  8. wireshark 报文分析心得 -- Identification 使用说明
  9. wxid如何找到原始id,技术分享
  10. JavaScript点名器
  11. 2018第四届美亚杯全国电子数据取证大赛团队赛wp
  12. springboot+vue酒店电子商务平台
  13. EIGRP(Enhanced Interior Gateway Routing Protocol,增加型内部网关路由协议)
  14. CDA数据分析师携手万宝盛华开启人才培训新篇章
  15. 杭电ACM-LCY算法进阶培训班-专题训练(矩阵快速幂)
  16. ChatGPT入门案例|商务智能对话客服(三)
  17. 球半足球推荐,欧冠杯决赛:利物浦 VS 皇家马德里
  18. 一段百年征程的有限单群
  19. 【C#】软件注册和认证
  20. 基于模糊补偿的液压机械臂轨迹跟踪控制

热门文章

  1. 1104-捷径(DP)
  2. 打印机只能扫描图片,不能扫描成PDF解决办法
  3. python取出一组数中的奇偶数
  4. 【小说】MR设备普及后的生活
  5. 汇编之EBP的认识。
  6. CSS面试须知--盒子模型、浮动及定位
  7. 网页在线 运行 html 代码
  8. 分频器 | 二分频,三分频,n分频
  9. PE工具制作(大白菜+U盘启动模式)+系统重装
  10. poj 4005 Moles