4. 自动封IP和解IP
对于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相关推荐
- Nginx自动封禁可疑Ip
文章目录 一.Nginx封禁ip 1.简介 2.nignx 禁止IP访问 2.1 方法一 2.2 方法二 3.关于 deny 的使用 二.脚本自动封禁Ip 1.流程介绍 2.脚本实战 2.1 核心脚本 ...
- Nginx自动封禁IP
个人网站总被攻击?那就写个自动封禁IP的脚本吧. 思路 AWK统计access.log,记录每分钟访问超过100次的ip,然后配合nginx进行封禁. 编写shell脚本. 定时任务跑脚本. 好,思路 ...
- Nginx+Lua脚本+Redis 实现自动封禁访问频率过高IP
前言:由于公司前几天短信接口被一直攻击,并且攻击者不停变换IP,导致阿里云短信平台上的短信被恶意刷取了几千条,然后在Nginx上对短信接口做了一些限制 临时解决方案: 1.查看Nginx日志发现被攻击 ...
- Ngnix IP封禁以及实现自动封禁IP
1.在ngnix的conf目录下创建一个blockip.conf文件 2.里面放需要封禁的IP,格式如下 deny 1.2.3.4; 3.在ngnix的HTTP的配置中添加如下内容 include b ...
- cs1.6服务器ip地址文件,cs1.6服务器端封禁的IP在那个文件夹里?
CS1.6自架服务器封禁IP小弟我自己架了一个校园局域网服务器,有些玩家我不想让他进来,封IP,输入指令addip 0 ***.***.***.**以后,该IP玩家被ban,禁止进入服务器,查询lis ...
- 封禁恶意IP访问在我司实践总结
1.需求分析 随着公司业务量的增长,有些人可能就会动些小心思搞你一下,爬虫或者恶意访问你,如何限制这些用户访问呢,今天做下总结,大体有三种方案:代码层面:http服务器(以nginx为例):服务器网络 ...
- 【代理脚本】只有无尽的跳转,没有封禁的IP
脚本简介: 在做渗透测试的过程中,最让人头疼的无非就是ip被封了.因为学习需要简单的写了一个快代理的高匿代理ip的爬虫.该脚本涉及了python爬虫的诸多知识点的运用.简单的实现爬取ip并对ip进行有 ...
- iptables一次性封多个ip,使用ipset 工具
ipset是什么? ipset是iptables的扩展,它允许你创建 匹配整个地址集合的规则.而不像普通的iptables链只能单IP匹配, ip集合存储在带索引的数据结构中,这种结构即时集合比较大也 ...
- linux防火墙多个 多个ip配置,iptables一次性封多个ip,使用ipset 工具
ipset是iptables的扩展,它允许你创建 匹配整个地址集合的规则.而不像普通的iptables链只能单IP匹配, ip集合存储在带索引的数据结构中,这种结构即时集合比较大也可以进行高效的查找, ...
最新文章
- Pycharm设置pylint real-time scan实时扫描代码规范
- ffmpeg转码速度控制方法
- 计算机网络 实验 使用端口完成地址转换,Wireshark抓包工具计算机网络实验解析...
- 获取网站服务器数据库,利用XmlHttp获取服务器数据库数据以表格的方式返回客户的代码示例...
- 中山计算机辅助设计报考,中山模具设计与CNC数控编程专业
- [引]符号的英文说法
- 强化学习中价值迭代和策略迭代各有什么优缺点?
- wireshark 报文分析心得 -- Identification 使用说明
- wxid如何找到原始id,技术分享
- JavaScript点名器
- 2018第四届美亚杯全国电子数据取证大赛团队赛wp
- springboot+vue酒店电子商务平台
- EIGRP(Enhanced Interior Gateway Routing Protocol,增加型内部网关路由协议)
- CDA数据分析师携手万宝盛华开启人才培训新篇章
- 杭电ACM-LCY算法进阶培训班-专题训练(矩阵快速幂)
- ChatGPT入门案例|商务智能对话客服(三)
- 球半足球推荐,欧冠杯决赛:利物浦 VS 皇家马德里
- 一段百年征程的有限单群
- 【C#】软件注册和认证
- 基于模糊补偿的液压机械臂轨迹跟踪控制