惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
V2EX
J
Java Code Geeks
MongoDB | Blog
MongoDB | Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Blog — PlanetScale
Blog — PlanetScale
A
About on SuperTechFans
Engineering at Meta
Engineering at Meta
美团技术团队
N
Netflix TechBlog - Medium
月光博客
月光博客
博客园 - 三生石上(FineUI控件)
F
Fortinet All Blogs
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
MyScale Blog
MyScale Blog
aimingoo的专栏
aimingoo的专栏
Last Week in AI
Last Week in AI
The Cloudflare Blog
量子位
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件
腾讯CDC
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
D
DataBreaches.Net
H
Hackread – Cybersecurity News, Data Breaches, AI and More

LCZBlog

猎奇向:如何自动化地签发与轮替 Google Trust Services 的 7 日证书 | LCZBlog 又至一月月明时 | LCZBlog 又至一月月明时 在一切尘埃落定之时:记我的 K12 生活 | LCZBlog 在一切尘埃落定之时:记我的 K12 生活 游记与流水账 | 山东省济南市 与 上海市 | 250703-07 | LCZBlog 游记与流水账 | 山东省济南市 与 上海市 | 250703-07 中国科学技术大学第十一届信息安全大赛 Write Up | LCZBlog 中国科学技术大学第十一届信息安全大赛 Write Up 2024“京华杯”信息安全综合能力竞赛 Write Up | LCZBlog 2024“京华杯”信息安全综合能力竞赛 Write Up Windows 11, 版本 24H2 现已面向公众可用! | LCZBlog Windows 11, 版本 24H2 现已面向公众可用! 通过配置 NGINX 实现仅获取可信来源的真实 IP 请求头 Apple Vision Pro 初体验 | LCZBlog Apple Vision Pro 初体验 聊聊近些日子我们部署的针对特定地区特定运营商的阻断策略 | LCZBlog 聊聊近些日子我们部署的针对特定地区特定运营商的阻断策略 介绍 Windows 11 检查点累积更新 | LCZBlog 介绍 Windows 11 检查点累积更新
通过配置 NGINX 实现仅获取可信来源的真实 IP 请求头 | LCZBlog
2024-08-28 · via LCZBlog

通常情况下,NGINX 直接认为向它发起请求的 IP 为 CLIENT_IP。如果所有的访客都是直接请求这个 NGINX 服务,那将是多么完美的事情,NGINX 将准确地获取每个请求的客户端 IP 地址。

然而,在实际的生产环境中,为了更好地体验,我们总会将源站置于加速网络之后。在这种情况下,请求源站的就不再是真实的客户端了,而是加速网络的边缘节点(或者专门用于回源的中间源节点)。

根据我们小学 2.5 年级学过的知识,我们知道,通常情况下,加速网络在回源时会携带 X-Forwarded-For 标头。「这还不简单吗?我直接将客户端 IP 用 XFF 标头内容替代就好了。」你心想。殊不知,你的大意带来了严重的安全风险。在 N+2.5 天后,当你审计日志时,你将对着列表中的一大串 IP 地址为 127.0.0.1 的恶意请求感到无从下手。

为什么我们需要仅从可信来源获取真实 IP?

我们知道,请求头中的内容并非完全不可伪造的。事实上,我们完全可以伪造一个值为 127.0.0.1 的 XFF 头,并直接请求源服务器。如果源服务器只是简单地处理 XFF 与真实 IP 的映射,它当然会合理地认为这个请求的真实 IP 是 127.0.0.1。

当然,这类问题可以通过网络层的配置解决——只放行可信 IP 入站即可。今天我们仅探讨从 NGINX 软件层面进行处理。

如何做?

通过 set_real_ip_from 指定可信来源。

比如,如果你正在使用腾讯云 CDN,那么你需要在 NGINX 配置文件中这样书写:

# 处理 X-Forwarded-For
real_ip_header X-Forwarded-For;

# 指定多个可信的代理服务器 IP 地址范围
# 腾讯云
set_real_ip_from 101.71.hidden.0/24;
...
set_real_ip_from 43.140.hidden.0/24;

image 13

在腾讯云 CDN 控制面板 回源节点查询 功能中可以查询到特定加速域名的回源 IP 段,点击右侧下载即可导出为文件,按上方形式书写即可。记得行末的分号。

好啦,又水了一篇文章。