如何为自定义端口启用 selinux

如何为自定义端口启用 selinux

我们有一个映射到 Web 应用程序的服务。

因此,我们需要为其后端服务允许80端口和16700。

在登录的时候会连接该服务进行身份验证和其他部分的数据。

在防火墙中,我们允许这两个使用

防火墙cmd --permanent --add-port=16700/tcp 防火墙cmd --permanent --add-port=80/tcp

如果我禁用 selinux 或将其设置为 permissive,它就会正常工作。如果我设置为 enforcing,它就不会正常工作。

因此,我在下面添加了 80 端口。setsebool -P httpd_can_network_connect on

但是,由于 16700 端口,它仍然在尝试登录。将这个 16700 添加到 http_port_t 也不起作用。semanage port -a -t http_port_t -p tcp 16700

并且这个 16700 在 bool 中也不存在。

有什么建议吗,如何在 selinux 中启用此端口?

操作系统:Redhat 7.4

答案1

semanage port -a -t http_port_t -p tcp 16700是在 SELinux 中允许端口的正确操作。如果它“不起作用”,那么您需要找出原因。检查您可能收到的错误消息,检查审计日志,检查其余日志以确保万无一失。

当然,您还需要打开防火墙中的端口,但您似乎没有这样做。您更改了磁盘上的配置,但没有更改实际运行的防火墙。使用以下命令打开端口:

firewall-cmd --add-port=16700/tcp

最佳做法是不是除了真正需要它的命令(例如添加和删除区域)外,不要使用它--permanent。如果您在添加端口时犯了错误,并将自己锁定,则只需重新启动防火墙(或 VM)即可恢复。如果您将错误的规则添加为永久规则,那么一旦防火墙重新启动,您将被锁定并且很难恢复。一旦您确定正在运行的防火墙正常工作,您就可以使用 保存它firewall-cmd --runtime-to-permanent

相关内容