作为一个系统管理员,将SSH端口号更改为默认的 22 可以说是保障服务器安全的基本操作。因为 SSH 的默认端口号是 22,是所有人(包括黑客)都知道,如果不修改 SSH 端口,服务器将面临频繁的暴力破解。

所以将 SSH 端口更改为其它将增强服务器的安全性,因此不坏好心的人不会知道 SSH 在哪个端口上进行通信。虽然修改端口不会阻止某个决心闯入您服务器的人,但至少会帮你排除掉一大批机械性的端口扫描,暴力破解等攻击。

个人认为 CentOS 7 较为安全的方法是:

我认为,保护SSH服务器的最佳方法是使用 SSH 证书加密来实现无密码登录,并在安全组上面配置策略,只允许指的 IP 段访问指的端口。使用此方法,仅允许具有加密密钥的计算机使用SSH协议登录。

Centos 7端口修改步骤:

因为我这里是使用 Root 账户登录,如果你是谷歌云这类不是 Root 权限登录的服务器的需要在前面加上 Sudo 命令。

1.备份原有 SSH 配置

cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

2.配置 SSH 新的登录端口

打开 SSH 配置文件

vi /etc/ssh/sshd_config

这里我们强烈建议先保留 22 端口,如果直接修改了,会有可能出线配置错误等原因,造成无法登录服务器哦。

所以我们先增加一个新端口,以确保可以通过新端口可以正常连接后,再禁用掉 22 端口。这都是经验教训啊!!

# If you want to change the port on a SELinux system, you have to tell
# SELinux about this change.
# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
#
Port 22
Port 2222
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

修改完毕之后,按 ECS 然后输入 :WQ 保存退出。

3.配置防火墙允许新的 SSH 端口通讯

Centos 7已经默认使用 Firewall了。

firewall-cmd --permanent --zone=public --add-port=2222/tcp

如果报错:FirewallD is not running,表示防火墙还没有开启,可直接跳过此步骤。

如果正常执行了,需要重新加载防火墙配置使其生效。

firewall-cmd --reload

4. 重启 SSH 服务使我们新增端口失效。

systemctl restart sshd.service

通过运行以下命令验证 SSH 现在是否在新端口上运行。

ss -tnlp | grep ssh

反馈如下:

[root@web ~]# ss -tnlp | grep ssh
LISTEN 0 128 *:2222 *:* users:(("sshd",pid=22174,fd=3))
LISTEN 0 128 [::]:2222 [::]:* users:(("sshd",pid=22174,fd=4))

有上诉结果及表面修改已经成功,返回第二步把 22 端删掉即可。

如果您是使用阿里云或者 Vultr 这类服务器的话,还需要配置安全组,才可正常通讯哦。