前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >selinux参考策略实验记录

selinux参考策略实验记录

作者头像
yifei_
发布2022-11-14 14:32:58
5830
发布2022-11-14 14:32:58
举报
文章被收录于专栏:yifei的专栏

selinux 参考策略的安装以及编写自己的策略模块。

实验环境

  • 需要使用python3,2不可以。
  • Fedora30或centos7

参考策略安装过程

代码语言:javascript
复制
可以在主目录下
# cd ~
# git clone https://github.com/SELinuxProject/refpolicy.git
添加contibuted模块(policy / modules / contrib)
# git submodule init
# git submodule update

编辑build.conf文件以反映要构建的策略, NAME = refpolicy, DISTRO选项需要取消注释并设置为redhat,DIRECT_INITRC应设置为y
# vim ~/refpolicy/src/policy/build.conf

在策略构建位置安装源。
# cd ~/refpolicy

# sudo make install-src
此命令会将整个源文件复制到/etc/selinux/refpolicy/src/policy下

# cd /etc/selinux/refpolicy/src/policy
# make bare
# make conf
# make install
构建初始策略/ booleans.conf和policy / modules.conf文件
此过程还将构建policy / modules / kernel / corenetwork.te / corenetwork.if文件(如果尚未存在)。这些将基于corenetwork.te.in和corenetwork.if.in配置文件的内容(对于这个简单的配置,这些文件不会被编辑)。

# make load
构建策略,将模块添加到存储并安装二进制内核策略及其支持配置文件。

# vim /etc/selinuc/config 
编辑/etc/selinuc/config,修改SELINUX=permissive,SELINUXTYPE=refpolicy

需要使用新策略重新启动系统,并在引导时重新标记,以完成交换。
# touch /.autorelabel
# shutdown -r now

构建和安装头文件

代码语言:javascript
复制
# cd /etc/selinux/refpolicy/src/policy
# make install-headers
生成一个build.conf文件,该文件表示master build.conf文件的内容,并将其放在/ usr / share / selinux / refpolicy / include目录中。
生成反映源的XML文档集,并将其放在/ usr / share / selinux / refpolicy / include目录中。
将用于构建的开发Makefile从策略标头复制到/ usr / share / selinux / refpolicy / include目录。
将支持宏.spt文件复制到/ usr / share / selinux / refpolicy/ include / support目录。这还将包含一个all_perms.spt文件,该文件将包含允许解析所有类和权限的宏。
将模块接口文件(.if)复制到以下相关模块目录:/usr/share/selinux/refpolicy/include/modules

编写自己的策略模块

代码语言:javascript
复制
cd ~
mkdir myapp
创建四个文件,分别添加下面的内容。
vim myapp.te
vim myapp.if
vim myapp.fc
vim Makefile

↓myapp.te

代码语言:javascript
复制
policy_module(myapp,1.0)

# Private type declarations
type myapp_t;
type myapp_exec_t;
type myapp_log_t;
type myapp_tmp_t;

domain_type(myapp_t)
domain_entry_file(myapp_t, myapp_exec_t)
logging_log_file(myapp_log_t)
files_tmp_file(myapp_tmp_t)

allow myapp_t myapp_log_t:file append_file_perms;
allow myapp_t myapp_tmp_t:file manage_file_perms;

files_tmp_filetrans(myapp_t,myapp_tmp_t,file)

↓myapp.fc

代码语言:javascript
复制
/usr/bin/myapp    --  gen_context(system_u:object_r:myapp_exec_t,s0)

↓myapp.if

代码语言:javascript
复制
## <summary>Myapp example policy</summary>
## <desc>
##  <p>
##      More descriptive text about myapp.  The desc
##      tag can also use p, ul, and ol
##      html tags for formatting.
##  </p>
##  <p>
##      This policy supports the following myapp features:
##      <ul>
##      <li>Feature A</li>
##      <li>Feature B</li>
##      <li>Feature C</li>
##      </ul>
##  </p>
## </desc>

########################################
## <summary>
##  Execute a domain transition to run myapp.
## </summary>
## <param name="domain">
##  <summary>
##  Domain allowed to transition.
##  </summary>
## </param>

interface(`myapp_domtrans',\`
    gen_requires(`
        type myapp_t, myapp_exec_t;
    ')

    domtrans_pattern($1,myapp_exec_t,myapp_t)
')

########################################
## <summary>
##  Read myapp log files.
## </summary>
## <param name="domain">
##  <summary>
##  Domain allowed to read the log files.
##  </summary>
## </param>

interface(`myapp_read_log',\`
    gen_requires(`
        type myapp_log_t;
    ')

    logging_search_logs($1)
    allow $1 myapp_log_t:file read_file_perms;
')

↓Makefile

代码语言:javascript
复制
AWK ?= gawk

NAME ?= $(shell $(AWK) -F= '/^SELINUXTYPE/{ print $$2 }' /etc/selinux/config)
SHAREDIR ?= /usr/share/selinux
HEADERDIR := $(SHAREDIR)/$(NAME)/include

include $(HEADERDIR)/Makefile
代码语言:javascript
复制
cd ~/myapp
make

要加载模块,您必须以允许运行的角色以root身份运行semodule。然后运行semodule -i以将模块插入正在运行的策略中:
semodule -i myapp.pp

查看是否有myapp模块
semodule -l | grep myapp

错误记录

修改selinux导致无法开机

代码语言:javascript
复制
在Grub启动菜单上按e进入编辑模式,在启动项
“kernel /vmlinuz-2.6.23.1-42.fc8 ro root=/dev/vogroup00/logvol00 rhgb quiet”
后面加上 enforcing=0 ,然后启动即可。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-07-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 实验环境
  • 参考策略安装过程
  • 构建和安装头文件
  • 编写自己的策略模块
  • 错误记录
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档