突破基于 IP 的防火墙的代理技巧

突破基于 IP 的防火墙的代理技巧

了解基于 IP 的防火墙及其局限性

基于 IP 的防火墙,这些网络安全的可靠卫士,会根据源 IP 地址或目标 IP 地址允许或拒绝流量。然而,它们的严谨性并非完美无缺。如果配置为仅允许来自白名单 IP 范围的请求,则如果请求看似来自该受信任区域内,则可能会被绕过。这就是“代理技巧”的精髓——一种既优雅又具有颠覆性的方法,让人想起大仲马的精妙阴谋。


代理技巧:使用内部中继绕过基于 IP 的防火墙

代理技巧的核心是利用中间机器(通常位于防火墙的信任范围内)来中继流量。通过精心编排通过此代理的请求,外部攻击者可以伪装成内部人员,从而突破防火墙的严密防线。

使用的代理类型

代理类型 描述 典型用例 复杂 隐秘性
SSH 隧道 通过 SSH 安全转发本地端口 管理访问、测试 低的 高的
HTTP 连接 利用 HTTP CONNECT 方法传输任意 TCP 流量 Web 和 API 访问 中等的 中等的
SOCKS 代理 TCP 连接的通用中继,通常通过 SSH 或专用代理服务器 网页浏览、数据泄露 低的 高的
反向代理 将流量从外部客户端转发到内部服务 访问内部 Web 服务器 高的 中等的

一步一步:使用 SSH 隧道实现代理技巧

假设您拥有防火墙内跳转盒的凭证。

  1. 建立 SSH 隧道

狂欢
ssh -L 8080:internal.service.local:80 [email protected]

此命令将本地计算机上的端口 8080 绑定到 内部服务.本地,通过 jumpbox.corp.com.

  1. 访问内部服务

在您的浏览器中或使用 curl:

狂欢
curl http://localhost:8080/

该请求似乎来自 jumpbox.corp.com,防火墙信任该服务器。

资源: SSH 端口转发教程


使用以下方式制作 HTTP CONNECT 代理 索卡特ncat

如果防火墙允许出站 HTTP/HTTPS,HTTP CONNECT 方法就是一个很好的工具。可以在受信任的主机上部署轻量级代理:

  1. 使用 Socat 部署代理

在内部主机上:

狂欢
socat TCP-LISTEN:3128,reuseaddr,fork TCP:target.internal:80

  1. 配置您的客户端

将您的浏览器或工具指向使用内部主机作为 HTTP 代理(端口 3128)。

参考: Socat 文档


SOCKS 代理:SSH 最微妙的功能

SSH 的动态转发可以将您的会话转换为 SOCKS 代理:

ssh -D 1080 [email protected]

配置您的应用程序以通过以下方式路由流量 本地主机:1080。流量经过加密并通过跳转箱传输后,出现在内部网络的密室中。

资源: OpenSSH SOCKS 代理指南


反向代理:彻底颠覆防火墙

对于更持久或更复杂的需求,可以使用反向代理,例如 恩格罗克 或者 玻璃钢 可以安装在受信任的内部主机上。反向代理会建立到外部服务器的出站隧道,然后将入站连接中继回内部网络——这样,防火墙的方向性就被破坏了。

示例 frp 配置(在内部主机上)

[common] server_addr = external.server.com server_port = 7000 [web] type = http local_port = 80 custom_domains = myinternal.example.com

比较:防火墙规避的代理方法

方法 需要在内部主机上进行设置 外部控制 加密 审计逃避 适合
SSH 隧道 SSH 服务器 是的 是的 缓和 偶尔手动访问
HTTP 连接 HTTP 代理(例如 socat) 是的 低的 Web/API 流量
SOCKS 代理 SSH 服务器 是的 是的 高的 Web、CLI 工具、自动化
反向代理 定制软件(ngrok、frp) 是的 各不相同 低的 持续的网络访问

实际对策

  • 网络分段: 尽可能限制内部代理主机的访问。
  • 出口过滤: 禁用或限制来自内部主机的出站连接。
  • 代理检测: 监控异常代理进程(例如, 索卡特, ncat,使用 -L/-D 标志的 SSH)。
  • 零信任模型: 超越基于 IP 的信任;采用 双向 TLS、经过身份验证的反向代理或每个用户的访问控制。

进一步阅读


示例:完整利用工作流程

假设某个 Web 应用程序只能从内部 IP 范围访问。以下序列演示了典型的利用过程:

  1. 破坏防火墙内的主机(跳转箱)。
  2. 建立SSH SOCKS代理:

狂欢
ssh -D 1080 [email protected]

  1. 通过代理路由浏览器或工具流量。
  2. 通过本地 SOCKS 代理访问内部 Web 应用程序。
  3. 可选:部署反向代理(frp、ngrok)以实现持久访问。

汇总表:可操作步骤和工具

工具/命令示例 目的
本地端口转发(SSH) ssh -L 8080:目标:80 用户@jumpbox 访问单一内部服务
动态 SOCKS 代理(SSH) ssh -D 1080 用户@jumpbox 代理任意流量
HTTP CONNECT 代理(socat/ncat) socat TCP-LISTEN:3128,fork TCP:目标:80 Web/API 代理
反向代理(frp) 参见上面的 frp 配置 持久的外部到内部访问

在网络安全领域,代理技巧证明了那些像基督山伯爵一样,在无人允许的情况下寻求通行之道的人的聪明才智。防御者应该吸取的教训是:不要相信IP地址,因为它不过是一个面具,无论敌友都可能戴上它。

索朗日·勒费弗尔

索朗日·勒费弗尔

高级代理分析师

Solange Lefebvre 是数字通道的行家,十多年来一直担任 ProxyMist 分析部门的负责人。凭借她在网络安全和代理服务器管理方面无与伦比的专业知识,她在策划和维护全球最全面的 SOCKS、HTTP、精英和匿名代理服务器列表方面发挥了重要作用。Solange 是法国人,对精确性情有独钟,她确保 ProxyMist 始终处于安全互联网解决方案的前沿。

评论 (0)

这里还没有评论,你可以成为第一个评论者!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注