【Linux】SELinux

■ はじめに

SELinux についてメモ。

目次

【1】SELinux
 補足:任意アクセス制御と強制アクセス制御
【2】利点
【3】機能
 1)TE(type enforcement)
 2)ドメイン遷移
 3)RBAC(Role Based Access Control)
 4)MAC(Mandatory Access Control)
【4】動作モード
 1)Enforcing
 2)Permissive
 3)Disable
【5】設定変更方法
【6】関連コマンド
 1)getenforceコマンド/setenforceコマンド
 2)sestatusコマンド
 3)chconコマンド
 4)restoreconコマンド
 5)semanageコマンド

【1】SELinux

* SELinux = Security-Enhanced-Linux 
 => 【直訳】セキュリティ強化されたLinux
* Linuxに強制アクセス制御機能 (MAC: Mandatory Access Control) 
 を加えるモジュール

補足:任意アクセス制御と強制アクセス制御

https://www.jpcert.or.jp/tips/2007/wr071001.html

より抜粋

任意アクセス制御(DAC:Discretionary Access Control)

* リソースの所有者にアクセス制御を任せる方式

強制アクセス制御(MAC: Mandatory Access Control)

* リソース所有者の意図に関らず、
 システムの管理者により一定のアクセス制御を強制する方式

【2】利点

 * 細かなアクセス制御が可能になり、
 セキュリティ強化になる

補足事項

* サーバ侵入されたとしても被害を最小限に食い止めるため
 の仕組みで、あくまで事後防衛手段である
 => 侵入自体を防衛するための仕組みではないことに注意

【3】機能

1)TE(type enforcement)
2)ドメイン遷移
3)RBAC(Role Based Access Control:ロールベースアクセス制御)
4)MAC(Mandatory Access Control:強制アクセス制御)

1)TE(type enforcement)

* プロセスがファイルなどのリソースにアクセス制限する機能

2)ドメイン遷移

* プロセスが子プロセスを起動した場合、そのドメインは親プロセスと同じですが、
 子プロセスのドメインを変えることができる機能

3)RBAC(Role Based Access Control)

* RBAC =  ロールベースアクセス制御
* 個々のユーザごとではなく、
 ユーザに割り当てられたロール(role:役割)ごとに
 権限を付与する方式

4)MAC(Mandatory Access Control)

* リソース所有者の意図に関らず、
 システムの管理者により一定のアクセス制御を強制する方式

【4】動作モード

1)Enforcing

* SELinux 有効
* ルール外の動作があれば止める

2)Permissive

* SELinux 有効
* ただしルール外の動作はログに記録するのみ

3)Disable

* SELinux 無効。

【5】設定変更方法

sudo vi /etc/selinux/config
~~~~~~
SELINUX=permissive
~~~~~~

# OS再起動
sudo reboot

【6】関連コマンド

【関連用語】SELinux コンテキスト

 * ls コマンドや ps コマンドに -Z オプションを
 つけることで確認でき、「:」で区切られた 4 つの項目からなり、
 それぞれユーザー、ロール、タイプ、機密ラベルで構成

1)getenforceコマンド/setenforceコマンド

https://atmarkit.itmedia.co.jp/ait/articles/1808/16/news016.html
getenforceコマンド

* SELinuxの動作モードを表示

setenforceコマンド

* SELinuxの動作モードを表示

# 1の代わりに「enforcing」
setenforce 1

# 確認
getenforce

# 0の代わりに「permissive」
setenforce 0

2)sestatusコマンド

* SELinuxの動作モードを一時的に変更

sestatus

3)chconコマンド

* chcon = CHange file selinux security CONtext
* ファイルのSELinuxコンテキストを一時的に変更

sudo chcon -R -t httpd_sys_rw_content_t /var/www/cgi-bin

sudo chcon -R -t httpd_sys_rw_content_t /var/www/taskboard

4)restoreconコマンド

* RESTORE file(s) default selinux security CONtext
* デフォルトの状態に戻す

sudo restorecon -R /var/www/cgi-bin

5)semanageコマンド

* SElinux  policy MANAGEment tool
* ファイルのSELinuxコンテキストを永続的に変更

sudo semanage fcontext -a -t httpd_sys_rw_content_t /var/www/cgi-bin

参考文献

http://itpro.nikkeibp.co.jp/article/COLUMN/20060718/243512/
https://www.designet.co.jp/faq/term/?id=U0VMaW51eA
使用を推進するサイト
https://qiita.com/yunano/items/857ab36faa0d695573dd
https://blog.fenrir-inc.com/jp/2016/09/selinux.html
Linuxコマンド
http://mimumimu.net/blog/2012/01/31/selinux-%E3%81%A7-restorecon-%E3%81%97%E3%81%A6%E3%81%82%E3%81%86%E3%81%82%E3%81%86%E3%80%82/
http://www.torutk.com/projects/swe/wiki/SELinux#%E8%A8%AD%E5%AE%9A%E7%B3%BB%E3%81%AE%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89
https://blog.fenrir-inc.com/jp/2016/09/selinux.html

関連記事

Linuxパーミッション / アクセス権限 ~
https://dk521123.hatenablog.com/entry/2022/07/01/000000
Snowflake 〜 アクセス制御種類 〜
https://dk521123.hatenablog.com/entry/2025/05/13/162636