如何创建自定义SELinux标签

妖怪

我编写了一个服务/单个二进制应用程序,试图在Fedora 24上运行,它使用systemd运行,二进制文件已部署到 /srv/bot

我编写的此服务/应用程序需要在该目录中创建/打开/读取和重命名文件。

我首先开始基于SELinux创建新策略:允许进程在特定目录中创建任何文件

但是当我的应用需要重命名时,输出将显示警告:

#!!!! WARNING: 'var_t' is a base type.
allow init_t var_t:file rename;

我四处搜寻,发现我应该使用比基本类型更具体的SELinux标签,但是所有在线示例都向您展示了httpd / nginx / etc中的现有标签。

有没有办法为我自己的应用创建自定义标签?

我的想法是创建类似myapp_var_t的东西,使用

semanage fcontext -a -t my_app_var_t '/srv/bot(/.*)?'
restorecon -R -v /srv/bot

.pp将使用此自定义类型的自定义文件

如果有更好的解决方法,那也可以。

谢谢

更新

经过更多搜索后,我认为我要执行的操作的正确术语是创建新词types,这使我进入了https://docs.fedoraproject.org/en-US/Fedora/13/html/SELinux_FAQ/index.html#id3036916

基本上说,运行

sepolgen /path/to/binary

而且我能够得到一个模板,然后将其编译成pp文件并加载,仍然会出现一些错误,但是看起来我已经接近要执行的操作了。

如果我可以使用,我会更新这篇文章

妖怪

以跑步为起点

sepolgen /path/to/binary

这给你:

app.fc
app.sh
app.if
app.spec
app.te

要创建一个新文件SELinux file context以应用于包含您的程序/守护程序将修改的文件的父目录,请编辑app.te文件并添加:

type app_var_t;
files_type(app_var_t)

第一行声明了新类型,第二行调用了执行一些魔术操作并将其设置为文件类型的宏(结果是您不能在文件或目录上使用流程上下文行app_exec_t),有关更多信息,请参见“重新访问SELinux类型”。不同类型的信息

声明类型后,您需要告诉SELinux您的应用程序可以使用它,就我而言,我添加了

allow app_t app_var_t:dir { add_name remove_name write search};
allow app_t app_var_t:file { unlink create open rename write read };

这两行基本上说,允许app_t类型(这是我的应用程序的域),并使用上下文写入/搜索/ etc目录,app_var_t并允许它使用上下文app_var_t创建/打开/删除/ etc文件

难题的最后一部分是以某种方式告诉SELinux哪种文件夹和文件应该获得每种类型,您可以通过编辑app.fc文件来做到这一点(fc =>文件上下文)

在我的情况下,此文件只有两行:

/srv/bot/app        --  gen_context(system_u:object_r:app_exec_t,s0)
/srv/bot(/.*)?          gen_context(system_u:object_r:app_var_t,s0)

第一行直接指向部署在我的服务器上的二进制文件,因此该行获得了app_exec_t上下文。

第二行表示:

将app_var_t应用于目录/ srv / bot以及目录/ srv / bot内的所有文件

请注意第一行在--路径和调用之间的位置gen_context--意味着,仅将其应用于文件。在第二种情况下,我们什么都没有(只有空格),这意味着我希望将其应用于所有匹配的目录和文件,另一种选择是-d仅应用目录。

我现在有一个有效的策略,可以使用自定义策略部署我的应用程序,并且一切正常。(我的策略在.te文件中有很多条目,但这不在此问题的范围内。)

帮助我获得此解决方案的额外阅读材料:

sepolgen让事情变得更轻松

在盲目审核之前先想一想-2 mydomain

SELinux for RED HAT DEVELOPERS(Long PDF)

SElinux模块(1):类型和规则

样本策略(特别是postgresql)

了解文件上下文文件

本文收集自互联网,转载请注明来源。

如有侵权,请联系 j[email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章