nginx map ip黑名单

简介: nginx map ip黑名单

这个十一过的真不消停,太多的cc攻击,一直在暴力破解我们的一个接口,攻击ip好几千个,而且经过了几层代理。第三方没有nginx的日志格式最前面设置了http_x_forwarded_for和remote_addr两个字段,访问日志出现了一堆代理IP,如下图:
image
因为用了第三方web防火墙,所以remote_addr获取的最后一个IP地址是第三方的,前面所有的IP都是经过的代理层,而且是伪造的。跟第三方技术人员沟通后,倒数第二个IP地址应该是攻击源IP。还不能用deny去拒绝,因为deny默认用的remote_addr变量。也不能一个一个用if判断去写。
经过查询资料nginx的map应该能解决我这个问题。
1、编写map.conf文件,内容如下:

map $http_x_forwarded_for $access {
    default false;
    include /etc/nginx/conf.d/ip.list;
}

2、写个脚本统计出攻击ip,我取出的是ip前三段,可以根据具体需求进行修改

#!/bin/bash
cat /var/log/nginx/access.log | awk -F'-' '{print $1}' | awk '{if ($3!="") print}' | awk '{$NF="";print}' | awk '{print $NF}' | sort | uniq -c | sort -nr | awk '{print $2}' | awk -F'.' {'prin
t $1"."$2"."$3'} | sort | uniq -c | sort -nr | awk '{print $2}' | sed 's/^/~/' | sed 's/$/ true;/' > /etc/nginx/conf.d/ip.list

执行完脚本取出的攻击ip如下
image
3、在你的站点文件里面加入如下内容:

if ($access = true) {
     return 303;
}

4、重启nginx服务即可!

nginx -s reload

验证如下:
image

目录
相关文章
|
6月前
|
应用服务中间件 nginx
树莓派安装Nginx服务结合内网穿透实现无公网IP远程访问
树莓派安装Nginx服务结合内网穿透实现无公网IP远程访问
|
6月前
|
运维 负载均衡 应用服务中间件
LNMP详解(九)——Nginx虚拟IP实战
LNMP详解(九)——Nginx虚拟IP实战
131 2
|
6月前
|
Java 应用服务中间件 nginx
Nginx之服务端获取真实客户端IP
Nginx之服务端获取真实客户端IP
269 5
|
3月前
|
应用服务中间件 Linux nginx
在Linux中,如何统计ip访问情况?分析 nginx 访问日志?如何找出访问页面数量在前十位的ip?
在Linux中,如何统计ip访问情况?分析 nginx 访问日志?如何找出访问页面数量在前十位的ip?
|
3月前
|
应用服务中间件 持续交付 nginx
[nginx]借助nginx实现自动获取本机IP
[nginx]借助nginx实现自动获取本机IP
|
3月前
|
应用服务中间件 nginx 数据安全/隐私保护
nginx配置源IP访问控制
nginx配置源IP访问控制
|
5月前
|
Java 应用服务中间件 API
springboot+nginx获取真实IP
springboot+nginx获取真实IP
|
6月前
|
监控 数据可视化 安全
如何查找访问 Nginx 的前 10 个 IP?
【5月更文挑战第1天】
138 1
如何查找访问 Nginx 的前 10 个 IP?
|
6月前
|
域名解析 弹性计算 应用服务中间件
基于nginx反向代理实现OSS固定域名IP访问
本文基于阿里云OSS手册:https://help.aliyun.com/zh/oss/use-cases/use-an-ecs-instance-that-runs-centos-to-configure-a-reverse-proxy-for-access-to-oss,继续深入讨论如何利用nginx反向代理,实现固定的IP/域名访问OSS bucket。官方文档能够解决大部分的反向代理固定IP访问oss bucket的场景,但是对于必须使用域名作为endpoint的系统,会出现signatrue鉴权问题。本文继续在官方文档的基础上,将反向代理需要域名作为endpoint的场景补齐方案。
|
6月前
|
Ubuntu 应用服务中间件 Linux
nginx 配置代理ip访问https的域名配置
nginx 配置代理ip访问https的域名配置
1065 2