2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【失敗】Raspberry PiでSELinuxを有効にする。

Last updated at Posted at 2018-12-20

はじめに

今回は、Raspberry PiのRaspbianにSELinuxを導入します。
タイトルにあるように失敗したのですが、一応記録に残しておきます。

環境

今回使用した環境は以下の通りです。

その1

MacBook Pro (Retina, 13-inch, Late 2013)
macOS 10.14.2
VMware Fusion 11.0.2
Debian Stretch with Raspberry Pi Desktop 2018-11-26

その2

Raspberry Pi 3 Model B
Raspbian Stretch with desktop 2018-11-13

環境1は比較用です。特に断りが無い限り、両方の環境で操作を行っています。

SELinuxパッケージのインストール

Raspbianは、Debianを元にしたパッケージなので、ここを参考に必要なパッケージをインストールします。

環境その1

特に問題なくインストール完了。

pi@raspberry-vm1:~ $ sudo apt-get install selinux-basics selinux-policy-default auditd
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  checkpolicy gawk libauparse0 libsigsegv2 m4 policycoreutils policycoreutils-dev policycoreutils-python-utils python3-audit python3-decorator python3-ipy python3-networkx python3-scipy python3-selinux python3-semanage python3-sepolgen python3-sepolicy python3-setools python3-yaml selinux-policy-dev selinux-utils setools
提案パッケージ:
  audispd-plugins gawk-doc m4-doc python-networkx-doc python-scipy-doc logcheck syslog-summary setools-gui
以下のパッケージが新たにインストールされます:
  auditd checkpolicy gawk libauparse0 libsigsegv2 m4 policycoreutils policycoreutils-dev policycoreutils-python-utils python3-audit python3-decorator python3-ipy python3-networkx python3-scipy python3-selinux python3-semanage python3-sepolgen python3-sepolicy python3-setools python3-yaml selinux-basics selinux-policy-default selinux-policy-dev selinux-utils setools
アップグレード: 0 個、新規インストール: 25 個、削除: 0 個、保留: 1 個。
15.3 MB のアーカイブを取得する必要があります。
この操作後に追加で 65.4 MB のディスク容量が消費されます。
続行しますか? [Y/n] y
(省略)

pi@raspberry-vm1:~ $ sudo sestatus
SELinux status:                 disabled

環境その2

いろいろと警告やエラーが発生。特にauditdのインストールに失敗。

pi@raspberrypi1:~ $ sudo apt-get install selinux-basics selinux-policy-default auditd
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  checkpolicy libauparse0 m4 policycoreutils policycoreutils-dev policycoreutils-python-utils python3-audit python3-decorator python3-ipy python3-networkx python3-scipy python3-selinux python3-semanage python3-sepolgen python3-sepolicy python3-setools python3-yaml selinux-policy-dev selinux-utils setools
提案パッケージ:
  audispd-plugins m4-doc python-networkx-doc python-scipy-doc logcheck syslog-summary setools-gui
以下のパッケージが新たにインストールされます:
  auditd checkpolicy libauparse0 m4 policycoreutils policycoreutils-dev policycoreutils-python-utils python3-audit python3-decorator python3-ipy python3-networkx python3-scipy python3-selinux python3-semanage python3-sepolgen python3-sepolicy python3-setools python3-yaml selinux-basics selinux-policy-default selinux-policy-dev selinux-utils setools
アップグレード: 0 個、新規インストール: 23 個、削除: 0 個、保留: 0 個。
14.1 MB 中 0 B のアーカイブを取得する必要があります。
この操作後に追加で 59.2 MB のディスク容量が消費されます。
続行しますか? [Y/n] y
(省略)
auditd (1:2.6.7-2) を設定しています ...
update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults
Job for auditd.service failed because the control process exited with error code.
See "systemctl status auditd.service" and "journalctl -xe" for details.
invoke-rc.d: initscript auditd, action "start" failed.
● auditd.service - Security Auditing Service
   Loaded: loaded (/lib/systemd/system/auditd.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Fri 2018-12-21 06:59:09 JST; 35ms ago
     Docs: man:auditd(8)
           https://people.redhat.com/sgrubb/audit/
  Process: 8294 ExecStartPost=/sbin/augenrules --load (code=exited, status=1/FAILURE)
  Process: 8293 ExecStart=/sbin/auditd -n (code=exited, status=1/FAILURE)
 Main PID: 8293 (code=exited, status=1/FAILURE)

12月 21 06:59:09 raspberrypi1 systemd[1]: Starting Security Auditing Service...
12月 21 06:59:09 raspberrypi1 augenrules[8294]: /sbin/augenrules: No change
12月 21 06:59:09 raspberrypi1 auditctl[8305]: Error - audit support not in kernel
12月 21 06:59:09 raspberrypi1 systemd[1]: auditd.service: Main process exited, code=exited, s…ILURE
12月 21 06:59:09 raspberrypi1 systemd[1]: Failed to start Security Auditing Service.
12月 21 06:59:09 raspberrypi1 systemd[1]: auditd.service: Unit entered failed state.
12月 21 06:59:09 raspberrypi1 systemd[1]: auditd.service: Failed with result 'exit-code'.
Hint: Some lines were ellipsized, use -l to show in full.
dpkg: パッケージ auditd の処理中にエラーが発生しました (--configure):
 サブプロセス インストール済みの post-installation スクリプト はエラー終了ステータス 1 を返しました
(省略)
policycoreutils (2.6-3) を設定しています ...
selinux-autorelabel-mark.service is a disabled or a static unit, not starting it.
(省略)
selinux-policy-default (2:2.20161023.1-9) を設定しています ...
Updating selinux default policy (this step might take a moment)...libsemanage.semanage_direct_install_info: abrt module will be disabled after install due to default enabled status.
libsemanage.semanage_direct_install_info: certwatch module will be disabled after install due to default enabled status.
(以下同様&省略)
処理中にエラーが発生しました:
 auditd
E: Sub-process /usr/bin/dpkg returned an error code (1)

pi@raspberrypi1:~ $ sudo sestatus
SELinux status:                 disabled

SELinuxの有効化

とりあえず続けます。

環境その1

selinux-activateコマンドを実行して、指示通りOSを再起動するだけです。
/.autorelabelファイルが作成されているので、起動時にファイルシステムの再ラベル付けが行われます。

pi@raspberry-vm1:~ $ sudo selinux-activate
Activating SE Linux
Generating grub configuration file ...
Found background image: /usr/share/images/desktop-base/desktop-grub.png
Linux イメージを見つけました: /boot/vmlinuz-4.9.0-8-amd64
Found initrd image: /boot/initrd.img-4.9.0-8-amd64
完了
SE Linux is activated.  You may need to reboot now.

pi@raspberry-vm1:~ $ ls -la /.autorelabel 
-rw-r--r-- 1 root root 0 12月 21 07:15 /.autorelabel

pi@raspberry-vm1:~ $ sudo shutdown -r now
pi@raspberry-vm1:~ $ sudo sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             default
Current mode:                   permissive
Mode from config file:          permissive
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      30

環境その2

どうやら、RaspbianのKernelにSELinuxが組み込まれていないのが原因のようです。
解決するには、Kernelの再ビルドが必要なため、今回はここまでです。

参考

The Debian Administrator's Handbook
14.5. Introduction to SELinux

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?