如何在使用SELinux和Firewalld的情况下设置SSH
在运行Fedora时,如果您想更改SSH端口,仅仅更改防火墙规则是不够的。如果您正在运行SELinux,更改策略以允许不同的端口同样重要。我通过艰难的方式学到了这一点,希望以下指南能有所帮助。
让我们从semanage的介绍开始。
semanage简介
来自man手册描述:
semanage用于配置SELinux策略的某些元素,而无需修改策略源或重新编译。这包括从Linux用户名到SELinux用户标识的映射(控制Linux用户登录时分配的初始安全上下文并限制其授权角色集),以及各种对象的安全上下文映射,例如网络端口、接口和节点(主机)以及文件上下文映射。请参阅下面的示例部分以了解常见用法示例。请注意,semanage login命令处理从Linux用户名(登录名)到SELinux用户标识的映射,而semanage user命令处理从SELinux用户标识到授权角色集的映射。在大多数情况下,管理员只需要调整前者映射;后者主要由基础策略定义,通常不需要修改。
哪个包提供semanage?
我使用Fedora,所以在这种情况下yum应该能帮忙。
|
|
我有以下包提供semanage,所以让我们安装它。
|
|
此外,如果您想检查semanage策略中的端口,可以执行以下操作:
|
|
配置步骤
在我对sshd_config进行任何更改之前,让我们将端口配置添加到SELinux策略中。
|
|
如果我再次获取列表,应该会得到类似这样的结果:
|
|
上面的输出意味着这里有两个端口允许SSH,分别是52022和22。这很好,以防有人想改回22。
好的,现在一切看起来都不错,让我们继续将规则添加到防火墙中。如果您不使用--permanent,规则在服务重启时不会被保存,所以这很重要。以下命令在公共区域添加TCP端口52022。
|
|
要在当前会话中测试,请尝试不使用permanent。
现在应该全部设置好了。您可以继续在sshd_config中将端口更改为52022。
|
|
如果以上所有操作都已完成,重新启动服务。
|
|
查看状态,应该类似于以下内容:
|
|
|
|