[学习记录]SELinux自定义策略初步

这篇文章主要记录了我如何学习selinux自订策略的,相关内容在网络上非常零散,自己也走了很多弯路,所以专门写了这么篇文章作为整理。

 

这里先提一句,关于selinux的配置,网上最容易搜索到的是对selinux程序的配置,例如开关,以及对某种协议的控制,这些内容在我之前整理selinux管理工具种有提到,是相对表面的selinux配置,本文的配置是从编写自定义的策略模块,并装载,因此管理粒度更细。

 

按照惯例这里先附上一些参考资料的网站

来自selinuxwiki的一些相关内容,wiki里可参考的内容其实非常多,但网站导航不太行,很难找    https://selinuxproject.org/page/RefpolicyWriteModule

这个是wiki的github页面,官方稍微做了一些整理,但是内容感觉没有wiki多,不过还是有一定参考价值的https://github.com/SELinuxProject/refpolicy/wiki/GettingStarted

这个是slinux的一个refpolicy项目,希望构架一个普遍安全的策略https://github.com/SELinuxProject/refpolicy

 

我采用的是centos7环境

在开发selinux策略之前,千万不要忘记安装selinux的开发包

yun install selinux-policy-devel

 

编写规则其实非常简单,

1.首先准备好一个空的文件夹作为工作目录

2.创建一个.te文件,内容如下,仅作参考

 

 

 第一句policy_module是一句官方定义好的宏指令

第二句和第三句是定义了两种类型,test1_t为进程类型,test1_exec_t为可执行文件类型

第四句为规则,允许test1_t类型对test1_exec_t类型的文件进行read_file_perms的操作,后者也是个宏指令,包含若干具体操作类型

如果需要引入外部类型或角色需要加入以下内容

gen_require(`
  type container_r;
  role system_r;
')

 

 

 

3.创建一个.fc文件,内容如下

 

 

主要是对给定的路径设置一个安全上下文

 

4.然后就可以准备编译了,首先我们要在当前目录下获取一个makefile文件,安装完最开始提到的开发包后,centos中可以在如下目录找到

/usr/share/selinux/devel/Makefile

拷贝到当前文件夹下,make就会自动生成

 

 

test2是我随手创建的空文件夹,test1.if是一个接口相关的文件夹,我们可以自己定义,这里由于我们没有定义,所以自动生成了,还有存储临时文件夹tmp,最后也是最重要的文件test1.pp这个就是编译后的模块了

可以运行

semodule -i test1.pp    #装载模块
semodule -l               #列出已装载的所有模块
semodule -r test1     #卸载指定模块

 

至此我们的第一步就算是迈出来了。

 

posted @ 2019-11-13 16:05  冷血无情康纳酱  阅读(4770)  评论(0编辑  收藏  举报