Nginx 封锁恶意 IP,并且定时取消的两种脚本

一、使用nginx封锁

脚本逻辑:两个脚本,一个脚本检索出访问量大于固定值的IP,并把这个IP加入到nginx的封锁配置文件中,使用at任务,定时(如一个小时)启用另一个脚本,实现对封锁IP的解锁。

步骤如下:

1、打开nginx配置文件: vim /usr/local/nginx/conf/nginx.conf #这个配置文件根据自己的路径进行配置

2、在server段加入如下语句: include blockip.conf;

1、封锁ip

#!/bin/bash
max=500    #我们设定的最大值,当访问量大于这个值得时候,封锁
confdir=/usr/local/data/nginx/conf/blockip.conf #nginx封锁配置文件路径
logdir=/usr/local/data/nginx/logs/access_huke88.log  #nginx访问日志文件路径
#检测文件
test -e ${confdir} || touch ${confdir}
drop_ip=""
#循环遍历日志文件取出访问量大于500的ip
for drop_ip  in $(cat $logdir | awk '{print $1}' | sort | uniq -c | sort -rn  | awk '{if ($1>500) print $2}')
do
  grep  -q  "${drop_Ip}" ${confdir} && eg=1 || eg=0;
  if (( ${eg}==0 ));then
     echo "deny ${drop_Ip};">>$confdir  #把“deny IP;”语句写入封锁配置文件中
     echo ">>>>> `date '+%Y-%m-%d %H%M%S'` - 发现攻击源地址 ->  ${drop_Ip} " >> /usr/local/data/nginx/logs/nginx_deny.log  #记录log
  fi
done
service nginx reload

2、解锁ip

#!/bin/bash
sed -i 's/^/#&/g' /usr/local/nginx/conf/
blockip.conf  #把nginx封锁配置文件中的内容注释掉
service nginx reload   #重置nginx服务,这样就做到了解锁IP

二、使用iptables封锁

封锁逻辑:两个脚本,一个检索出访问量大于我们设定值得IP,并把这个IP添加到防火墙规则中,实现IP封锁,定时(如一小时)后,使用at服务调用另一个脚本,这个脚本把iptables规则清楚,实现对封锁IP的解锁,脚本如下:

1、封锁IP脚本

#!/bin/bash
max=500    #我们设定的最大值,当访问量大于这个值得时候,封锁
logdir=/usr/local/data/nginx/logs/access_huke88.log  #nginx访问日志文件路径
port=80
drop_ip=""
#循环遍历日志文件取出访问量大于500的ip
for drop_ip  in $(cat $logdir | awk '{print $1}' | sort | uniq -c | sort -rn  | awk '{if ($1>500) print $2}')
do
  grep  -q  "${drop_Ip}" ${confdir} && eg=1 || eg=0;
  if (( ${eg}==0 ));then
     iptables -I INPUT -p tcp --dport ${port} -s ${drop_Ip} -j DROP
     echo ">>>>> `date '+%Y-%m-%d %H%M%S'` - 发现攻击源地址 ->  ${drop_Ip} " >> /usr/local/data/nginx/logs/nginx_deny.log  #记录log
  fi
done

加入计划任务每五分钟执行一次

chmod +x /home/scripts/deny_ip.sh
#####nginx封ip######
*/5 * * * * /bin/sh /home/scripts/deny_ip.sh >/dev/null 2>&1

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏农夫安全

分享两个渗透测试中容易忽略的小漏洞

Nginx整数溢出漏洞 CVE-2017-7529 • 漏洞信息 • 当使用nginx标准模块时,攻击者可以通过发送包含恶意构造range 域的 heade...

3619
来自专栏Youngxj

微信透明头像

2095
来自专栏FreeBuf

通过补丁比对分析发现HPE IMC系统代码执行漏洞

一些开发人员认为,只要程序身份验证代码是安全的,则其程序输入也应该是相对没问题的。通常,这种想法会导致一些草率随意的代码,一旦攻击者在这些代码中发现漏洞,一些后...

3607
来自专栏FreeBuf

无招胜有招: 看我如何通过劫持COM服务器绕过AMSI

? 在Windows 10中,Microsoft的反恶意软件扫描接口(AMSI)被作为新功能被引入,作为标准接口,该功能可以让反病毒引擎将特征规则应用于机器的...

2917
来自专栏DannyHoo的专栏

iOS中合并framework

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...

1014
来自专栏Python中文社区

一个抓取豆瓣图书的开源爬虫的详细步骤

简介 基于numpy和bs4的豆瓣图书爬虫,可以分类爬取豆瓣读书300多万本图书信息,包括标题、作者、定价、页数、出版信息等 github地址:https://...

4149
来自专栏Python、Flask、Django

有没有什么好看的网址,想爬点东西做个可视化

1372
来自专栏应兆康的专栏

Selenium放弃PhantomJS改用Chrome headless

现在还可以通过使用Chrome或Firefox的headless方式来进行无界面的浏览器模拟。

623
来自专栏Youngxj

emlog后台账号密码爆破工具

1952
来自专栏GuZhenYin

[EasyUI美化换肤]更换EasyUi图标

前言 本篇文章主要是记录一些换EasyUI皮肤的过程,备忘.也欢迎美工大神各路UI给点好意见,EasyUI我就不介绍了,自行百度吧..(So..所以别问我是不是...

2858

扫码关注云+社区