为什么 SSH 的默认端口是 22 ?

原文: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 发了下面这封邮件: b0a9184c-7c39-42f8-a511-4a9f84747b3a.png

尊敬的先生,

我写了一个程序,用于在不安全的网络上安全地从一台机器登录到另一台机器。与现有的 telnet 和 rlogin 协议及实现相比,它在安全性和功能性上有着重大改进。特别是,它能防止 IP、DNS 和路由欺诈。我的计划是在互联网上免费分发该软件,希望使它的应用尽可能广泛。

我想为这个软件申请一个注册的特权端口号。这个端口号最好在 1-255 之间,这样它可以在名称服务器的 WKS 字段中使用。

附上该协议的 RFC 草稿。这个软件已在我本地使用了几个月,已经万事俱备,只差端口号。如果能为它及时分配端口,我将在本周发布这个软件。目前我在 beta 测试版中用的是 22 端口,如果能继续使用这个端口那就太好了(它目前在端口列表中是未分配状态)。

这个软件的服务名是 "ssh" (即安全的 shell)。

此致,

Tatu Ylonen ylo@cs.hut.fi

第二天,一封 Joyce 的 email 就在邮箱里等着我: 66ea2872-7ebd-4fea-8b70-56e00cfc3d2c.png

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源创计划 ”,欢迎正在阅读的你也加入,一起分享。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值