Windows 防火墙将根据隧道数据检查哪个角色?

Posted

技术标签:

【中文标题】Windows 防火墙将根据隧道数据检查哪个角色?【英文标题】:Which role will the Windows firewall check against the tunneled data? 【发布时间】:2015-06-03 09:41:39 【问题描述】:

通过运行 SSH 隧道到 Windows 远程服务器连接,如以下链接中所述-

http://www.tech-recipes.com/rx/6194/windows-xp-vista-win7-setup-a-secure-remote-desktop-tunnel-connection-with-ssh-copssh-and-putty/

http://klinkner.net/~srk/techTips/ssh-remote/

通过在客户端的远程连接程序中键入localhost:3390,并假设我有从local 3390 到服务器1.1.1.1:3389(1.1.1.1 是服务器)的隧道,然后我运行 sshd 进程(使用隧道)在服务器的 22 端口(以及客户端 ssh 的 22 端口)上,服务器的防火墙将检查哪些规则?

到达 sshd 进程的数据包的 22 端口规则? 3389端口用于数据到达服务器的远程连接过程?两者都有?

如果防火墙将根据端口 22 的规则检查数据,我可以禁用允许传入数据到服务器端口 3389 的角色,即不允许常规远程桌面连接,因此只允许 SSH 隧道连接,这是我的全部意图。

【问题讨论】:

您的意思是 SSH 隧道吗? 是的。我已经更新了问题。 澄清一下,您是否尝试将服务器端口 3389 转发到端口 3390 上的(ssh 客户端)机器? 客户端端口 3390 -> 隧道 -> 服务器 [sshd 端口 22 \\ 远程桌面应用程序端口 3389]。服务器中的 sshd 进程会将数据转发到隧道定义的端口 3389。 【参考方案1】:

首先,这并不完全是“隧道”。 SSH 手册称其为“端口转发”,这是一种模式准确的描述,因为它处理单个 TCP 端口。

其次,转发有两种类型:转发(-L)和反向(-R)。从您链接到的文章中,您指的是前者。

在像-L 3390:localhost:3389 这样的转发端口转发上,将会有一个新的打开端口(除了在服务器上侦听的通常的 SSH 端口——通常是 22)——那就是客户端的 3390 端口

正在发生的连接以及您的防火墙需要允许的连接是:

SSH 客户端在(默认)端口 22 上连接到 SSH 服务器 SSH 服务器连接到服务器自身的 3389 端口

SSH 不(不能)关心服务器上的端口 3389。由另一个进程来打开它。

如果您注意到localhost 部分是从服务器的角度来看,那么这一点会更清楚,并且您可以指定服务器可以访问的任何其他主机。

【讨论】:

@user2162550 是的,可能。我没有回答您唯一明确的问题(“服务器的防火墙将检查哪些规则”),因为我认为这个问题无法回答 - 唯一可以回答的人是实施的人(微软?思科?Linux内核开发人员? ),部署和配置(您?您的服务器管理员?)该防火墙。相反,我告诉您需要防火墙允许通过哪些端口(进一步假设您允许所有传出连接)。你还有什么需要知道的吗? 没看懂你的概念,你能不能结合我的具体场景来解释一下? @user2162550 我已经编辑了答案以更适合您的场景并明确列出正在发生的连接(您需要防火墙允许)。如果没有其他详细信息,我不确定是否可以进一步帮助您。如果您对我提到的任何概念(开放端口、端口转发、侦听)感到困惑,我建议您阅读一般的 IP 网络,特别是 sockets 通过说“SSH 服务器连接到服务器本身的端口 3389”,你的意思是如果我将在我的服务器的防火墙上阻止来自端口 3389 的传入数据,该过程将无法正常工作? @user2162550 连接来自服务器本身。虽然我没有使用 Windows 防火墙的经验,但我认为大多数防火墙不会过滤环回连接,除非明确告知。如果您特别需要有关防火墙配置的帮助,超级用户可能是最好的询问位置

以上是关于Windows 防火墙将根据隧道数据检查哪个角色?的主要内容,如果未能解决你的问题,请参考以下文章

DNS隧道小结

symfony 2 在防火墙检查之前在事件监听器中添加角色

如何检查哪个角色对greenplum中的表具有特权

在 Python 中模拟 SSH 的 SOCKS 代理隧道

将 ssh 隧道反向访问公司防火墙后面的系统的最佳方法是啥?

IPsec篇(7.0) 04. 如何快速删除IPsec安全隧道 ❀ 飞塔 (Fortinet) 防火墙