是否可以在重启后保留 selinux 端口声明?

是否可以在重启后保留 selinux 端口声明?

目前我们每次启动时都需要运行这样的程序:

/usr/sbin/semanage port -a -t memcache_port_t -p tcp ${special-snowflake-port}

如果我们能在重启后保留这一点,那就太好了。答案是编译策略,但最大的问题是如何做到这一点?我在.fc文件文档中没有看到任何迹象表明这可以在那里编码,而且.te文件语法有点难以阅读。但很明显,预先编译的策略确实设置了一些东西,我只是找不到如何设置。

我错过了什么?

答案1

我刚刚在 CentOS 6.5 系统上测试了您提供的命令,它按预期执行并添加${special-snowflake-port}tcp memcache_port_t列表中。重新启动测试虚拟机并没有改变这一点,正如所见

semanage port -l | grep memcache_port_t
memcache_port_t                tcp      11311, 11211
memcache_port_t                udp      11211

除非你删除它,否则它将一直存在

semanage port -d -t memcache_port_t -p tcp 11311
semanage port -l | grep memcache_port_t
memcache_port_t                tcp      11211
memcache_port_t                udp      11211

你误会了什么?是什么让你认为这不是持久的?

答案2

事实证明它们实际上是持久化的,而我从未注意到。semanage将策略的文件表示存储在中/etc/selinux/${config-file}/modules/active。在我的例子中,端口列表位于:

/etc/selinux/targeted/modules/active/ports.local

这里充满了与此类似的条目:

portcon tcp 11222 system_u:object_r:memcache_port_t:s0

每当 semanage 添加(-a)或删除(-d)规则时,此目录都会重新生成。

file_contexts是文件持久化文件上下文。

这很方便,因为这些文件的 grep 生成速度比 semanage -l 输出的速度更快。

相关内容