在SELinux和Firewalld环境下配置SSH端口的完整指南

本文详细介绍了在Fedora系统中如何同时配置SELinux策略和Firewalld防火墙规则来更改SSH服务端口。包含semanage工具的使用、端口策略添加、防火墙规则配置以及sshd服务重启等完整操作步骤。

如何在使用SELinux和Firewalld的情况下设置SSH

在运行Fedora时,如果您想更改SSH端口,仅仅更改防火墙规则是不够的。如果您正在运行SELinux,更改策略以允许不同的端口同样重要。我通过艰难的方式学到了这一点,希望以下指南能有所帮助。

让我们从semanage的介绍开始。

semanage简介

来自man手册描述:

semanage用于配置SELinux策略的某些元素,而无需修改策略源或重新编译。这包括从Linux用户名到SELinux用户标识的映射(控制Linux用户登录时分配的初始安全上下文并限制其授权角色集),以及各种对象的安全上下文映射,例如网络端口、接口和节点(主机)以及文件上下文映射。请参阅下面的示例部分以了解常见用法示例。请注意,semanage login命令处理从Linux用户名(登录名)到SELinux用户标识的映射,而semanage user命令处理从SELinux用户标识到授权角色集的映射。在大多数情况下,管理员只需要调整前者映射;后者主要由基础策略定义,通常不需要修改。

哪个包提供semanage?

我使用Fedora,所以在这种情况下yum应该能帮忙。

1
dnf provides semanage

我有以下包提供semanage,所以让我们安装它。

1
dnf install policycoreutils-python-utils

此外,如果您想检查semanage策略中的端口,可以执行以下操作:

1
semanage port --list

配置步骤

在我对sshd_config进行任何更改之前,让我们将端口配置添加到SELinux策略中。

1
semanage port -a -t ssh_port_t -p tcp 52022

如果我再次获取列表,应该会得到类似这样的结果:

1
ssh_port_t tcp 52022, 22

上面的输出意味着这里有两个端口允许SSH,分别是52022和22。这很好,以防有人想改回22。

好的,现在一切看起来都不错,让我们继续将规则添加到防火墙中。如果您不使用--permanent,规则在服务重启时不会被保存,所以这很重要。以下命令在公共区域添加TCP端口52022。

1
firewall-cmd --permanent --zone=public --add-port=52022/tcp

要在当前会话中测试,请尝试不使用permanent。

现在应该全部设置好了。您可以继续在sshd_config中将端口更改为52022。

1
vi /etc/ssh/sshd_config

如果以上所有操作都已完成,重新启动服务。

1
systemctl restart sshd

查看状态,应该类似于以下内容:

1
systemctl status sshd
1
2
23:13:57 host.com systemd[1]: Started OpenSSH server daemon.
23:13:57 host.com sshd[795]: Server listening on X.X.X.X port 52022.
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计