■ はじめに
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