NGINX动态XFF黑名单配置

article/2025/9/20 18:44:34

通过XFF地址动态限制访问

方案特点:

  1. 无需reload
  2. API管理

NGINX PLUS的KEYVAL是可以通过API进行管理的内部可持久化kv存储。

KEYVAL查找XFF地址是否在黑白名单中,来实现访问控制。

KEYVAL存放黑白名单列表:

  • 定义键值为1为白名单
  • 定义键值为0为黑名单
  • 不在列表的IP为空值

列表格式:

        "10.0.0.1": "0",

       "10.0.0.4": "0",

       "10.0.0.2": "1",

       "10.0.0.3": "0"

动态黑白名单限制配置

http {

     map $http_x_forwarded_for $client_ip {

        "~(?P<ip>\d+\.\d+\.\d+\.\d+)" $ip;

        "~(?P<ip>[^;]+)" $ip;

        default "255.255.255.255";      #如果XFF地址格式错误,定义为特殊地址

    }

    keyval_zone zone=one:2m state=/var/lib/nginx/state/one.keyval

   

    keyval $client_ip $target zone=one;   #用client_ip查找IP,匹配后赋值给$target

   }

location /example {

  if ($target != 1)   #不为1则禁止访问。 定义1为白名单标记

  {

    return 403 "you can't access";  }

    proxy_pass http://192.168.145.130:800/;

}

}

测试禁止IP访问

curl -H "X-Forwarded-For: 11.0.0.1" http://192.168.145.130:8888/example

 

命令行查看黑白名单

curl -X GET -s http://192.168.145.130:8888/api/7/http/keyvals/one | jq

{

  "10.0.0.1": "0",

  "10.0.0.4": "0",

  "10.0.0.2": "1",

  "10.0.0.3": "0"

}

浏览器查看黑白名单

 

初次创建记录

curl -X POST -d '{"10.0.0.1":"1",  "10.0.0.2":"1", "10.0.0.3":"1"}' -s http://192.168.145.130:8888/api/7/http/keyvals/one

追加记录

curl -X POST -d '{"20.0.0.1": "1" }' -s http://192.168.145.130:8888/api/7/http/keyvals/one

修改记录

curl -X PATCH -d '{"20.0.0.1": "0" }' -s http://192.168.145.130:8888/api/7/http/keyvals/one

删除所有记录

curl -X DELETE -s http://192.168.145.130:8888/api/7/http/keyvals/one

  1. NGINX管理方案

新建NGINX

  1. 创建nginx
  2. 加载配置模板
  3. 输入黑白名单
  4. 确认黑白名单

个别黑白名单管理

  1. 查看黑白名单
  2. 添加新记录/修改记录
  3. 确认黑白名单

批量黑白名单管理

  1. 删除黑白名单
  2. 添加新记录
  3. 确认黑白名单

参考:

  1. K8S架构下配置
  2. DOCKFILE中禁止容器携带配置文件&& rm -rf /etc/nginx/nginx.conf \&& rm -rf /etc/nginx/conf.d/default.conf \Deployment配置apiVersion: apps/v1
    kind: Deployment
    metadata:name: ng-deploymentnamespace: ns1labels:app: nginx-plus
    spec:replicas: 1selector:matchLabels:app: nginx-plustemplate:metadata:labels:app: nginx-plusspec:containers:- name: xxxxxxresources:limits:cpu: "1"memory: 512Mirequests:cpu: "2"memory: 1024Miimage: xxxxxximagePullPolicy: IfNotPresentports:- name: httpcontainerPort: 80- name: apicontainerPort: 8888livenessProbe:failureThreshold: 3httpGet:path: /nginx-healthport: 80initialDelaySeconds: 10periodSeconds: timeoutSeconds: 2readinessProbe:failureThreshold: 3httpGet:path: /nginx-healthport: 80periodSeconds: 5timeoutSeconds: 2volumeMounts:- mountPath: /etc/nginx/conf.d readOnly: truename: nginx-config-per-svcvolumes:- name: nginx-config-per-svcconfigMap:name: nginx-config-per-svc
    
  3. NGINX PLUS配置
  4. load_module modules/ngx_http_js_module.so;
    user  nginx;
    worker_processes  auto;error_log  /var/log/nginx/error.log notice;
    pid        /var/run/nginx.pid;events {worker_connections  1024;
    }http {include       conf/mime.types;default_type  application/default_type;log_format main      '$remote_addr - $remote_user [$time_local]  ''"$request" $status $bytes_sent ''"$http_referer" "$http_user_agent" ''"$gzip_ratio"';log_format  download  '$remote_addr - $remote_user [$time_local] "$request" ''$status "$request_body" $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  /var/log/nginx/access.log  download;client_header_timeout  3m;client_body_timeout    3m;send_timeout           3m;client_header_buffer_size    1k;large_client_header_buffers  4 4k;gzip on;gzip_min_length  1100;gzip_buffers     4 8k;gzip_types       text/plain;output_buffers   1 32k;postpone_output  1460;sendfile         on;tcp_nopush       on;tcp_nodelay      on;send_lowat       12000;keepalive_timeout  75 20;lingering_time     30;lingering_timeout  10;reset_timedout_connection  on;fastcgi_connect_timeout 300;	fastcgi_send_timeout 300;	fastcgi_read_timeout 300;	fastcgi_buffer_size 64k;	fastcgi_buffers 4 64k;	fastcgi_busy_buffers_size 128k;	fastcgi_temp_file_write_size 128k;	map $http_x_forwarded_for $client_ip {"~(?P<ip>\d+\.\d+\.\d+\.\d+)" $ip;"~(?P<ip>[^;]+)" $ip;default "255.255.255.255";}keyval_zone zone=one:2m state=one.keyval;  keyval $client_ip $target zone=one;
    

 


http://chatgpt.dhexx.cn/article/khUVCt62.shtml

相关文章

xff-referer伪造ip地址和域名

layout: post title: “xff-referer伪造ip地址和域名” categories: [ctf] tags: [xff referer] 最新版的BurpSuite与以前版本不同&#xff0c;将raw headers hex这些二级导航栏去掉&#xff0c;改在了右侧显示&#xff0c;需要Add伪造ip和域名的时候&#xff0c;在该部分右侧底…

[CTF/网络安全] 攻防世界 xff_referer 解题详析

[CTF/网络安全] 攻防世界 xff_referer 解题详析 XFF及refererXFF格式referer格式姿势总结 题目描述&#xff1a;X老师告诉小宁其实xff和referer是可以伪造的。 XFF及referer X-Forwarded-For&#xff08;简称 XFF&#xff09;是一个 HTTP 请求头部字段&#xff0c;它用于表示 …

XCTF攻防世界练习区-web题-xff_referer

0x08 XFF Referer 【题目描述】 X老师告诉小宁其实xff和referer是可以伪造的。 【目标】 掌握有关X-Forwarded-For和Referer的知识: (1)X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项。…

ctf之xff_referer伪造

xff&#xff1a;xff 是http的拓展头部&#xff0c;作用是使Web服务器获取访问用户的IP真实地址&#xff08;可伪造&#xff09;。由于很多用户通过代理服务器进行访问&#xff0c;服务器只能获取代理服务器的IP地址&#xff0c;而xff的作用在于记录用户的真实IP&#xff0c;以及…

Web安全原理剖析(十一)——XFF注入攻击

目录 2.14 XFF注入2.14 XFF注入代码分析 2.14 XFF注入 XFF注入攻击的测试地址&#xff1a;http://127.0.0.1/sqli/xff.php。 X-Forwarded-for简称XFF头&#xff0c;它代表客户端真实的IP&#xff0c;通过修改X-Forwarded-for的值可以伪造客户端IP。通过Burp Suite住区数据包内容…

攻防世界web新手关之xff_referer

xff&#xff1a; 很多HTTP代理会在HTTP协议头中添加X-Forwarded-For头&#xff0c;用来追踪请求的来源。 X-Forwarded-For的格式如下&#xff1a; X-Forwarded-For: client1, proxy1, proxy2 X-Forwarded-For包含多个IP地址&#xff0c;每个值通过逗号空格分开&#xff0c;最…

攻防世界xff和refereer

终于把攻防世界里面WEB安全的难度一的题做完了&#xff08;一些个我认为比较难的题后面也会写个博客&#xff09;&#xff0c;开始做难度二题。 ----------------------------------------------------------------------------开始正经 原题&#xff1a;攻防世界 这个题难度…

浅谈“XFF注入”

漏洞名称&#xff1a; XFF注入、X-Forwarded-for注入 描述&#xff1a; XFF&#xff0c;是X-Forwarded-for的缩写&#xff0c;XFF注入是SQL注入的一种&#xff0c;该注入原理是通过修改X-Forwarded-for头对带入系统的dns进行sql注入&#xff0c;从而得到网站的数据库内容。 检测…

SQL 注入漏洞(十四)xff 注入攻击

一、xff 注入攻击 X-Forwarded-For 简称 XFF 头&#xff0c;它代表了客户端的真实 IP&#xff0c;通过修改他的值就可以伪造客户端 IP。XFF 并不受 gpc 影响&#xff0c;而且开发 人员很容易忽略这个 XFF 头&#xff0c;不会对 XFF 头进行过滤。 X-Forwarded-for 可以随意设置…

[jenkins|bugzilla]通过commit-message内容自动添加comment到bugzilla

前提&#xff1a;开发提交代码时&#xff0c;有bugid字段&#xff0c;如bugid:1234,会触发jenkins构建 目的&#xff1a;当开发修复bug时&#xff0c;期望自动在bugzilla对应bug页面中&#xff0c;添加修复comment信息&#xff0c;内容为对应提交链接 环境&#xff1a;gerrit…

Bugzilla的维护与管理

文章目录 前言一、基本概念1 超级管理员2 用户组管理员3 普通用户 二、实操演练1、参数配置1.1 必要设置1.2 常规1.3 管理策略 2、管理用户2.1 添加新用户2.2 分配权限2.3 查看用户 3、管理产品/项目4、设置字段值 三、常见问题怎么删除bug? 其他相关使用参考 前言 Bugzilla是…

Bugzilla 使用教程

作为登录用户发布Bug流程: 点击首页后--->反馈新Bug-->点击某一个产品(这里默认使用讯云)&#xff0c;如图所示 其中Component:为哪一个模块组建。 Component Description&#xff1a;组建描述 Version&#xff1a;为版本。 Product: 产品 Reporter&#xff1a;报告…

部署bugzilla(bugzilla+apache+mysql+linux)

工作原因&#xff0c;需要部署bugzilla。在此&#xff0c;容我新造个轮子。官方轮子:https://bugzilla.readthedocs.org/en/latest/installing/quick-start.html 一、准备工作 所需文件:bugzilla 版本bugzilla-5.0.2&#xff0c;传送门:https://ftp.mozilla.org/pub/mozilla.…

Bugzilla一些权限设置(bug,项目的权限)

最近公司要求给客户添加账号&#xff0c;但是又不想让他看到他不能看的项目&#xff0c;于是我开始了一些设置。首先去查了查资料 去看了官方这方面的文档 http://bugzilla.readthedocs.io/en/latest/administering/categorization.html 大概就是把用户加入群组&#xff0c…

Bugzilla使用手册

Bugzilla使用手册 Bugzilla 是一个开源的缺陷跟踪系统&#xff08;Bug-Tracking System&#xff09;&#xff0c;它可以管理软件开发中缺陷的提交&#xff08;new&#xff09;&#xff0c;修复&#xff08;resolve&#xff09;&#xff0c;关闭&#xff08;close&#xff09;等…

【Bugzilla】我按照bugzilla的官方指导进行的安装。(一)

Bugzilla 安装Bugzilla 从TarBall Bugzilla download page (2.9MB). 在该下载页面下载bugzilla。用windows的解压工具解压&#xff0c;我下载的是4.2.4. 将解压后的文件放在C:\Bugzilla. MySQL 下载MySQL 下载 MySQL 32-bit or 64-bitMSI installer from the MySQL …

Bugzilla的配置和安装

Bugzilla (bug库搭建) 先贴一下官网地址&#xff0c;在网上看好多教程都出问题&#xff0c;还是官网最可靠。&#xff08;战斗吧少年&#xff09; Bugzilla如何配置 Bugzilla官网 1.1 环境配置(局域网bug库可以移植性比较强) 操作系统&#xff1a;mac虚拟机&#xff1a; vmw…

在 Windows 上安装 Bugzilla 详解 (1)

在 Windows 上安装 Bugzilla 比在 Linux 上安装 Bugzilla 要麻烦一点&#xff0c;而且不可预见的 bug 也会比 Linux 上的略多。话虽这么说&#xff0c;大家也不用过于担忧&#xff0c;毕竟这种广泛使用且口碑不错的知名开源软件&#xff0c;质量也不会差到哪里去。 以下是在 W…

Bugzilla使用说明

Bugzilla使用说明 Bugzilla 是一个开源的缺陷跟踪系统&#xff08;Bug-Tracking System&#xff09;&#xff0c;它可以管理软件开发中缺陷的提交&#xff08;new&#xff09;&#xff0c;修复&#xff08;resolve&#xff09;&#xff0c;关闭&#xff08;close&#xff09;等…

Bugzilla简明使用手则

Bugzilla简明使用手则 1 简介&#xff1a; Bugzilla是Mozilla公司向我们提供的一个开源的免费缺陷跟踪工具。作为一个产品缺陷的记录及跟踪工具&#xff0c;它能够为你建立一个完善的Bug跟踪体系&#xff0c;包括报告Bug、查询Bug记录并产生报表、处理解决、管理员系统初始…