加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

在SELinux中管理自定义端口的最佳方法

发布时间:2020-12-13 16:45:25 所属栏目:Linux 来源:网络整理
导读:在RHEL 6.2上,我们在主机上使用httpd作为另一台主机上Tomcat的前端代理,我们还将mod_status配置为侦听非标准端口以向监视工具提供状态信息.因此,我们需要httpd来1)建立网络连接,2)监听非标准端口. 默认目标策略(当前处于许可模式)仅允许httpd侦听已定义的端
在RHEL 6.2上,我们在主机上使用httpd作为另一台主机上Tomcat的前端代理,我们还将mod_status配置为侦听非标准端口以向监视工具提供状态信息.因此,我们需要httpd来1)建立网络连接,2)监听非标准端口.

默认目标策略(当前处于许可模式)仅允许httpd侦听已定义的端口列表(semanage port -l | grep http_port_t),并且不允许httpd进行出站网络连接. aureport -a显示当httpd尝试绑定到自定义状态端口时以及当它尝试连接到其他主机上的AJP端口时AVC拒绝.

我发现了两种解决方案,但其中一种似乎过于宽松,而另一种解决方案太脆弱(即可能在政策升级时破坏).

“广泛”的解决方案

我使用audit2allow生成本地策略源,然后使用checkmodule编译它,semodule_package生成策略包,并使用semanage开始强制执行它.然后我重新启动了httpd,并确认没有生成AVC拒绝. audit2allow生成的本地策略使用以下授权:

allow httpd_t port_t:tcp_socket { name_bind name_connect };

它允许httpd绑定到任何端口(不仅仅是http_port_t中列出的端口),并连接到任何端口.这种方法的专业是它包含在本地策略中,并且不会在下一次yum更新时被覆盖.可以肯定的是,它授予了比必要更广泛的许可; httpd可以绑定并连接到任何端口.

“狭隘”的解决方案

绑定的替代方法是使用以下命令将我们的自定义端口添加到http_port_t列表:

semanage port -a -t http_port_t -p tcp (custom-port-number)

我知道我可以使用semanage port -l |查看http_port_t下的端口列表grep http_port_t,但我不知道这个列表的存储位置,也不知道下一个使用新策略的yum更新是否会覆盖该列表.

连接的替代方法是使用以下命令创建新的端口列表:

semanage port -a -t ajp_port_t -p tcp 9010

然后使用以下内容创建本地策略:

allow httpd_t ajp_port_t:tcp_socket { name_connect };

就像增强的http_port_t列表一样,我不知道我的新ajp_port_t列表是否能够在安装新的目标策略版本后继续存在.

解决方法

semanage创建了不受策略包控制的新模块.升级策略包后,这些模块将保留,并在加载时应用于新策略.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读