原文:https://www.ssh.com/ssh/port 作者:Tatu Ylonen
SSH (Secure Shell) 的端口是 22,它不是巧合,这是一个关于如何获得该端口的故事。
当我( Tatu Ylonen )于 2017 年 4 月首次发布这个故事时,它疯狂的传播在三天内就有大约 12 万名读者了。
获取SSH 22端口的故事
在 1995 年春,我写了 SSH 的初始版本,当时 telnet 和 FTP 正在被广泛使用。
我设计 SSH,是为了替代 telnet(端口 23)和 ftp(端口 21),端口 22 在当时是空闲的,正好就在 telnet 和 ftp 的端口之间,我想这使得这个端口号天然就带有可信度光环。但是该怎么拿到这个端口号呢?我没分配过端口这东西,但我知道谁负责分配端口号。
当时,端口分配的基本流程非常简单,因为当时互联网的规模还很小,我们还处在互联网爆炸非常早期的阶段。端口号是由 IANA(Internet Assigned Numbers Authority,互联网号码分配局)负责分配的。在那个时候,也就是说受人尊敬的互联网先锋是 Jon Postel 和 Joyce K. Reynolds。除了其他事情外,Jon 还是 IP(RFC 791),ICMP(RFC 792)和 TCP(RFC 793)等协议标准的编写者。你们有些人可能听说过他们。
对我来说,我觉得 Jon 实在太可怕了,因为他们撰写了所有主要的互联网RFC!
不过不管怎样,1995 年 7 月,就在发布 ssh-1.0 之前,我给 IANA 发了下面这封邮件:
尊敬的先生,
我写了一个程序,用于在不安全的网络上安全地从一台机器登录到另一台机器。与现有的 telnet 和 rlogin 协议及实现相比,它在安全性和功能性上有着重大改进。特别是,它能防止 IP、DNS 和路由欺诈。我的计划是在互联网上免费分发该软件,希望使它的应用尽可能广泛。
我想为这个软件申请一个注册的特权端口号。这个端口号最好在 1-255 之间,这样它可以在名称服务器的 WKS 字段中使用。
附上该协议的 RFC 草稿。这个软件已在我本地使用了几个月,已经万事俱备,只差端口号。如果能为它及时分配端口,我将在本周发布这个软件。目前我在 beta 测试版中用的是 22 端口,如果能继续使用这个端口那就太好了(它目前在端口列表中是未分配状态)。
这个软件的服务名是 "ssh" (即安全的 shell)。
此致,
Tatu Ylonen ylo@cs.hut.fi
第二天,一封 Joyce 的 email 就在邮箱里等着我:
Tatu,
我们已把 22 端口分配给了 ssh,并设置你为相应的联系人。
Joyce
这就成了!SSH 的端口从此就是 22!!!
1995 年 7 月 12 日凌晨 2 点 32 分,我把最终测试版本公布给了在赫尔辛基理工大学的测试人员。 下午 5:23 我向我的 beta 测试人员发布了 ssh-1.0.0 软件包。 1995 年 7 月 12 日下午 5 点 51 分,我向 cypherpunks@toad.com 邮件列表发送了关于 SSH(安全 Shell)的公告。 我也将其发布在几个新闻组、邮件列表中,同时直接发送给在互联网上讨论过相关主题的人员。
更改服务器中的SSH端口
默认情况下,SSH 服务器还是使用 22 端口。但是总会碰到某些需要让它在其它端口运行的情况。 测试是一个原因,在同一主机上运行多个配置是另外一个原因。 极少数情况下,它也可以在非 root 权限下运行,在这种情况,它必须使用非特权端口(即端口号 >= 1024)。
可以通过更改 /etc/ssh/sshd_config 中的 22 端口指令来配置端口号。 也可以使用 sshd 的 -p <port>
选项指定。 SSH 客户端和 sftp 程序也支持 -p <port>
选项。
在命令行中制定SSH端口
在 Linux 上使用 ssh 命令时, -p <port>
选项可用于指定要连接的端口号。 -P <port>
(注意:大写 P)选项可以与 SFTP
和 scp
一起使用。 SSH 端口号命令行设置将覆盖配置文件中配置的任何值。
通过防火墙配置SSH访问
SSH 是经常通过防火墙允许的少数协议之一。 不受限制的出站 SSH 是非常常见的,尤其是在规模较小且技术性较强的组织中。 入站 SSH 则通常仅限于一台或几台服务器。
出站SSH
在防火墙中配置出站 SSH 非常容易。 如果对传出流量有限制,只需创建允许 TCP 通过 22 出口的规则。 就这些。 如果要限制目标地址,还可以将规则限制为仅允许访问在云上的组织外部服务器,或访问具有守护云访问的跳转服务器。
后退隧道是一种风险
但是,不受限制的出站 SSH 可能存在风险。 SSH 协议支持隧道。 基本思想是,可以让外部服务器上的 SSH 服务器从任何地方监听连接,将这些连接转发回组织,然后连接到某个内部服务器。
这在某些环境中非常方便。 开发人员和系统管理员经常使用它来打开隧道,在旅行时,他们可以使用这些隧道从家里或笔记本电脑上进行远程访问。
但是,它通常会违反策略并从防火墙管理员和安全团队中获取控制权。 例如,它可能违反 PCI,HIPAA 或 NIST SP 800-53。 黑客和外国情报机构可以利用它将后门留给组织。
CryptoAuditor 是一种可以在防火墙或一组云服务器的入口点控制隧道的产品。 它与通用 SSH 密钥管理器一起使用以访问主机密钥,并能够使用它们在防火墙处解密 SSH 会话并阻止未经授权的转发。
入站SSH访问
对于入站访问,有一些实用的替代方案:
-
配置防火墙以将到端口 22 的所有连接转发到内部网络或 DMZ 上的特定 IP 地址。 在该 IP 地址运行 CryptoAuditor 或跳转服务器,以控制和审核对组织的进一步访问。
-
使用防火墙上的不同端口访问不同的服务器。
-
只有在使用 VPN(虚拟专用网络)登录后才允许 SSH 访问,通常使用 IPsec 协议。
通过iptables启用SSH
Iptables 是一种内置在 Linux 内核中的主机防火墙, 它通常配置为通过阻止访问未明确打开的任何端口来保护服务器。如果在 server 上启用了 iptables,可以用以下命令来允许传入 SSH 访问请求。 它们必须以 root 权限运行。
iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT
在某些系统里可以保存规则设置:
service iptables save
·end·
—如果喜欢,快分享给你的朋友们吧—
我们一起愉快的玩耍吧
本文分享自微信公众号 - 生信科技爱好者(bioitee)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“ OSC源创计划 ”,欢迎正在阅读的你也加入,一起分享。