使用python控制nginx禁封ip

python控制nginx禁封ip

nginx中的access.log最近有大量的用户访问,怎么样屏蔽掉在一定时间段内访问次数多的ip呢?

测试准备:

  两个tomcat,一个nginx做均衡负载,服务器上装有python3

  python脚本

#服务器每60s循环一次,抓取到超过200次以上的ip地址写入rainbol_ip.conf文件中,重启nginx禁封生效
import time
import datetime
import os
point = 0

while True:
    with open(‘access.log‘, encoding=‘utf-8‘) as f:
        if f:
            point_action = f.seek(point)
            all_ip = []
            for i in f:
                ip = i.split("-")[0]
                all_ip.append(ip)
            point = f.tell()
            all_ip_set = set(all_ip)
            for i in all_ip_set:
                if all_ip.count(i) > 200:
                    with open(‘rainbol_ip.conf‘,‘a+‘,encoding=‘utf-8‘) as f:
                            f.write("deny " + i + ";   # %s禁封\n" % datetime.datetime.now())
                            os.system("nginx -s reload")
    time.sleep(60)

  新增加一个配置文件(可自定)和nginx.conf放在一个目录下  touch rainbol_ip.conf

  把python脚本放在access.log目录中

  nginx.conf中http{}或者server{}块中加入include rainbol_ip.conf;

测试开始:

  重启nginx  nginx -s reload

  启动python脚本文件后台执行  python3 access.log &

  使用jmeter压测,当一段时间后访问页面

  

查看禁封配置日志  cat rainbol_ip.conf

//屏蔽单个ip访问

deny IP; 

//允许单个ip访问

allow IP; 

//屏蔽所有ip访问

deny all; 

//允许所有ip访问

allow all; 

//屏蔽整个段即从123.0.0.1到123.255.255.254访问的命令

deny 123.0.0.0/8

//屏蔽IP段即从123.45.0.1到123.45.255.254访问的命令

deny 124.45.0.0/16

//屏蔽IP段即从123.45.6.1到123.45.6.254访问的命令

deny 123.45.6.0/24

//如果你想实现这样的应用,除了几个IP外,其他全部拒绝,
//那需要你在guolv_ip.conf中这样写

allow 1.1.1.1;
allow 1.1.1.2;
deny all; 

参考地址https://blog.csdn.net/u013372487/article/details/51841364/

版权声明:本文原创发表于 博客园,作者为 RainBol本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。

原文地址:https://www.cnblogs.com/RainBol/p/9762176.html

时间: 2024-09-30 14:09:37

使用python控制nginx禁封ip的相关文章

python分析nginx日志的ip,url,status

Python 脚本如下: #!/usr/bin/env python #_*_coding:utf-8 _*_ __author__ = 'lvnian' #!/usr/bin env python # coding: utf-8 import MySQLdb as mysql import sys, os db = mysql.connect(user="root",passwd="[email protected]",db="intest",

利用python获取nginx服务的ip以及流量统计信息

#!/usr/bin/python #coding=utf8 log_file = "/usr/local/nginx/logs/access.log" with open(log_file) as f: contexts = f.readlines() # define ip dict### ip = {} # key为ip信息,value为ip数量(若重复则只增加数量) flow = {} # key为ip信息,value为流量总和 sum = 0 for line in cont

python分析nginx日志的ip(来源)

Python 脚本如下: #!/usr/bin/env python #_*_coding:utf-8 _*_ __author__ = 'gaogd' import MySQLdb as mysql import datetime import sys, os, urllib2, json db = mysql.connect(user="root",passwd="[email protected]",db="intest",host=&qu

一个自动封IP防御DDOS脚本

DDoS deflate 工作原理 每分钟检测一次IP连接状况,当某些IP连接超过配置脚本限制的连接数,程序会自动禁止这些IP一段时间,以达到防御攻击的目的 DDoS deflate官方网站:http://deflate.medialayer.com/ Installation 安装 wget http://www.inetbase.com/scripts/ddos/install.sh  chmod 0700 install.sh  ./install.sh Uninstallation 卸载

nginx封ip,禁用IP段的设置说明

nginx的ngx_http_access_module 模块可以封配置内的ip或者ip段,语法如下: deny IP; deny subnet; allow IP; allow subnet; # block all ips deny all; # allow all ips allow all; 如果规则之间有冲突,会以最前面匹配的规则为准. 如何配置禁用ip或ip段呢? 下面说明假定nginx的目录在/usr/local/nginx/ 首先要建一个封ip的配置文件blockips.conf

对nginx服务器进行日志分析并且封IP

简单的日志分析排除命令,不过建议使用goacess日志分析视图化观察比较好,面对一些爬虫攻击,可以在nginx.conf配置文件里调用limit requst模块来限制连接数,如限制每秒钟的请求数:rate=10r/s,这是要依据业务情况来设置的. 1  分析日志封IP cd /nginx/logs [[email protected]]# awk '{print $1}' blog-access_log |sort|uniq -c|sort -rn -k1 280 "192.168.183.1

python统计apache、nginx访问日志IP访问次数并且排序(显示前20条)

前言:python统计apache.nginx访问日志IP访问次数并且排序(显示前20条).其实用awk+sort等命令可以实现,用awk数组也可以实现,这里只是用python尝试下. apache脚本: ips = {} with open("/root/mail_access_log-20180629") as fh:     for line in fh:         ip = line.split(" ")[0]         if 6 < le

python爬虫+多线程+多进程+构建IP代理池

目标网站:静听网 网站url:http://www.audio699.com/ 目标文件:所有在线听的音频文件 附:我有个喜好就是晚上睡觉听有声书,然而很多软件都是付费才能听,免费在线网站虽然能听,但是禁ip很严重,就拿静听网来说,你听一个在线音频,不能一个没听完就点击下一集,甚至不能快进太快,否则直接禁你5分钟才能再听,真的是太太讨厌了... 于是我就想用爬虫给它爬下来存储本地就nice了. 我把我的大概分析步骤分享出来. 步骤1: 我查看静听网网页url有一个规律,基网址是http://ww

nginx 配置禁用ip地址访问

做过面向公网WEB运维的苦逼们肯定见识过各种恶意扫描.拉取.注入等图谋不轨行为吧?对于直接对外的WEB服务器,我们可以直接通过 iptables . Nginx 的deny指令或者是程序来ban掉这些恶意请求. iptables 需要root权限配置 下面介绍使用nginx 来配置ip禁用 首选需要我们熟悉nginx 的deny指令 allow 语法:     allow address | CIDR | unix: | all; 默认值:     - 配置段:     http, server