NXP iMX8集成SELinux支持

By

Toradex胡珊逢

SELinux 是Security-Enhanced Linux 的简称,它是为Linux 提供安全子系统的内核模块。其主要作用是控制进程对资源的访问,在基于用户权限的DAC 之外对进程提供更加精细的强制访问控制(MAC)。在常见的 Linux 发行版中SELinux 功能可以通过安装相应的软件来开启,但在嵌入式 Linux 设备上往往需要重新生成BSP。本文接下来将介绍如何使用Yocto 为Apalis

iMX8计算机模块生成支持SELinux 的BSP。


Yocto 编译环境搭建可以参考这里。如果无法直接下载 repo 文件,也可以使用国内镜像。配置完成后,下载用于编译SELinux 的meta-selinuxlayer。Linux BSP 5.x 使用dunfell 分支,用 git 命令下载相同版本的meta-selinux。

----------------------------------

$ cd layers

$ git clone -bdunfell git://git.yoctoproject.org/meta-selinux

----------------------------------


在conf/local.conf 文件的结尾添加以下内容。

----------------------------------

DISTRO_FEATURES_append= " xattrs pam selinux"

PREFERRED_PROVIDER_virtual/refpolicy?= "refpolicy-minimum"

IMAGE_INSTALL_append= " packagegroup-core-full-cmdline packagegroup-core-selinux"

----------------------------------


Toradex 提供精简地 minimal console 和包含 Qt5 和gstreamer 等的 multimedia 两种参考镜像,配置文件位于layers/meta-toradex-demos/recipes-images/images 目录。根据需要,在tdx-reference-minimal-image.bb 或者tdx-reference-multimedia-image.bb 的inherit 后面添加selinux-image。

----------------------------------

$ vi tdx-reference-minimal-image.bb

inheritcore-imageselinux-image


SUMMARY ="Toradex Embedded Linux Reference Minimal Image"

DESCRIPTION ="Minimal image without graphical interface that just boots"


$ vi tdx-reference-multimedia-image.bb

requiretdx-reference-minimal-image.bb


SUMMARY ="Toradex Embedded Linux Reference Multimedia Image"

DESCRIPTION ="Image for BSP verification with QT and multimedia features"


inheritpopulate_sdk_qt5selinux-image

----------------------------------


默认的Linux 内核配置是没有添加SELinux 支持,因此在生成BSP 之前做相应的修改。

----------------------------------

$ MACHINE=apalis-imx8bitbake -c menuconfig virtual/kernel

----------------------------------


在“General setup“和”Security options“中开启以下功能。

----------------------------------

CONFIG_AUDIT=y

CONFIG_SECURITYFS=y

CONFIG_SECURITY_NETWORK=y

CONFIG_SECURITY_SELINUX=y

CONFIG_SECURITY_SELINUX_BOOTPARAM=y

CONFIG_SECURITY_SELINUX_DISABLE=y

CONFIG_SECURITY_SELINUX_DEVELOP=y

CONFIG_SECURITY_SELINUX_AVC_STATS=y

CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=0

CONFIG_DEFAULT_SECURITY_SELINUX=y

----------------------------------


最后编译所需的镜像,这里使用minimal console 镜像。

----------------------------------

$ MACHINE=apalis-imx8 bitbake tdx-reference-minimal-image

----------------------------------


生成的BSP 使用Toradex Easy Installer 安装到Apalis iMX8 计算机模块上。


开机启动后将SELinux 配置为permissive 模式,由于没有配置任何策略,采用默认的enforcing 模式会阻止进程对相关资源文件的访问,从而影响启动。所以在配置相应策略前,permissive 模式仅记录进程的操作但不进行阻止。

----------------------------------

root@apalis-imx8:~# vi /etc/selinux/config

# This file controls the state of SELinuxon the system.

# SELINUX= can take one of these threevalues:

#    enforcing - SELinux security policy is enforced.

#    permissive - SELinux prints warnings instead of enforcing.

#    disabled - No SELinux policy is loaded.

SELINUX=permissive


root@apalis-imx8:~# sync

----------------------------------


保存配置后重启。在调试串口中按空格进入U-Boot 命令模式,运行下面命令。

----------------------------------

Apalis iMX8 # setenv defargssecurity=selinux selinux=1

Apalis iMX8 # saveenv

Apalis iMX8 # reset

----------------------------------


重启后可以看到SELinux 相关日志,完成首次初始化后系统会自动重启。

----------------------------------

[   0.001418] SELinux:  Initializing.

[   4.652222] SELinux:  Permissionwatch in class filesystem not defined in policy.

[   4.660034] SELinux:  Permissionwatch in class file not defined in policy.

[   4.667029] SELinux:  Permissionwatch_mount in class file not defined in policy.

[   4.674527] SELinux:  Permissionwatch_sb in class file not defined in policy.

[   4.681764] SELinux:  Permissionwatch_with_perm in class file not defined in policy.

[   4.689612] SELinux:  Permissionwatch_reads in class file not defined in policy.

[   4.697116] SELinux:  Permissionwatch in class dir not defined in policy.

[   4.704003] SELinux:  Permissionwatch_mount in class dir not defined in policy.

----------------------------------


进入系统后查看SELinux 运行状态。

----------------------------------

root@apalis-imx8:~# sestatus

SELinux status:                 enabled

SELinuxfs mount:                /sys/fs/selinux

SELinux root directory:         /etc/selinux

Loaded policy name:             minimum

Current mode:                   permissive

Mode from config file:          permissive

Policy MLS status:              enabled

Policy deny_unknown status:     allowed

Memory protection checking:     actual (secure)

Max kernel policy version:      31

----------------------------------


至此用户可以根据项目需要创建对应的安全策略,并修改/etc/selinux/config 使其生效。



总结

SELinux为系统提供更加完善的访问控制,通过制定合适的安全策略,使系统更加安全、可靠地运行。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,997评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,603评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,359评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,309评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,346评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,258评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,122评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,970评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,403评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,596评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,769评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,464评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,075评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,705评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,848评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,831评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,678评论 2 354

推荐阅读更多精彩内容