在SELinux中管理自定义端口的最佳方法
在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生成的本地策略使用以下授权:
它允许httpd绑定到任何端口(不仅仅是http_port_t中列出的端口),并连接到任何端口.这种方法的专业是它包含在本地策略中,并且不会在下一次yum更新时被覆盖.可以肯定的是,它授予了比必要更广泛的许可; httpd可以绑定并连接到任何端口. “狭隘”的解决方案 绑定的替代方法是使用以下命令将我们的自定义端口添加到http_port_t列表:
我知道我可以使用semanage port -l |查看http_port_t下的端口列表grep http_port_t,但我不知道这个列表的存储位置,也不知道下一个使用新策略的yum更新是否会覆盖该列表. 连接的替代方法是使用以下命令创建新的端口列表:
然后使用以下内容创建本地策略:
就像增强的http_port_t列表一样,我不知道我的新ajp_port_t列表是否能够在安装新的目标策略版本后继续存在. 解决方法
semanage创建了不受策略包控制的新模块.升级策略包后,这些模块将保留,并在加载时应用于新策略.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |