NGINX根据客户端真实ip限制/referer限制

最近后端服务被攻击,所有接口被疯狂调用,记录一次nginx应对攻击的方案,包括黑白名单、referer限定等。

一、NGINX根据用户真实IP限源

1、nginx日志打印

在nginx.conf配置文件中的http模块打印

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';

2、NGINX根据用户真实IP限源

同样在http模块中,将客户端真实ip记录在X-Forwarded-For中

#配置使deny可以根据客户端真实ip禁用
real_ip_header X-Forwarded-For;
set_real_ip_from 0.0.0.0/0;
real_ip_recursive on;

ngx_http_realip_module 模块有如下三个指令;

①:set_real_ip_from

  • 该指令用于设置授信 IP,即请求过来时由某个头字段携带的 IP 中 nginx 自己认为可信的 IP,该头字段由 real_ip_header 指令指定;
  • 该指令值一般是前几层代理的 IP ;

②:real_ip_header

  • 该指令用于告知 nginx 从每个客户端请求中的哪个头字段来获取客户端真实的 IP;
  • 该指令默认值是 X-Real-IP,不过现在主流的都是通过 X-Forwarded-For 字段来获取客户端真实 IP,X-Forwarded-For 目前已经是主流运用的字段了;
  • 我们也可以在 nginx 配置时自定义一个新的字段;

③:real_ip_recursive

nginx 从 real_ip_header 指令指定的头字段中获取 IP,可能会有多个 IP 值;

  • 当 real_ip_recursive 指令值为 off,nginx 从获取到 IP 值中从右往左(也即从后往前)的顺序,以最后一个 IP 值作为客户端的真实 IP ,此时不会排除授信 IP;
  • 当 real_ip_recursive 指令值为 on,nginx 从获取到 IP 值中从右往左(也即从后往前)的顺序,排除 set_real_ip_from 指令指定的授信 IP,以最后一个非授信 IP 值作为客户端的真实 IP ;

3、NGINX的黑白名单deny/allow

经过slb的请求默认会将真实ip放在$http_x_forwarded_for中,根据日志中打印出的攻击ip进行禁用,同样在http模块中。

#禁用某个ip
deny 123.123.123.123;
#禁用某个ip段
deny 123.123.123.0/24;
#禁用全部ip
deny all;

Nginx的deny和allow指令是由ngx_http_access_module模块提供,Nginx安装默认内置了该模块。

语法
1、allow 指令
        允许哪些 IP 访问,all 表示允许所有;
2、deny 指令
        禁止哪些 IP 访问,all 表示禁止所有;
作用域 http / server / location / limit_except ;

二、nginx根据referer限制

根据nginx日志中打印的$http_referer来进行限制

1、Nginx Referer模块

nginx模块ngx_http_referer_module通常用于阻挡来源非法的域名请求。当一个请求头的Referer字段中包含一些非正确的字段,这个模块可以禁止这个请求访问站点。构造Referer的请求很容易实现,所以使用这个模块并不能100%的阻止这些请求。

2、valid_referers 指令

语法: valid_referers none | blocked | server_names | string … ;

配置段: server, location

指定合法的来源'referer', 他决定了内置变量$invalid_referer的值,如果referer头部包含在这个合法网址里面,这个变量被设置为0,否则设置为1. 需要注意的是:这里并不区分大小写的.

参数说明:

none:请求头缺少Referer字段,即空Referer
blocked:请求头Referer字段不为空(即存在Referer),但是值被代理或者防火墙删除了,这些值不以“http://”或“https://”开头,通俗点说就是允许“http://”或"https//"以外的请求。
server_names:Referer请求头白名单。
arbitrary string:任意字符串,定义服务器名称或可选的URI前缀,主机名可以使用*号开头或结尾,Referer字段中的服务器端口将被忽略掉。
regular expression:正则表达式,以“~”开头,在“http://”或"https://"之后的文本匹配。

e.g.


server {......#配置合法referers,其余拦截#微信小程序域名:servicewechat.com  浙里办域名:mapi.zjzwfw.gov.cnvalid_referers blocked servicewechat.com mapi.zjzwfw.gov.cn Apifox;if ($invalid_referer) { return 403 ; } ......
}

上面配置合法的Referer为 servicewechat.com / mapi.zjzwfw.gov.cn / Apifox 和 无Referer(浏览器直接访问,就是没有Referer的) ; 其他非法Referer请求过来时, $invalid_referer 值为1 , 就return 403。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/21030.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

可以绘制插画的软件

对于插画来说,风格多种多样,在设计软件上进行设计绘画的时候也会用到不同的工具手法,但是具体使用的软件都大同小异,这里就分享几款可以用于最近流行的扁平风风格的设计软件,有想法的可以试一试哦。 Pixso 这款软件不…

ChatGPT 速通手册——模仿唐诗宋词,和模仿莎士比亚十四行诗的中英文差距

模仿唐诗宋词,和模仿莎士比亚十四行诗的中英文差距 根据前文介绍的三大反例特性,我们可以尝试给出几个典型的反例。比如诗词创作,尤其是长短句约束更加严格的词牌,对照反例特性: 有明确且唯一可行的标准定义——一个…

二代测序群体进化-GWAS分析及案例解析

群体进化-gwas分析 群体进化基础分析 PCA 分析原理 PCA(Principal Component Analysis),即主成分分析方法,是一种使用最广泛的数据降维算法。PCA的主要思想是将n维特征映射到k维上,这k维是全新的正交特征也被称为主成分,是在原有…

差异表达基因分析[转载]

转自:https://wenku.baidu.com/view/2532ab5176c66137ef06191a.html 1.转录组 2.转录组研究重要性 3.转录组研究技术 3.1三种的比较 3.2技术比较 4.高通量测序技术的应用 5.转录组数据分析 6.差异表达基因分析 4.1FC法——差异表达倍数法 那么也就是说A与B是2倍的关…

【生信】初探基因定位和全基因组关联分析

初探QTL和GWAS 文章目录 初探QTL和GWAS实验目的实验内容实验题目第一题:玉米MAGIC群体的QTL分析第二题:TASSEL自带数据集的关联分析 实验过程玉米MAGIC群体的QTL分析① 包含的数据② 绘制LOD曲线株高对应的QTL TASSEL自带数据集的关联分析TASSEL简介实际…

TCGA/GTEx泛癌数据任意基因表达量展示

有了泛癌的数据之后就可以进行各种分析了,当然这些都是在R语言的基础上进行的。如果你不会R语言,也可以通过各种各样的网页工具实现。 我们今天就简单展示下任意基因在泛癌图谱中的表达量情况。 TCGA,GTEx,TCGAGTEx的泛癌数据都整理好了,大…

公共基因表达数据分析系统genevestigator,再也不愁表达数据的查询和比较了

还在为不会分析大数据发愁吗? 还在为无法查询和比较发表文章中感兴趣基因表达值抱怨吗? 使用genevestigator,高效利用已经有研究结果,轻松与同行研究结果比较!!! GENEVESTIGATOR “基因研究…

TBtools:基因家族分析简单流程

写在前面:非常感谢CJ开发出如此强大的TBtools工具。作者(CJchen-0410)在B站上有新手教程,大家可以给大神点个关注。 本文以《Genome-wide identification and phylogenetic analysis of rice FTIP gene family》为例,…

新版TCGA的突变SNP数据添加临床信息

文章目录 加载数据和R包读取数据 今天给大家演示下如何用自己的数据完成maftools的分析,主要是snp文件和临床信息的制作,其实很简单,但是网络上的教程都说的不清楚。 这次我们直接用之前TCGA-COAD和TCGA-READ合并后的数据演示,合…

Git专题:历史记录清理:保留代码并删除一年前的提交记录

29.1 克隆最后一个版本 我们在克隆一个使用了很久的 Git 仓库时候可能会发现耗费的时间非常长,这是因为 Git 会拉取所有的历史版本导致,如果我们想让 Git 在克隆代码的时候快一些,可以在git clone命令行后面加--depth1参数,这样 …

清除 input 的历史记录

问题描述 当input框输入数据时&#xff0c;会显示之前的输入的数据 原因 input的属性autocomplete默认为on&#xff0c;其含义代表让浏览器自动记录之前输入的值 解决办法 在input标签添加autocomplete"off"属性 <input type"text" autocomplete&qu…

git 清除所有历史记录

git 清除所有历史记录 有些时候&#xff0c;git 仓库累积了太多无用的历史更改&#xff0c;导致 clone 文件过大。如果确定历史更改没有意义&#xff0c;可以采用下述方法清空历史 先 clone 项目到本地目录 (以名为 mylearning 的仓库为例) $ git clone gitgitee.com:badboyco…

清除微信登录历史、自定义默认文件保存位置以及聊天记录还原

这篇文章的本意呢&#xff0c;其实对个人用户意义不大&#xff0c;因为桌面端微信本身提供了自定义用户数据文件存放路径的设置项&#xff0c;那么为什么要写出来这么一篇看似无用的教程来呢&#xff1f;是因为微信本身的特殊性&#xff0c;需要用户登录以后才可以修改设置&…

如何清除Git历史变更记录

以前公司的一个项目代码&#xff0c;从2014年一直存活到了2021年&#xff0c;目前应该还在被使用。整个代码将近2G&#xff0c;git文件极大&#xff0c;其中很大的一个原因是代码里存放过apk文件。如此大的项目&#xff0c;导致下载、发布很困难。 最初打算创建一个新的远程仓…

LLM时代NLP研究何去何从?一个博士生的角度出发

深度学习自然语言处理 原创作者&#xff1a;Winni 前言 最近&#xff0c;大语言模型&#xff08;LLMs&#xff09;在许多任务上表现出接近人类水平的性能&#xff0c;这引发了行业兴趣和资金投入的激增&#xff0c;有关LLMs的论文最近也层出不穷。 看起来&#xff0c;NLP领域似…

AIhelp智能问答

前言 2023年,科技圈里,持续爆火的科技应用,毫无疑问是生成式AI,chatGPT了的,之所以令人惊叹,正是因为它的强大 可以这么认为,chatGPT能够解决很多问题,尤其是问答,问题答案的搜索,远比百度,google要精准,方便得多 如何提出高质量的问题,写好一个promot提示词,尤为重要,提出问题…

RLHF-基于人类反馈的强化学习

RLHF 文章目录 RLHF强化学习基础回顾为什么要使用基于人类反馈的强化学习大纲RLHF的起源大预言模型中的RLHF案例 ChatGPT RLHF中的技术细节预训练语言模型训练奖励模型基于RL进行微调 RLHF 的未来 强化学习基础回顾 智能体通过采取行动与环境进行交互&#xff0c;并返回状态和奖…

GPT-4 API 接口调用及价格分析

GPT-4 API 接口调用及价格分析 15日凌晨&#xff0c;OpenAI发布了万众期待的GPT-4&#xff01;新模型支持多模态&#xff0c;具备强大的识图能力&#xff0c;并且推理能力和回答准确性显著提高。在各种专业和学术基准测试上的表现都媲美甚至超过人类。难怪OpenAI CEO Sam Altm…

穷人应该先买房还是先创业?

我个人建议先买房。既然是穷人&#xff0c;那么肯定资金不宽裕&#xff0c;这种情况下不应该是先买房来保障自己的生活&#xff0c;让自己过的安稳吗&#xff1f; 可能大家会问&#xff0c;为什么不能先创业呢&#xff1f;功成名就&#xff0c;买车买房不香吗&#xff1f;但是我…

穷人的新年红包系统,单节点 12W TPS

每年春节都是红包漫天飞&#xff0c;今年百度红包成为了最耀眼的明星。本届春晚红包活动&#xff0c;百度APP 最终累计互动量达到 208 亿次&#xff0c;百度 DAU 峰值突破 3 亿。面对这些数字&#xff0c;我不由感叹大厂技术的强大&#xff0c;机器资源的海量。作为一个穷人&am…