runako Asked: 2009-06-15 09:08:12 +0800 CST2009-06-15 09:08:12 +0800 CST 2009-06-15 09:08:12 +0800 CST 为什么要阻止端口 22 出站? 772 我是一名程序员,我曾为一些客户工作,他们的网络阻止了端口 22 上的传出连接。考虑到程序员经常需要将端口 22 用于 ssh,这似乎是一个适得其反的过程。充其量,它迫使程序员向公司收取 3G 互联网费用。在最坏的情况下,这意味着他们无法有效地完成工作。 鉴于这造成的困难,有经验的系统管理员能否解释一下看似双输的行动所期望的好处? ssh port blocking 16 个回答 Voted James F 2009-06-15T11:50:50+08:002009-06-15T11:50:50+08:00 我没有看到有人详细说明了 SSH 端口转发的具体风险。 如果您在防火墙内并且对公共 Internet 上的计算机具有出站 SSH 访问权限,则可以 SSH 到该公共系统并在此过程中创建一个隧道,以便公共 Internet 上的人们可以完全通过 SSH 访问您网络内的系统绕过防火墙。 如果 fred 是您的桌面并且 barney 是您公司的重要服务器并且 wilma 是公开的,正在运行(在 fred 上): ssh -R*:9000:barney:22 威尔玛 并且登录将让攻击者通过 ssh 连接到 wilma 上的 9000 端口并与 barney 的 SSH 守护进程对话。 您的防火墙永远不会将其视为传入连接,因为数据正在通过最初在传出方向建立的连接传递。 这很烦人,但却是完全合法的网络安全策略。 Rob Moir 2009-06-15T09:52:39+08:002009-06-15T09:52:39+08:00 如果他们阻塞了一堆端口,让一些东西通过并随机阻塞一些其他东西(我喜欢 Paul Tomblin 的关于阻止 SSH 并允许 Telnet 的人的悲惨故事),那么他们要么有一个非常奇怪的边缘案例,他们如何去保护他们的网络边界,或者他们的安全策略,至少从外部来看,显然是经过深思熟虑的。你无法理解这样的情况,所以只需向他们收取痛苦并继续你一天的人的现行费率。 如果他们阻止所有端口,除非有特定的商业案例允许通过该端口的流量,此时对其进行精心管理,那么他们这样做是因为他们有能力胜任工作。 当您尝试编写一个安全的应用程序时,您是否让其他进程可以轻松地按照他们的喜好读取和写入信息,或者您是否有一些您希望人们调用并且您仔细清理过的经过仔细记录的 API? 风险管理 - 如果您认为进入或来自您的网络的流量进入 Internet 是一种风险,那么您希望尽量减少流量可以到达 Internet 的数量,包括路由数量和方法数量。然后,您可以监控和过滤这些选择的“有福的”网关和端口,以尝试确保通过它们的流量是您所期望的。 这是一个“默认拒绝”防火墙策略,通常被认为是一个好主意,我将提出一些警告。这意味着除非有特定的理由解除封锁,否则一切都会被封锁,并且理由的好处大于风险。 编辑:我应该澄清一下,我不仅仅是在谈论一种协议被允许而另一种协议被阻止的风险,我说的是信息被允许以不受控制的方式流入或流出网络对业务的潜在风险方法。 现在需要注意的是,可能还有一个释放事物的计划: 当你被某些东西挡在外面时会很烦人,这就是你发现自己与一些客户所处的位置。很多时候,负责防火墙的人认为他们的工作是说“不”,而不是“这是风险,现在有什么好处,让我们看看我们能做什么”。 如果您与为您的客户管理网络安全的人交谈,他们可能愿意为您设置一些东西。如果您可以在它们的末端识别出一些您需要访问的特定系统,和/或保证您只会从特定的 IP 地址进行连接,那么在这些特定条件下为 SSH 连接创建防火墙例外可能会比他们更乐意将只是打开与整个互联网的连接。或者他们可能有一个 VPN 设施,您可以使用它来通过防火墙进行隧道传输。 Paul Tomblin 2009-06-15T09:33:23+08:002009-06-15T09:33:23+08:00 纽约罗切斯特的一家大公司曾经制作很多电影,当我在那里工作时,它阻止了传出的 ssh,但允许telnet!当我问起这件事时,他们说 ssh 是一个安全漏洞。 换句话说,公司有时会做出愚蠢的决定,然后就安全问题编造胡说八道的借口,而不是承认自己的错误。 nik 2009-06-15T09:32:53+08:002009-06-15T09:32:53+08:00 如果公司不允许外部登录,我可以理解阻止入站 SSH 通信。但是,这是我第一次听说出站 SSH 块。 需要注意的重要一点是,这种防火墙可能只会限制临时 SSH 用户。如果有人真的想在外部进行 SSH(通常是到他们有重要访问权限的服务器/机器,在企业网络之外),他们可以轻松地在 22 以外的端口(例如端口 80)上运行 SSH 服务器。该块将很容易被绕过。 还有一些公共领域工具可以让您通过 HTTP(端口 80 或 HTTPS 端口 443)退出企业,并提供代理让您连接到外部端口 22。 编辑:好的,等一下,我知道为什么这可能是一项政策。 有时,人们使用 SSH 隧道绕过 IM 和 Bittorrent 等协议的基本出站防火墙(例如)。这//可能// 触发了这样的政策。但是,我仍然觉得这些隧道工具中的大多数都可以在 22 以外的端口上工作。 阻止此类出站隧道的唯一方法是动态检测 SSH 通信并(动态)阻止这些 TCP 连接。 Joe 2009-06-15T09:11:12+08:002009-06-15T09:11:12+08:00 这可能是一个监管/合规问题。您的雇主希望能够阅读/存档所有通信。这通常是银行业等行业的要求。 jtimberman 2009-06-15T19:38:28+08:002009-06-15T19:38:28+08:00 在我看来,阻止出站端口 22 有两个主要原因。 首先,正如人们所提到的,SSH 端口转发可以用作代理或绕过其他端口和服务,以避免 IT 政策规定此类流量是不允许的。 其次,许多恶意软件/僵尸网络将使用端口 22,因为它通常被视为“安全”并因此被允许。然后他们可以从该端口启动进程,受感染的计算机也可能会启动 SSH 暴力攻击。 David Spillett 2009-06-15T09:33:10+08:002009-06-15T09:33:10+08:00 通常情况下,除非需要,否则会阻止所有传出连接,并且在您尝试之前没有人请求端口 22 可用于传出连接(仅 80、433 等)。如果是这种情况,那么解决方案可能就像联系 IS/IT 并告诉他们为什么需要添加异常以便您的站点可以与特定主机或一般主机建立传出 SSH 连接一样简单。 有时人们会担心人们可能会使用该工具来使用 SSH 作为设置代理(通过链接上的端口转发)以规避其他控制的一种方式。在某些受监管的行业(例如银行)中,这可能是一个非常重要的因素,在这些行业中,出于法律原因(阻止内幕交易、检测/阻止公司或个人数据的传输等)需要监控/记录所有通信或存在非常担心内部泄漏会意外或以其他方式泄露商业机密。在这些情况下,使用您的 3G 链接(或其他技术,例如尝试通过 HTTP 建立 SSH 通道)来规避限制可能会违反您的合同,因此属于解雇罪(或者,可能更糟糕的是,是一种法律罪行),所以要小心在你尝试之前让你的行动得到同意。 另一个原因可能是减少传出足迹(公司防火墙内的主机和整个世界可以访问的内部服务),如果有什么不愉快的东西设法将自己安装在公司运行的机器上。如果端口 22 上没有 SSH 连接,许多尝试使用暴力 SSH 登录作为其传播路径之一的简单黑客将被阻止。在这种情况下,您可以再次请求添加一个例外,以便您的机器可以建立 SSH 连接,前提是这些连接对控制防火墙的人来说是合理的。 duffbeer703 2009-06-15T16:24:35+08:002009-06-15T16:24:35+08:00 您的客户可能拥有他们想要保留的重要数据。出站 SSH 对整个网络开放是一件非常糟糕的事情。绕过代理、泄露敏感数据并且通常令人讨厌是非常微不足道的。 IMO,任何通过网络/互联网边界的东西都应该被理解和控制。如果一组开发人员需要通过 ssh 访问托管服务提供商的服务器,那很好——但也需要记录在案。一般来说,在我工作过的地方,我们会建立专门的站点到站点 VPN 连接到我们网络之外的位置(本质上是扩展我们的内部网络),并避免使用互联网上的 SSH 等客户端协议。 Kurt 2009-06-15T17:32:56+08:002009-06-15T17:32:56+08:00 因为 SSH 可以用作 VPN。它是加密的,所以网络管理员根本不知道什么离开了他们的网络(客户数据库的转储等)。我刚刚在我的每月专栏“秘密隧道”中介绍了这些内容。一些 3G 互联网的成本比不必担心加密协议将您的数据引导出网络要低得多。另外,如果您默认阻止传出端口 22 和流量检查,您可以轻松地在非标准端口上找到 SSH,从而发现违反安全策略的人。 Martin M. 2009-06-15T09:12:23+08:002009-06-15T09:12:23+08:00 我知道有几个人滥用 SSH 的功能通过 SSH 安装 SOCKS 代理,从而规避了一些站点限制。 甚至一些简单ssh -L ....的端口转发(),如果端口确实由于站点限制而被阻止,我会去: 本地管理员和 你的项目经理 让他们坐到一张桌子旁,让他们详细说明这被阻止的原因。当然,你需要有充分的理由说明为什么需要访问外部 SSH 端口来开发内部产品(内部是:为什么你在公司工作时需要访问 boxA.example.com,snakeoil.invalid) 但我还没有看到有公司阻止传出 SSH :)
我没有看到有人详细说明了 SSH 端口转发的具体风险。
如果您在防火墙内并且对公共 Internet 上的计算机具有出站 SSH 访问权限,则可以 SSH 到该公共系统并在此过程中创建一个隧道,以便公共 Internet 上的人们可以完全通过 SSH 访问您网络内的系统绕过防火墙。
如果 fred 是您的桌面并且 barney 是您公司的重要服务器并且 wilma 是公开的,正在运行(在 fred 上):
ssh -R*:9000:barney:22 威尔玛
并且登录将让攻击者通过 ssh 连接到 wilma 上的 9000 端口并与 barney 的 SSH 守护进程对话。
您的防火墙永远不会将其视为传入连接,因为数据正在通过最初在传出方向建立的连接传递。
这很烦人,但却是完全合法的网络安全策略。
如果他们阻塞了一堆端口,让一些东西通过并随机阻塞一些其他东西(我喜欢 Paul Tomblin 的关于阻止 SSH 并允许 Telnet 的人的悲惨故事),那么他们要么有一个非常奇怪的边缘案例,他们如何去保护他们的网络边界,或者他们的安全策略,至少从外部来看,显然是经过深思熟虑的。你无法理解这样的情况,所以只需向他们收取痛苦并继续你一天的人的现行费率。
如果他们阻止所有端口,除非有特定的商业案例允许通过该端口的流量,此时对其进行精心管理,那么他们这样做是因为他们有能力胜任工作。
当您尝试编写一个安全的应用程序时,您是否让其他进程可以轻松地按照他们的喜好读取和写入信息,或者您是否有一些您希望人们调用并且您仔细清理过的经过仔细记录的 API?
风险管理 - 如果您认为进入或来自您的网络的流量进入 Internet 是一种风险,那么您希望尽量减少流量可以到达 Internet 的数量,包括路由数量和方法数量。然后,您可以监控和过滤这些选择的“有福的”网关和端口,以尝试确保通过它们的流量是您所期望的。
这是一个“默认拒绝”防火墙策略,通常被认为是一个好主意,我将提出一些警告。这意味着除非有特定的理由解除封锁,否则一切都会被封锁,并且理由的好处大于风险。
编辑:我应该澄清一下,我不仅仅是在谈论一种协议被允许而另一种协议被阻止的风险,我说的是信息被允许以不受控制的方式流入或流出网络对业务的潜在风险方法。
现在需要注意的是,可能还有一个释放事物的计划:
当你被某些东西挡在外面时会很烦人,这就是你发现自己与一些客户所处的位置。很多时候,负责防火墙的人认为他们的工作是说“不”,而不是“这是风险,现在有什么好处,让我们看看我们能做什么”。
如果您与为您的客户管理网络安全的人交谈,他们可能愿意为您设置一些东西。如果您可以在它们的末端识别出一些您需要访问的特定系统,和/或保证您只会从特定的 IP 地址进行连接,那么在这些特定条件下为 SSH 连接创建防火墙例外可能会比他们更乐意将只是打开与整个互联网的连接。或者他们可能有一个 VPN 设施,您可以使用它来通过防火墙进行隧道传输。
纽约罗切斯特的一家大公司曾经制作很多电影,当我在那里工作时,它阻止了传出的 ssh,但允许telnet!当我问起这件事时,他们说 ssh 是一个安全漏洞。
换句话说,公司有时会做出愚蠢的决定,然后就安全问题编造胡说八道的借口,而不是承认自己的错误。
如果公司不允许外部登录,我可以理解阻止入站 SSH 通信。但是,这是我第一次听说出站 SSH 块。
需要注意的重要一点是,这种防火墙可能只会限制临时 SSH 用户。如果有人真的想在外部进行 SSH(通常是到他们有重要访问权限的服务器/机器,在企业网络之外),他们可以轻松地在 22 以外的端口(例如端口 80)上运行 SSH 服务器。该块将很容易被绕过。
还有一些公共领域工具可以让您通过 HTTP(端口 80 或 HTTPS 端口 443)退出企业,并提供代理让您连接到外部端口 22。
编辑:好的,等一下,我知道为什么这可能是一项政策。
有时,人们使用 SSH 隧道绕过 IM 和 Bittorrent 等协议的基本出站防火墙(例如)。这//可能// 触发了这样的政策。但是,我仍然觉得这些隧道工具中的大多数都可以在 22 以外的端口上工作。
阻止此类出站隧道的唯一方法是动态检测 SSH 通信并(动态)阻止这些 TCP 连接。
这可能是一个监管/合规问题。您的雇主希望能够阅读/存档所有通信。这通常是银行业等行业的要求。
在我看来,阻止出站端口 22 有两个主要原因。
首先,正如人们所提到的,SSH 端口转发可以用作代理或绕过其他端口和服务,以避免 IT 政策规定此类流量是不允许的。
其次,许多恶意软件/僵尸网络将使用端口 22,因为它通常被视为“安全”并因此被允许。然后他们可以从该端口启动进程,受感染的计算机也可能会启动 SSH 暴力攻击。
通常情况下,除非需要,否则会阻止所有传出连接,并且在您尝试之前没有人请求端口 22 可用于传出连接(仅 80、433 等)。如果是这种情况,那么解决方案可能就像联系 IS/IT 并告诉他们为什么需要添加异常以便您的站点可以与特定主机或一般主机建立传出 SSH 连接一样简单。
有时人们会担心人们可能会使用该工具来使用 SSH 作为设置代理(通过链接上的端口转发)以规避其他控制的一种方式。在某些受监管的行业(例如银行)中,这可能是一个非常重要的因素,在这些行业中,出于法律原因(阻止内幕交易、检测/阻止公司或个人数据的传输等)需要监控/记录所有通信或存在非常担心内部泄漏会意外或以其他方式泄露商业机密。在这些情况下,使用您的 3G 链接(或其他技术,例如尝试通过 HTTP 建立 SSH 通道)来规避限制可能会违反您的合同,因此属于解雇罪(或者,可能更糟糕的是,是一种法律罪行),所以要小心在你尝试之前让你的行动得到同意。
另一个原因可能是减少传出足迹(公司防火墙内的主机和整个世界可以访问的内部服务),如果有什么不愉快的东西设法将自己安装在公司运行的机器上。如果端口 22 上没有 SSH 连接,许多尝试使用暴力 SSH 登录作为其传播路径之一的简单黑客将被阻止。在这种情况下,您可以再次请求添加一个例外,以便您的机器可以建立 SSH 连接,前提是这些连接对控制防火墙的人来说是合理的。
您的客户可能拥有他们想要保留的重要数据。出站 SSH 对整个网络开放是一件非常糟糕的事情。绕过代理、泄露敏感数据并且通常令人讨厌是非常微不足道的。
IMO,任何通过网络/互联网边界的东西都应该被理解和控制。如果一组开发人员需要通过 ssh 访问托管服务提供商的服务器,那很好——但也需要记录在案。一般来说,在我工作过的地方,我们会建立专门的站点到站点 VPN 连接到我们网络之外的位置(本质上是扩展我们的内部网络),并避免使用互联网上的 SSH 等客户端协议。
因为 SSH 可以用作 VPN。它是加密的,所以网络管理员根本不知道什么离开了他们的网络(客户数据库的转储等)。我刚刚在我的每月专栏“秘密隧道”中介绍了这些内容。一些 3G 互联网的成本比不必担心加密协议将您的数据引导出网络要低得多。另外,如果您默认阻止传出端口 22 和流量检查,您可以轻松地在非标准端口上找到 SSH,从而发现违反安全策略的人。
我知道有几个人滥用 SSH 的功能通过 SSH 安装 SOCKS 代理,从而规避了一些站点限制。
甚至一些简单
ssh -L ....
的端口转发(),如果端口确实由于站点限制而被阻止,我会去:让他们坐到一张桌子旁,让他们详细说明这被阻止的原因。当然,你需要有充分的理由说明为什么需要访问外部 SSH 端口来开发内部产品(内部是:为什么你在公司工作时需要访问 boxA.example.com,snakeoil.invalid)
但我还没有看到有公司阻止传出 SSH :)