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

目录
相关文章
|
25天前
|
运维 负载均衡 应用服务中间件
LNMP详解(九)——Nginx虚拟IP实战
LNMP详解(九)——Nginx虚拟IP实战
37 2
|
4月前
|
Java 应用服务中间件 nginx
Nginx之服务端获取真实客户端IP
Nginx之服务端获取真实客户端IP
152 5
|
网络协议 NoSQL 关系型数据库
【宝塔部署PHP项目】含域名访问部署、IP访问部署、数据库、端口号、Nginx等知识
【宝塔部署PHP项目】含域名访问部署、IP访问部署、数据库、端口号、Nginx等知识
1973 0
【宝塔部署PHP项目】含域名访问部署、IP访问部署、数据库、端口号、Nginx等知识
|
域名解析 监控 网络协议
使用nginx配置一个ip对应多个域名
使用nginx配置一个ip对应多个域名
1276 1
使用nginx配置一个ip对应多个域名
|
1月前
|
域名解析 网络协议 应用服务中间件
nginx-ingress通过ipv6暴露服务,并在nginx ingress日志中记录客户端真实ipv6的ip地址
本文主要通过阿里云提供的clb和nlb来实现,建议是提前创建好双栈的vpc和vsw(使用clb可以不用双栈vpc和vsw)
189 1
|
2月前
|
应用服务中间件 nginx
nginx $request_uri map 白名单
nginx $request_uri map 白名单
34 0
|
2月前
|
网络协议 应用服务中间件 Apache
在 NGINX 中根据用户真实 IP 进行限制
在 NGINX 中根据用户真实 IP 进行限制
|
3月前
|
负载均衡 Ubuntu 应用服务中间件
如何在Nginx上阻止特定IP地址的访问,以增强服务器的安全性
如何在Nginx上阻止特定IP地址的访问,以增强服务器的安全性
50 0
如何在Nginx上阻止特定IP地址的访问,以增强服务器的安全性
|
4月前
|
人工智能 应用服务中间件 nginx
树莓派上使用Nginx通过内网穿透实现无公网IP访问内网本地站点
树莓派上使用Nginx通过内网穿透实现无公网IP访问内网本地站点
|
6月前
|
移动开发 应用服务中间件 nginx
统计请求nginx最多次数的IP地址
统计请求nginx最多次数的IP地址