CentOS 8 修改 ssh 默认端口

发表于 2022-11-22

前言

随着技术的发展,网络安全问题同样需要得到重视。常规服务使用默认端口就是存在一定安全隐患的,因此我们需要修改服务的默认端口。这样可以避开扫描标准端口、弱口令暴力破解的风险,今天就记录一下 Centos 8 修改 ssh 服务的默认端口。

编辑配置文件

编辑 sshd 配置文件,将原本注释的#Port 22取消注释符号并把端口改成不常用的端口,如:12345 等。

# 编辑 sshd 配置文件
vi /etc/ssh/sshd_config

示例配置

############################# 部分配置 #############################
# 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
# 在新端口确认可用前保留 22 端口
Port 22
Port 12345
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
############################# 部分配置 #############################

在确认新增的端口能正常使用前,建议先保留 22 端口。可以防止配置错误导致服务器连接不上的意外,在确认新增的端口有效后就可以注释掉 22 端口了,再重启服务就能愉快使用新端口了。

SELinux 开放新端口

修改配置文件后,需要在 SELinux 上开放新端口。如果不开放端口,ssh 服务无法在新的端口上建立监听。 没有使用过semanage命令的服务器,需要先安装 semanage 及其依赖包 policycoreutils-python-utils。依赖包不一定是每台服务器都需要,建议做一次安装,确保后续的操作顺利。

yum provides semanage
yum -y install policycoreutils-python-utils

添加开放端口

semanage port -a -t ssh_port_t -p tcp 12345

防火墙开放新端口

有防火墙的同样需要在防火墙开放端口。如果不开放端口,ssh 服务的网络通信将会被拦截在防火墙外。

# 端口永久开放
firewall-cmd --zone=public --add-port=12345/tcp --permanent
# 重新加载防火墙
firewall-cmd --reload

重启 ssh 服务

当端口都开放后,重启 ssh 服务。就能使用 ssh 工具连接新开放的端口了,能正常连接成功就表示完成 ssh 服务新端口的开放。 确认新端口的 ssh 服务正常后,再次修改配置文件注释掉默认端口:22 并重启 ssh 服务。 最后验证默认端口:22 ,确保默认端口不能再连接 ssh 服务。

systemctl restart sshd.service