#author("2025-03-20T17:17:23+09:00","default:k1rou","k1rou") #author("2025-03-25T21:17:38+09:00","default:k1rou","k1rou") *SELinux [#ba3c4994] **名称 [#pe70c015] -Security-Enhanced Linux **概要 [#mad97b60] -[[セキュリティ]]機能を強化した[[Linux]] -LSM(Linux Security Module)上で提供されている -[[Red Hat]]系ディストリビューション -米国[[NSA]]が開発した -管理者の権限を分散・制限する -[[不正侵入]]対策の仕組み -[[OSS]](GPL) -ドメイン単位でプロセスとユーザーに権限を割り当てる *SELinux の仕組み [#oaaef8e5] -Flask --Flux Advanced Security Kernel --セキュリティアーキテクチャ --柔軟な[[強制アクセス制御]]が可能 -処理の流れ ++プロセスがリソースにアクセスする為にカーネルにアクセスを要求する ++カーネルは、ファイルの許可属性をチェックする ++SELinuxが、セキュリティポリシーファイルを参照してアクセスの可否を判断する ++プロセスがリソースにアクセスする *SELinux の機能 [#x466c755] **MAC [#xa6dde5e] -[[強制アクセス制御]] -セキュリティコンテキスト **TE [#e5df8168] -Type Enforcemtnt -プロセスごとにリソースへのアクセス制御を行う(最小限の権限を付与する) --プロセス(サブジェクト)← ''ドメイン''というラベルを付与する --リソース(オブジェクト)←''タイプ''というラベルを付与する --許可属性(アクセスベクタ)←''ドメイン''と''タイプ''の関係をセキュリティポリシーファイルに設定する -ラベル名の命名ルール:末尾"_t" **RBAC [#ba2e7aad] -Role Based Access Control -役割別のアクセス制御 -ログインユーザーの権限を分ける機能 -ログイン時にユーザーごとに''ロール''(役割)と呼ばれるアクセス権を与える **MCS [#i67b4d87] -Multi Category Security -カテゴリーが一致するプロセス、リソース同士のみアクセスが可能とする --プロセスやリソースに''カテゴリー''というラベルを付与する -簡単にプロセス、リソースを分離できるので、仮想化環境の分離に利用される --コンテナ起動時にコンテナごとに一意となるカテゴリーラベルを自動で付与する **MLS [#n2331e27] -Multi-Level Security -軍事向けのアクセス制御機能 **ドメイン遷移 [#r5a1bdc9] --プログラムを実行した際に、起動したプロセスのドメインとは別のドメインで動作するようにする ---起動元プロセスのドメイン ---実行ファイルのタイプ ---起動されたプロセスが動作するドメイン --※補足:デフォルトでは、起動したプロセスのドメインは親プロセスのドメインを引き継ぐ **Userland AVC [#wae8bb77] -アプリケーション独自のパーミッションルールをチェックする **監査ログ [#l4a52daa] -プロセスのアクセス許可・拒否のログを記録する /var/log/audit/audit.log *コマンド [#g52c3d33] -「[[SELinuxコマンド]]」参照 *設定 [#a9310aa4] -ロール | sysadm_r | システム管理者 | | user_r | 一般ユーザー | | system_r | システムプロセス | -ラベル | デーモン | ドメイン | タイプ |h | httpd | httpd_t | httpd_content_t、httpd_sys_content_t、httpd_sys_script_exec_t | -セキュリティコンテキスト --ユーザー名、ロール、ラベル(ドメインまたはタイプ)、レベル、カテゴリー --セミコロン区切り -タイプ --<ファイルのパス(正規表現可)> <種別> system_u:object_r:<タイプ>:s0 ---種別;regular file, directory, character device, block device, symbolic link, all files ---ファイル、ディレクトリ /var/www(/.*)? all files system_u:object_r:httpd_sys_content_t:s0 ---ポート番号 portcon <tcp/udp> <ポート番号> system_u:object_r:http_port_t:s0 --allow <ドメイン> <タイプ>:<オブジェクトクラス> {<パーミッション>}; ---オブジェクトクラス:file, dir, tcp_socket ---パーミッション;オブジェクトクラス毎に用意されている(fileの場合read, write など) -ドメイン遷移 type_transition <親プロセスのドメイン> <実行ファイルのタイプ> : process <起動時に割り当てるドメイン> *関連サイト [#b60bec2c] -SETools - OwlCyberDefense / setools (GitHub)~ https://github.com/OwlCyberDefense/setools -SELinuxの調査や確認時に使えそうなコマンドメモ~ https://qiita.com/hamamoto_abc/items/15c75016c222855cd0f6 -とほほのSELinux入門~ https://www.tohoho-web.com/ex/selinux.html *関連用語 [#md5ed108] -強制アクセス制御([[MAC(Mandatory Access Control)]]) -[[セキュリティ]] -[[AppArmor]] -[[Linux]] -[[Trusted OS]] -[[セキュアOS]] -[[LSM]](Linux Security Modules) -sVirt -AVC(Access Vector Cache)