我们有一个映射到 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
。