关于SSH 22端口的来历,及其相关配置

前一篇文章《关于SSH加密和连接的若干事儿》虫虫以SSH为例介绍了常见的加密算法,SSH协议中涉及的基础加密技术以及怎么利用这些技术构建安全的通讯:对称加密、非对称加密,哈希,Diffie-Hellman密钥交换等,今天我们再来跟大家说说SSH的一些事情:SSH的端口为啥是22,SSH使用中要注意哪些事情等。

SSH端口为啥是22?

很多人都知道SSH端口是22。但是为啥是22呢?也不是一拍脑袋一下子决定的,而有个科技史话呢?。SSH之父Tatu Ylonen曾经说过一个故事讲述了SSH 22端口的来历。SSH的是有Tatu Ylonen于1995年编写完成的,并于当年发布了一个初始版本。当时telnet和FTP广泛流行,互联网还是一篇和谐,歌舞升平没有这么多人扫描,也没有这么多人渗透窃取监听你的数据。SSH出来后,当时telnet 23端口,ftp 22端口,但是22端口还没有人用,所以顺理成章,使用22就是一个很好的选择。当时端口分配的基本过程相也没有那么复杂,由于互联网规模较小,还处于互联网繁荣的早期阶段。

当时,端口号的分配管理是IANA(互联网数字分配机构),是有Jon Postel和Joyce K. Reynolds具体负责的的。而且,Jon还是IP(RFC 791),ICMP(RFC 792)和TCP(RFC 793)等网络协议标准的编草者,熟悉网络的人可能都听说他们。

SSH 1.0发布之前, Tatu Ylonen尝试向IANA发送了端口申请的邮件。

亲爱的先生,

我编写了一个程序,用来通过一个不安全的网络安全地从一台机器登录到另一台机器在。它提供了重大的安全性改进和对现有的telnet和rlogin协议和功能实现。特别是,它可以防止IP,DNS和路由欺骗。我的计划是在软件上免费分发软件互联网并尽可能广泛地使用它。

我想获得一个注册的特权端口号软件。该数字应优选在1-255范围内它可以在名称服务器的WKS字段中使用。

我将在下面的协议中附上RFC草案。该软件已经在本地使用了几个月,并准备出版,但是还没端口号。如果端口号分配可以及时安排,我希望在本周发布该软件。

我目前在beta测试中使用端口号22。如果可能使用的话,这是一个非常合适的数字(目前列表显示它还未被分配出去)。

该软件的服务名称是"ssh"(对于Secure Shell)。

很快,第二天Tatu Ylonen就收到了Joyce的回信:

我们已将端口号22分配给ssh,并将你作为联系通讯联系人。

就这样,SSH端口正式被定义为22。同年7月12日ssh-1.0.0通过cypherpunks@toad.com邮件组正式发布。

更改SSH默认端口

默认情况下,SSH服务监听在端口22中运行。但是,有时候需要更换该端口,比如现在为了防止有人恶意扫描和渗透,安全配置建议中,一般都有:更改默认的22端口;禁止root登陆;禁止账号密码登录。而且之前我们文章也提到过低于1024的端口属于特权端口只有root才可以用,如果一般用户想起一个SSH服务就得修改默认的端口。SSH可以通过修改器配置文件(/etc/ssh/sshd_config),来配置这个端口:

Port xxxx

xxx为需要自定义的端口。也可以通过命令启动sshd时候通过-p xxx来指定一个自定义端口。

在命令行上指定SSH端口号

使用ssh命令时,-p xxx 用于指定要连接的sshd服务的端口号。需要注意的时候,这个选项在 sftp和scp的时注意要用 -P xxx(大写P)选项可以与SFTP和scp一起使用。

给SSH配置防火墙

SSH服务由于远程管理需要是少数几个必须通过防火墙放行的协议之一。通常不会限制SSH的出站访问。入站SSH一般仅限于一个跳板机ip或者办公网段的ip的访问。

虫虫需要再次提及的是,不受限制的出站SSH可能存在风险。 SSH协议支持建立传输隧道。基本思想是,可以让外部服务器上的SSH服务器监听不限制的连接,通过反向隧道可以将这些连接反向转发,然后就可连接到某个内网服务器。

这在某些环境中非常方便。开发人员和系统管理员经常使用它来打开隧道,他们可以使用这些隧道在旅行时从家里或笔记本电脑上远程访问。

但是,它通常会违反策略跨过防火墙获取额外控制权,黑客和情报机构可以利用它将后门留给组织。关于SSH隧道以后有机会虫虫会写文章详细介绍。

入站SSH访问和安全防护

对于入站访问,有一些实用的安全配置方案:

配置防火墙将到端口22的所有连接转发到内部网络或DMZ上的特定IP地址。在该IP地址运行CryptoAuditor或跳转服务器,以控制和审核对组织的进一步访问。

使用防火墙上的不同端口访问不同的服务器。

仅在使用VPN(虚拟专用网络)登录后才允许SSH访问,通常使用IPsec协议。

通过iptables启用SSH访问

Iptables是Linux内核中内置的主机防火墙。如果你的服务器启用了iptables,则可以使用以下命令来开放SSH访问。

iptables -I INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

iptables -I OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT

service iptables save (centos)则可以将这两条规则保存在磁盘(/etc/sysconfig/iptables),重启服务后也能生效。

最后,虫虫给大家限制 ssh为固定IP访问的规则(/etc/sysconfig/iptables)实例,可以该实例为基础模版,小修改即可使用。

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

-A INPUT -i lo -j ACCEPT #允许本机的一切链接

-A INPUT -s 6.6.6.6 -j ACCEPT #一个防错规则,对该IP不作任何限制,防止修改规则,本身被限制在外

-A INPUT -p icmp -m icmp --icmp-type 11 -j DROP

-A INPUT -p icmp -m icmp --icmp-type 11 -j DROP #禁止tracert

-A INPUT -p icmp -m icmp --icmp-type 13 -j DROP

-A INPUT -p icmp -m icmp --icmp-type 14 -j DROP

-A INPUT -p icmp -m icmp --icmp-type any -j ACCEPT #禁止 11,13,14,允许其他icmp协议

-A INPUT -d 224.0.0.251/32 -p udp -m udp --dport 5353 -j ACCEPT #允许dns广播

-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT #限制以允许建立连接后的状态的连接

-A INPUT -p tcp -m state --state NEW -m multiport --dports 80,443,8080 -j ACCEPT #开放 80,443和8080的访问

-A INPUT -s 8.8.8.8 -p tcp -m state --state NEW -m multiport --dports 22 -j ACCEPT # 仅仅允许8.8.8.8(可以换成你的跳板机或者VPN的ip地址)

-A INPUT -j REJECT --reject-with icmp-host-prohibite # 拒绝其他一切链接

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181002A07VIA00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券