在启用了SELinux Enforcing的CentOS/RHEL 7/8和Fedora 33/32/31/30上修改SSH端口

时间:2020-02-23 14:37:46  来源:igfitidea点击:

在本指南中,我们将看到如何在SELinux以Enforcecing模式运行的情况下更改CentOS 7/8,RHEL 7/8和Fedora 33/32/31/30/29上的SSH服务端口。当SELinux在强制模式下运行时,它将强制执行SELinux策略,并根据SELinux策略规则拒绝访问。大多数Linux/Unix系统上的标准SSH端口是TCP端口22. 可以将其轻松更改为系统中其他应用程序不使用的自定义端口。

当SELinux在Enforcing模式下运行时,要设置的端口将需要重新标记,以便控制访问的策略规则可以接受ssh服务进行绑定。遵循以下讨论的步骤,以在Enforcing模式下运行SELinux的情况下更改CentOS/RHEL/Fedora服务器或者Desktop上的SSH端口。

备份当前的SSH配置

登录到CentOS/RHEL/Fedora系统并备份当前的ssh守护程序配置文件。

date_format=`date +%Y_%m_%d:%H:%M:%S`
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_$date_format

确认:

$ls /etc/ssh/sshd_config*
/etc/ssh/sshd_config  /etc/ssh/sshd_config_2019_09_05:21:40:10

更改SSH服务端口

使用我们喜欢的文本编辑器vi,vim,nano e.t.c打开SSH服务配置文件。

sudo vi /etc/ssh/sshd_config

找到具有以下内容的行:

#Port 22

取消注释端口行,并设置要使用的新服务端口。不适使用端口33000。

Port 33000

保存更改并关闭文件。

在SELinux上允许新的SSH端口

标记为SSH的默认端口是22.

$semanage port -l | grep ssh
ssh_port_t                     tcp      22

如果要允许sshd绑定到配置的网络端口,则需要将端口类型修改为ssh_port_t。

sudo semanage port -a -t ssh_port_t -p tcp 33000

确认新端口已添加到ssh允许的端口列表中。

$semanage port -l | grep ssh
ssh_port_t                     tcp      33000, 22

在Firewalld上打开SSH端口

始终建议保持防火墙服务运行并仅允许信任的服务。

sudo firewall-cmd --add-port=33000/tcp --permanent
sudo firewall-cmd --reload

如果未安装Firewalld,请使用yum进行安装并启动服务。

sudo yum -y install firewalld
sudo systemctl enable --now firewalld
sudo firewall-cmd --add-port=33000/tcp --permanent
sudo firewall-cmd --reload

现在,我们可以删除ssh服务。

sudo firewall-cmd --remove-service=ssh --permanent
sudo firewall-cmd --reload

重新启动sshd服务

重新启动ssh服务以使更改生效。

sudo systemctl restart sshd

验证ssh的监听地址。

$netstat -tunl | grep 33000
tcp        0      0 0.0.0.0:33000           0.0.0.0:*               LISTEN     
tcp6       0      0 :::33000                :::*                    LISTEN