Nginx反向代理实现隐藏服务IP和端口

admin 2025-12-29 00:57:14 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文阐述使用Nginx反向代理隐藏后端Apache真实IP与端口的实战方法。通过配置Nginx监听公网80端口并转发至本地127.0.0.1:8080端口,实现了后端服务指纹与网络架构的隐身。对比测试表明,该方案能有效防御端口扫描与直接攻击,重构攻击面,提升Web服务器安全性。 综合评分: 85 文章分类: Web安全,安全建设,解决方案


cover_image

Nginx反向代理实现隐藏服务IP和端口

原创

dcnb

Web安全基础与实践

2025年12月24日 18:00 广东

Nginx反向代理是一个服务器端软件,通常用于构建Web应用的安全防护层与架构隐身。

Nginx反向代理通过提供一个透明的流量中转机制,允许用户将外部请求安全地转发到内部服务。它能够隔离请求的各个层面,包括客户端IP、服务端口、服务器指纹和真实架构,从而隐藏后端服务器的真实IP地址、服务端口和应用信息,以实现防御端口扫描、漏洞探测、DDoS攻击等多种攻击方式,以保护目标服务器的真实资产。

1、实验准备

以Windows10攻击机和CentOS7靶机中进行演示。

首先,打开Windows10攻击机的cmd命令窗口使用“ipconfig”指令得到Windows10攻击机的ip地址,如图1所示。

图1  查找Windows10攻击机的ip地址

随后,在CentOS7靶机的命令窗口使用“ip addr show”指令得到在CentOS7靶机的ip地址,如图2所示。

图2  查找CentOS7靶机的ip地址

2、攻击侦查三步骤

2.1 Ping测试(ICMP探测)

使用以下命令测试Windows10攻击机与目标CentOS7靶机(IP: 192.168.1.104) 之间的网络连接是否正常,确认目标主机是否存活、网络是否可达,如图3所示。

ping 192.168.1.104

图3  ping目标CentOS7靶机

2.2 网站访问测试(应用层探测)

使用以下命令访问IP为192.168.1.104的机器的HTTP服务,分析响应头和内容确认Web服务是否运行,收集服务器信息(Apache/Nginx版本和查看网站结构,寻找攻击入口,如图4所示。

curl http://192.168.1.104

图4  访问IP为192.168.1.104的HTTP服务

2.3 端口测试(服务发现)

使用下述指令让Test-NetConnection对CentOS靶机进行网络测试:要测试的目标为TCP端口80(HTTP服务默认端口),如图5所示。

tnc 192.168.1.104 -port 80

图5  Test-NetConnection网络测试

2.4 测试总结

发现目标系统 192.168.1.104 当前在线,且暴露了 Web服务(80 端口开放,可直接连接)。经识别,该服务运行 Apache 2.2 版本,存在已知安全漏洞与潜在攻击面,可被进一步利用或直接发起攻击,分析如表1所示。

表1  侦察结果分析

| | | | — | — | | 目标存在 | 192.168.1.104 在线 | | 服务暴露: | 80端口开放(Web服务) | | 可被攻击: | 可以直接建立连接 | | 有攻击面: | 运行的是Apache(从为2.2知道) |

3、模拟一次简单攻击(证明漏洞存在)

使用下述指令进行目录遍历攻击:读取系统敏感文件,获取用户列表(/etc/passwd 是Linux系统的用户信息文件),结果如图6所示。

curl http://192.168.1.104/../../etc/passwd

图6  模拟简单攻击目标靶机

Apache虽然阻止了这次攻击,但它仍然直接暴露在公网,一旦Apache有漏洞,系统直接沦陷,不仅如此,Apache主动暴露了服务器信息:版本:Apache 2.4.6 + PHP 7.2.34。这对攻击者很有用:知道版本就可以找对应漏洞,而且知道了Server at 192.168.1.104 Port 80(确认服务器位置),现在我们需要部署反向代理来增加防御层。

4、部署反向代理

Nginx防御的核心概念不是”阻挡”,而是”重构攻击面”,它将原本直接暴露的后端服务隐藏于代理层之后,使攻击者无法直接接触真实目标。如图7所示,这种设计遵循“最小暴露原则”,只将必要的代理接口呈现给外部,而将真实的服务器架构、IP地址、端口等信息完全遮蔽于内网之中。

图7  Nginx反向代理防御构架

4.1安装和配置Nginx

在CentOS7靶机依次输入下述代码实现下载EPEL仓库,安装Nginx。

yum install -y epel-release(安装EPEL仓库)yum install -y nginx(EPEL仓库安装Nginx)

输入下述代码,实现将Apache从公开监听所有IP的80端口改为仅监听本机8080端口,实现后端服务隐藏,结果如图8所示。

sed -i 's/Listen 80/Listen 127.0.0.1:8080/' /etc/httpd/conf/httpd.confsystemctl restart httpd(重启Apache,让配置修改生效)ss -tlnp | grep httpd(验证Apache现在只监听 127.0.0.1:8080)

图8  实现后端服务隐藏

将原本直接对外暴露的Apache服务(允许任意IP访问)隐藏至内网环境,改为仅监听本机回环地址127.0.0.1的8080端口,确保只有本地进程能够直接访问。与此同时,Nginx作为前置代理监听在80端口,对外接收所有客户端请求,并在内部安全地将经过处理的流量转发给后端的Apache服务。这一改造在维持服务可用性的前提下,实现了对真实后端服务的有效隐蔽与隔离。

使用下述两条命令创建Nginx配置文件,内容:Nginx监听8080端口,把所有请求转发给 127.0.0.1:8080(Apache),这是反向代理的核心配置。

echo 'server { listen 80; server_name _; location / { proxy_pass http://127.0.0.1:8080; } }' > /etc/nginx/conf.d/reverse-proxy.confnginx -t

图9  创建Nginx配置文件

4.2 开启Nginx服务

使用三条下列指令,分别对应启动Nginx服务,设置开机自启,查看80和8080端口的监听情况,结果如图10所示。

systemctl start nginxsystemctl enable nginxss -tlnp | grep -E "(80|8080)"

图10  查看80和8080端口的监听情况

在完成反向代理部署后,关键的网络监听状态验证了防御架构的有效建立,如图所示:Nginx进程正监听在所有网络接口的80端口(*:80),作为对外接收请求的唯一入口;与此同时,Apache服务已成功隐蔽至内网环境,仅监听本机回环地址127.0.0.1的8080端口(127.0.0.1:8080),形成了清晰的”外网代理-内网服务”隔离结构。这一监听状态的对比直观展示了攻击面的转移——外部流量只能触及代理层,而真实服务已安全隐藏于内部网络之中。

5、再次进行攻击测试

输入先前试过的攻击命令,看是否成功隐藏ip和端口,结果如图11所示。

curl http://192.168.1.104/../../etc/passwd

图11  检验结果

结果分析:通过部署Nginx反向代理,我们成功实现了三重关键信息的隐藏:首先,真实服务器的公网IP地址(192.168.1.104)被替换为本地回环地址(127.0.0.1),使得攻击者无法获知实际网络位置;其次,标准HTTP服务端口(80)被转换为内部非标准端口(8080),进一步模糊了服务特征;最终,攻击者所感知的服务器地址(127.0.0.1:8080)实际上是一个无法从外部直接访问的内网位置,从而在攻击者认知中成功隐匿了真实的服务器架构。这一系列转变切断了攻击者直接定位和接触后端服务的路径,有效重构了网络攻击面。

部署防御Nginx反向代理前、后攻击效果对比如表2所示。

表2  防御前后攻击效果对比

| | | | | | — | — | — | — | | 对比维度 | 防御前(Apache直接暴露) | 防御后(Nginx反向代理) | 安全提升 | | 可访问性 | 任何IP都可直接连接 | 只有本地进程可连接 | 外部攻击者无法直接接触Apache | | 攻击路径 | 攻击者 → Apache | 攻击者 → Nginx   → Apache | 攻击必须穿透代理 | | 错误信息 | Server at   192.168.1.104 Port 80 | Server at   127.0.0.1 Port 8080 | 隐藏真实网络位置 | | 端口扫描 | 直接暴露Apache服务 | 只显示Nginx服务 | 攻击者无法识别后端技术栈 | | 架构可见性 | 完全暴露服务器架构 | 隐藏真实拓扑结构 | 攻击者无法了解内部网络 |

本文由蔡博宇同学投稿。

  • END –

免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:Web安全基础与实践 dcnb《Nginx反向代理实现隐藏服务IP和端口》

评论:0   参与:  0