了解基于 IP 的防火墙及其局限性
基于 IP 的防火墙,这些网络安全的可靠卫士,会根据源 IP 地址或目标 IP 地址允许或拒绝流量。然而,它们的严谨性并非完美无缺。如果配置为仅允许来自白名单 IP 范围的请求,则如果请求看似来自该受信任区域内,则可能会被绕过。这就是“代理技巧”的精髓——一种既优雅又具有颠覆性的方法,让人想起大仲马的精妙阴谋。
代理技巧:使用内部中继绕过基于 IP 的防火墙
代理技巧的核心是利用中间机器(通常位于防火墙的信任范围内)来中继流量。通过精心编排通过此代理的请求,外部攻击者可以伪装成内部人员,从而突破防火墙的严密防线。
使用的代理类型
代理类型 | 描述 | 典型用例 | 复杂 | 隐秘性 |
---|---|---|---|---|
SSH 隧道 | 通过 SSH 安全转发本地端口 | 管理访问、测试 | 低的 | 高的 |
HTTP 连接 | 利用 HTTP CONNECT 方法传输任意 TCP 流量 | Web 和 API 访问 | 中等的 | 中等的 |
SOCKS 代理 | TCP 连接的通用中继,通常通过 SSH 或专用代理服务器 | 网页浏览、数据泄露 | 低的 | 高的 |
反向代理 | 将流量从外部客户端转发到内部服务 | 访问内部 Web 服务器 | 高的 | 中等的 |
一步一步:使用 SSH 隧道实现代理技巧
假设您拥有防火墙内跳转盒的凭证。
- 建立 SSH 隧道
狂欢
ssh -L 8080:internal.service.local:80 [email protected]
此命令将本地计算机上的端口 8080 绑定到 内部服务.本地
,通过 jumpbox.corp.com
.
- 访问内部服务
在您的浏览器中或使用 curl:
狂欢
curl http://localhost:8080/
该请求似乎来自 jumpbox.corp.com
,防火墙信任该服务器。
资源: SSH 端口转发教程
使用以下方式制作 HTTP CONNECT 代理 索卡特
和 ncat
如果防火墙允许出站 HTTP/HTTPS,HTTP CONNECT 方法就是一个很好的工具。可以在受信任的主机上部署轻量级代理:
- 使用 Socat 部署代理
在内部主机上:
狂欢
socat TCP-LISTEN:3128,reuseaddr,fork TCP:target.internal:80
- 配置您的客户端
将您的浏览器或工具指向使用内部主机作为 HTTP 代理(端口 3128)。
参考: Socat 文档
SOCKS 代理:SSH 最微妙的功能
SSH 的动态转发可以将您的会话转换为 SOCKS 代理:
ssh -D 1080 [email protected]
配置您的应用程序以通过以下方式路由流量 本地主机:1080
。流量经过加密并通过跳转箱传输后,出现在内部网络的密室中。
反向代理:彻底颠覆防火墙
对于更持久或更复杂的需求,可以使用反向代理,例如 恩格罗克 或者 玻璃钢 可以安装在受信任的内部主机上。反向代理会建立到外部服务器的出站隧道,然后将入站连接中继回内部网络——这样,防火墙的方向性就被破坏了。
示例 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 范围访问。以下序列演示了典型的利用过程:
- 破坏防火墙内的主机(跳转箱)。
- 建立SSH SOCKS代理:
狂欢
ssh -D 1080 [email protected]
- 通过代理路由浏览器或工具流量。
- 通过本地 SOCKS 代理访问内部 Web 应用程序。
- 可选:部署反向代理(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地址,因为它不过是一个面具,无论敌友都可能戴上它。
评论 (0)
这里还没有评论,你可以成为第一个评论者!