SSH如何出现在端口22上

SSH默认在端口22上运行,这不是巧合。 这是他如何获得这个港口的故事。

当我( Tatu Ilonen )于2017年4月首次发表该故事时,它风靡一时 :三天内约有12万名读者阅读了该故事。

接收SSH的端口22的历史记录


我在1995年春季编写了SSH(Secure Shell)的第一个版本。 TelnetFTP当时被广泛使用。

但是我仍然开发了SSH来代替telnet (端口23)和ftp (端口21)。 端口22是免费的,并且位于telnet和ftp端口之间。 我以为这样的端口号可能是一些小细节之一,它将赋予一些SSH信任光环。 但是如何获得呢? 我从未分配过端口,但我知道这样做的人。

当时,端口分配非常简单。 互联网规模较小,我们正处于互联网繁荣的初期。 端口号是由IANA(互联网号码分配机构)分配的。 那时,这意味着受人尊敬的互联网先驱John PostelJoyce C. Reynolds 。 John尤其是IP(RFC 791),ICMP(RFC 792)和TCP(RFC 793)等次要协议的编辑。 你们中有些人可能听说过。

约翰坦率地害怕我成为互联网上所有主要RFC的作者!

在1995年7月ssh-1.0宣布之前,我以某种方式向IANA发送了以下电子邮件:

从ylo Mon Jul 10 11:45:48 +0300 1995
来自:塔图·伊洛宁(Tatu Ylonen)<ylo@cs.hut.fi>
收件人:Internet号码分配机构<iana@isi.edu>
主题:要求提供端口号
机构:芬兰赫尔辛基工业大学

尊敬的先生,

我编写了一个程序,可以通过不安全的网络从一台计算机安全登录到另一台计算机。 这是对现有telnet和rlogin协议及其实现的重大安全改进。 特别是,它可以防止IP,DNS和路由欺骗。 我的计划是在Internet上自由分发该程序,并确保尽可能广泛地使用它。

我想获得该程序的注册特权端口号。 理想的范围是1-255,以便可以在名称服务器上的WKS字段中使用。

下面,我将RFC项目应用于该协议。 该软件已经在本地使用了几个月,并且可以发布,端口号除外。 如果您可以快速分配端口号,那么我想在本周布置程序。 我目前正在Beta测试中使用端口22,因此最好使用此数字(当前在列表中列为“未分配”)。

该软件的服务名称为“ ssh”(安全外壳)。

问候

塔图·伊洛宁(Tatu Ilonen)<ylo@cs.hut.fi>

...然后遵循ssh-1.0协议规范

第二天,收件箱中有乔伊斯的来信:

日期:1995年7月10日星期一15:35:33-0700
来自:jkrey@ISI.EDU
至:ylo@cs.hut.fi
主题:回复:要求提供端口号
抄送:iana@ISI.EDU

刺青

我们为SSH分配了端口22,将您指定为联系人。

乔伊斯

我们做到了! 现在,SSH具有端口22!

1995年7月12日凌晨2:32,我宣布了赫尔辛基大学的Beta测试人员的最终Beta版。 在17:23,他向测试人员发送了ssh-1.0.0软件包,在17:51,他向cypherpunks@toad.com邮件cypherpunks@toad.com发送了有关SSH(安全外壳)的公告。 我还在多个新闻组,邮件列表中直接复制了此公告,并直接复制给在Internet上讨论相关主题的个人。

更改服务器上的SSH端口


默认情况下,SSH服务器仍在端口22上运行。但是,发生的方式有所不同。 原因之一是测试。 另一个是在同一主机上运行多个配置。 很少有服务器在没有root特权的情况下运行,在这种情况下,服务器应该位于非特权端口(即,数量为1024或更多)上。

可以通过更改/ etc / ssh / sshd_config中Port 22指令来配置端口号。 它也由sshd中-p <port>参数指定。 SSH客户端和sftp程序也支持-p <port>参数。

在命令行上指定SSH端口


在Linux上使用ssh命令进行连接时, -p <port>参数可用于指定端口号。 SFTPscp使用-P <port>参数(注意:大写字母P)。 来自命令行的指令将覆盖配置文件中的任何值。

配置通过防火墙的SSH访问


SSH是经常允许通过防火墙进行传出访问的少数协议之一,特别是在小型和技术公司中。 通常允许一台或多台服务器使用入站SSH。

传出ssh


在防火墙中设置传出ssh非常简单。 如果总体上对传出流量有限制,只需创建一个规则,允许TCP端口22上的传出连接即可。 如果要限制目标地址,可以通过只允许访问组织在云中的服务器或保护对云的访问的跳转服务器来创建适当的规则。

反向隧穿是一种风险


但是,无限传出SSH可能会有风险。 SSH协议支持隧道 。 主要思想是外部服务器上的SSH服务器侦听来自各处的连接,将其转发给组织,并与某种内部服务器建立连接。

在某些情况下,这很方便。 开发人员和系统管理员经常使用隧道在旅途中从家里或从便携式计算机获得远程访问。

但是通常,隧道违反了安全策略,并控制了防火墙管理员和IS团队。 例如,它可能违反PCIHIPAANIST SP 800-53规则。 黑客和特殊服务可以使用它在本地网络上留下后门。

CryptoAuditor程序控制防火墙中或到一组云服务器的入口点的隧道传输 。 它与通用SSH密钥管理器配合使用以获取对主机密钥的访问权,并使用它们来解密防火墙中的SSH会话并阻止未经授权的转发。

入站SSH


对于入站访问,有几种选择:

  • 配置防火墙,以将到端口22的所有连接转发到内部网络或DMZ上的特定IP地址。 在此IP地址上运行CryptoAuditor或跳转服务器以控制和验证对组织的进一步访问。
  • 使用防火墙上的不同端口访问不同的服务器。
  • 通常在IPsec上使用VPN登录后,才允许SSH访问。

通过iptables启用SSH


iptables是内置在Linux内核中的主机防火墙。 通常将其配置为通过阻止访问所有未显式打开的端口来保护服务器。

如果在服务器上启用了iptables,则以下命令可能允许传入的SSH访问。 它们应从根目录下运行。

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

Source: https://habr.com/ru/post/zh-CN418533/


All Articles