MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
設定 - SELinuxのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
設定 - SELinux
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == SELinuxは、Linuxのセキュリティ拡張機能である。 (Linux 2.6以降でサポート)<br> Linuxに強制アクセス制御の仕組みを提供する。<br> <br> 外部に侵入されないための仕組みではなく、侵入された後にアクセスできる範囲を最小限に抑えるための仕組みである。<br> <br><br> == SELinuxの機能 == ==== TE(Type Enforcement) ==== プロセスがアクセスできるリソースを制限する機能である。<br> <br> プロセスにドメインを、リソースにタイプを割り当て、その組み合わせごとにアクセス権を設定する。<br> このアクセス権の設定の集合を、アクセスベクタという。<br> <br> 子プロセス生成時には、基本的には親プロセスのドメインが引き継がれる。<br> 子プロセスのドメインを変更することを、ドメイン遷移と呼ぶ。<br> <br> ==== RBAC(Role Based Access Controle) ==== ユーザがアクセスできるリソースを制限する機能である。<br> <br> ユーザごとにアクセス可能なロールが決まっており、ロールごとにアクセス可能なドメインが決まっている。<br> TEにより、ドメインごとにアクセス可能なタイプが決まっているため、最終的には、ユーザがアクセス可能なオブジェクトを制御することができる。<br> <br> RHELでは、全てのLinuxユーザがunconfined_uに対応しており、unconfined_uにはアクセス制限が掛けられない。<br> したがって、RHELではRBACは意味をなさない。<br> <br><br> == SELinuxの機能 == ==== セキュリティコンテキスト ==== SELinuxでは、ドメインやタイプ等のことを、セキュリティコンテキストという形で表現する。<br> <br> セキュリティコンテキストの例を、以下に示す。<br> * system_u *: ユーザ識別子 * object_r *: ロール識別子 * lib_t *: タイプ(ドメイン)識別子 * s0 *: MLS (Multi Level Security) : 情報の機密性 <br> ==== SELinuxユーザ ==== Linuxユーザとは異なり、Linuxユーザごとに対応するSELinuxユーザが設定されている。<br> <br> SELinuxユーザの例を、以下に示す。<br> * unconfined_u *: アクセス制限のないユーザ (RHELでは全てのLinuxユーザがunconfined_uになる) <br> ==== ロール ==== ロールの例を、以下に示す。<br> * object_r *: 一般的なファイルのロールのこと。 *: ロールは、ファイルにとって意味は無い。 * system_r *: プロセスのロールのこと。 *: /procディレクトリ下のプロセス関連のファイル等にも使用される。 <br> ==== ドメイン ==== ドメインは、"制限のないドメイン"と"制限のあるドメイン"に大別できる。<br> <br> プロセスに割り当てられるドメインの例を、以下に示す。<br> * 制限のないドメイン *: SELinuxによるアクセス制限を受けない。 *: つまり、システムが乗っ取られた場合、SELinuxによる防御は意味をなさない。 *: 通常のパーミッションによるアクセス制御は行われる。 ** unconfined_t **: ログインユーザが起動するプロセスのドメイン。 ** initrc_t **: initで開始されたシステムプロセスのドメイン。 ** kernel_t **: カーネルプロセスのドメイン。 *: <br> * 制限のあるドメイン *: 一般的なソフトウェアに割り当てられる。 *: これらのドメインは、SELinuxによるアクセス制御がなされる。 ** http_t **: httpd関連プロセスのドメインのことである。 <br> ==== タイプ ==== ファイルに割り当てられるタイプの例を、以下に示す。<br> <br> * file_t *: タイプが割り当てられていないことを示すタイプのこと。 *: 制限されたドメインからはアクセス不可である。 * default_t *: 割り当てるべきタイプが設定されていない場合に、デフォルトで割り当てられるタイプのこと。 *: 制限されたドメインからはアクセス不可である。 <br> == ポリシーの設定 == SELinuxを有効にしている場合、サービスが起動しない問題は、SELinuxポリシーによる制限が原因となる場合がある。<br> SELinuxはセキュリティ上の観点から、プログラムが実行できるアクションを制限することがある。<br> <br> ポリシーファイルを作成するため、必要なライブラリをインストールする。<br> sudo dnf install checkpolicy policycoreutils-python <br> SELinuxのログを確認する。<br> SELinuxがサービスをブロックしている場合、SELinuxのログにその旨のエラーメッセージが表示される。<br> <br> まず、SELinuxログを確認する。<br> sudo tail -f /var/log/audit/audit.log <br> ポリシーモジュール(TEファイル : Type Enforcementファイル)とPPファイルを作成する。<br> TEファイルとは、特定のドメインに対する全てのタイプとルールを定義するものである。<br> sudo grep <サービス名> /var/log/audit/audit.log | audit2allow -M <任意のポリシーファイル名> <br> 必要であれば、TEファイルをコンパイルして、ポリシーモジュールファイル(.mod拡張子)を生成する。<br> checkmodule -M -m -o <任意のポリシーモジュール名>.mod <任意のポリシーモジュール名>.te <br> または、TEファイルからポリシーパッケージファイル(.pp拡張子)を生成することもできる。<br> make -f /usr/share/selinux/devel/Makefile <br> もし、上記でTEファイルからポリシーモジュールファイル(.mod拡張子)を生成した場合、ポリシーパッケージ(.pp拡張子)を生成する。<br> semodule_package -o <任意のポリシーパッケージ名>.pp -m <任意のポリシーモジュール名>.mod <br> 作成したポリシーモジュールをSELinuxにロードして、ポリシーを有効にする。<br> sudo semodule -i <任意のポリシーパッケージ名>.pp <br><br> == ポリシーモジュールの有効化 / 無効化 / 削除 == 追加したポリシーは、有効化 / 無効化 / 削除することができる。<br> # ポリシーの有効化 sudo semodule -e <任意のポリシー名> # ポリシーの無効化 sudo semodule -d <任意のポリシー名> # ポリシーの削除 sudo semodule -r <任意のポリシー名> <br><br> __FORCETOC__ [[カテゴリ:CentOS]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]][[カテゴリ:PinePhone]]
設定 - SELinux
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse