灵魂拷问,我应该更改 SSH 端口吗?
偶尔我会在网上看到有关 SSH 端口更改的讨论。很多人说应该修改端口,这会挡掉很多暴力破解的人。而反对派则认为修改端口不但没有提高安全性(因为可以通过端口扫描检测到),反而还有可能让攻击者对你更有兴趣。那么到底修改还是不修改就看你自己喽。
整体流程
- 修改ssh配置文件,添加新的端口号
- 让防火墙允许新的端口号通过
- 使用新端口登录测试
- 修改ssh配置文件删掉旧端口号(22)
- 让防火墙禁用旧端口号(22)
我采取了一个看上去很繁琐的步骤,但这是为了防止你注销并因配置失败而无法再次登录。
现在让我们来看看设置。本文当前端口(旧端口)为22,修改后的端口(新端口)为8822。
修改ssh配置文件,添加新的端口号
首先更改 SSH 设置。以下命令使用 vim 进行编辑,你也可以使用你喜欢的编辑器。
$ sudo vim /etc/ssh/sshd_config
修改成以下的样子。减号表示删除行,加号表示添加行。
- #Port 22
+ Port 22
+ Port 8822
sshd_config修改完成以后用下面的命令重启sshd服务。
$ sudo systemctl restart sshd
让防火墙允许新的端口号通过
由于有防火墙的存在,所以使用以下命令开放这个新端口。
$ sudo ufw allow 8822/tcp
$ sudo ufw reload
使用新端口登录测试
用新端口进行登录测试确保新端口已经可用。如果你无法使用新端口登录,请查看ssh设置或防火墙设置。
修改ssh配置文件删掉旧端口号(22)
SSH设置
同样的,继续删掉旧端口的设置。
$ sudo vim /etc/ssh/sshd_config
同样的,减号表示删除行,加号表示添加行。
- Port 22
+ #Port 22
sshd_config设置完成后重启sshd服务。
$ sudo systemctl restart sshd
让防火墙禁用旧端口号(22)
首先确认一下当前防火墙状态
$ sudo ufw status
你会看到
至 动作 来自
- -- --
22 ALLOW Anywhere
8822/tcp ALLOW Anywhere
22 (v6) ALLOW Anywhere (v6)
8822/tcp (v6) ALLOW Anywhere (v6)
可以看到新旧规则都存在,删掉旧的!
$ sudo ufw delete allow 22/tcp
$ sudo ufw reload
这样就完成端口的修改了。
当然,就像标题写的那样,如果你希望共用多个端口,那么你也可以保留旧端口或者开启多个新的端口。
最后
在关闭旧端口之前一定要确保你可以使用新端口登录。如果你不能访问物理服务器的话,不能登录ssh意味着你将失去对服务器的控制,千万要谨慎。
希望这篇文章对你有用,祝好运。