首页 > 系统相关 >nginx的IP封禁

nginx的IP封禁

时间:2023-06-02 11:33:13浏览次数:38  
标签:封禁 log IP nginx usr conf ip local

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

nginx的IP封禁_nginx

  1. 重启 ngnix
/usr/local/nginx/sbin/nginx -s reload
  1. 然后你就会看到IP被封禁了,你会喜提403;

nginx的IP封禁_nginx_02

  1. 小思考:如何实现使用ngnix自动封禁ip的功能
1.AWK统计access.log,记录每分钟访问超过60次的ip,然后配合nginx进行封禁
2.编写shell脚本
3.crontab定时跑脚本

好了上面操作步骤列出来了,那我们先来实现第一个吧

nginx的IP封禁_nginx_03

操作一:AWK统计access.log,记录每分钟访问超过60次的ip

awk '{print $1}' access.log | sort | uniq -cd | awk '{if($1>60)print $0}'

1. awk '{print $1}' access.log   取出access.log的第一列即为ip。
2. sort | uniq -cd  去重和排序
3. awk '{if($1>60)print $0}' 判断重复的数量是否超过60个,超过60个就展示出来

操作二:编写shell脚本,实现整体功能(写了注释代码)

#不能把别人IP一直封着吧,这里就清除掉了
echo "" > /usr/local/nginx/conf/blockip.conf

#前面最开始编写的统计数据功能
ip_list=$(awk '{print $1}' access.log | sort | uniq -cd | awk '{if($1>60)print $0}')

#判断这个变量是否为空
if test -z "$ip_list"
then
        #为空写入 11.log中,并重新启动ngnix
        echo "为空"  >> /usr/local/nginx/logs/11.log

        /usr/local/nginx/sbin/nginx -s reload

else
        #如果不为空 前面加上 deny格式和ip写入blockip.conf中
        echo "deny" $ip_list > /usr/local/nginx/conf/blockip.conf
    
        #因为前面携带了行数,所有我们需要去除掉前面的行数,写入后在读取一次
        ip_list2=$(awk '{print $3}' /usr/local/nginx/conf/blockip.conf)
        
        #最后再把读取出来的值,在次写入到blockip.conf中
        echo "deny" $ip_list2";"> /usr/local/nginx/conf/blockip.conf

        #重启ngnix
        /usr/local/nginx/sbin/nginx -s reload
        #清空之前的日志,从最新的开始截取
        echo "" > /usr/local/nginx/logs/access.log

fi

操作三:使用crontab定时,来实现访问每分钟超过60的

crontab -e 
* * * * * cd /usr/local/nginx/logs/ && sh ip_test.sh  每一分钟运行一次
systemctl restart crond.service 重启一下配置既可

nginx的IP封禁_Linux运维_04



以上学习自https://blog.csdn.net/qq_38925100/article/details/123742463

标签:封禁,log,IP,nginx,usr,conf,ip,local
From: https://blog.51cto.com/jowin/6401127

相关文章

  • Linux常用命令-unzip命令详解!
    在Linux系统中命令有很多,可进行磁盘管理、文件管理、文件传输、文档编辑等,而且相同功能的命令也有很多,比如解压缩命令,常用的有:tar、gzip、bzip2、zip、unzip、rar、unrar等,本文为大家详细介绍一下unzip命令,一起来看看吧。Linuxunzip命令用于解压缩zip文件。unzip为.zi......
  • ESXI里多个存储,找到对应存储ISCSI的IP地址
    ESXI里多个存储,找到对应存储ISCSI的IP地址   存储→数据存储→点你想知道的存储名称,(lhISCSI)点进来后复制数据区0的一堆文字,这里是naa.600a098000b6280d000001d859092b40,分区1  到存储→适配器→配置iSCSI在静态目标里面找到600a098000b6280d对应的IP是192.168.1.......
  • JavaScript中的循环(6个)
    LoopesforwhiledowhileforofforEachforin1.forfor(initialization,condition,increment/decrement){//codegoeshere}eg:for(leti=0;i<6;i++){console.log(i)}2.whileUsingthewhileloopwhenwedonotknowhowmanitera......
  • Nginx 平滑升级
    Nginx平滑升级nginx/1.20.1--->1.22.11、查看原编译参数nginx-V--------------------------------------------nginxversion:nginx/1.20.1builtbygcc4.8.520150623(RedHat4.8.5-44)(GCC)builtwithOpenSSL1.0.2k-fips26Jan2017TLSSNIsupportenab......
  • IP 地址与子网掩码概念、关系图解
    一、IP地址的概念1、IP地址组成IP地址源于Internet,是一种层次结构的地址,适合于众多的互联网。Internet中每一台主机至少有一个IP地址,且这个IP地址必须是全网唯一的。一个IP地址标识一个网络和与此网络相连的一台主机。IP地址由4个字节32位二进制数组成,使用点分十进制数表示......
  • React 配置文件 | 配置本地IP地址和端口号
    问题create-react-app默认端口号是3000,当有的别的项目占用该端口号时自己想使用别的端口号时方法1、更改node_modulesa.依次打开“node_modules”—“react-scripts”—“scripts”文件夹,找到并打开start.js文件;b.在start.js文件中查找并修改“DEFAULT_PORT”项的端口值即......
  • Nginx:CVE-2021-23017;CVE-2022-41742
    nginx安全漏洞(CVE-2021-23017)详细描述Nginx是美国Nginx公司的一款轻量级Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。nginx存在安全漏洞,该漏洞源于一个离一错误在该漏洞允许远程攻击者可利用该漏洞在目标系统上执行任意代码。受影响版本0.6.18-1.20.0解决......
  • NGINX版本信息泄露
    NGINX版本信息泄露详细描述在请求的响应信息中显示Nginx版本信息影响攻击者可能使用泄露的版本信息来确定该版本服务器有哪些安全漏洞,据此展开进一步的攻击。解决办法Nginx配置文件里增加server_tokensoff;官方语法说明:http://nginx.org/en/docs/http/ngx_http_core......
  • JavaScript 基础知识总结
    概述JavaScript基础分为三个部分:ECMAScript:JavaScript的语法标准。包括变量、表达式、运算符、函数、if语句、for语句等。DOM:DocumentObjectModel(文档对象模型),操作页面上的元素的API。比如让盒子移动、变色、改变大小、轮播图等等。BOM:BrowserObjectModel(浏览器对象模型),操......
  • 什么是ip地址?什么是物理地址? 如何查询网站IP地址和物理地址?
    ......