設定 - SELinux

提供:MochiuWiki : SUSE, EC, PCB
2023年3月30日 (木) 03:09時点におけるWiki (トーク | 投稿記録)による版 (ページの作成:「== 概要 == SELinuxは、Linuxのセキュリティ拡張機能である。 (Linux 2.6以降でサポート)<br> Linuxに強制アクセス制御の仕組みを提供する。<br> <br> 外部に侵入されないための仕組みではなく、侵入された後にアクセスできる範囲を最小限に抑えるための仕組みである。<br> <br><br> == SELinuxの機能 == ==== TE(Type Enforcement) ==== プロセスがアクセスできるリソース…」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

概要

SELinuxは、Linuxのセキュリティ拡張機能である。 (Linux 2.6以降でサポート)
Linuxに強制アクセス制御の仕組みを提供する。

外部に侵入されないための仕組みではなく、侵入された後にアクセスできる範囲を最小限に抑えるための仕組みである。


SELinuxの機能

TE(Type Enforcement)

プロセスがアクセスできるリソースを制限する機能である。

プロセスにドメインを、リソースにタイプを割り当て、その組み合わせごとにアクセス権を設定する。
このアクセス権の設定の集合を、アクセスベクタという。

子プロセス生成時には、基本的には親プロセスのドメインが引き継がれる。
子プロセスのドメインを変更することを、ドメイン遷移と呼ぶ。

RBAC(Role Based Access Controle)

ユーザがアクセスできるリソースを制限する機能である。

ユーザごとにアクセス可能なロールが決まっており、ロールごとにアクセス可能なドメインが決まっている。
TEにより、ドメインごとにアクセス可能なタイプが決まっているため、最終的には、ユーザがアクセス可能なオブジェクトを制御することができる。

RHELでは、全てのLinuxユーザがunconfined_uに対応しており、unconfined_uにはアクセス制限が掛けられない。
したがって、RHELではRBACは意味をなさない。


ポリシーの設定

SELinuxを有効にしている場合、サービスが起動しない問題は、SELinuxポリシーによる制限が原因となる場合がある。
SELinuxはセキュリティ上の観点から、プログラムが実行できるアクションを制限することがある。

ポリシーファイルを作成するため、必要なライブラリをインストールする。

sudo dnf install checkpolicy policycoreutils-python


SELinuxのログを確認する。
SELinuxがサービスをブロックしている場合、SELinuxのログにその旨のエラーメッセージが表示される。

まず、SELinuxログを確認する。

sudo tail -f /var/log/audit/audit.log


ポリシーモジュール(TEファイル : Type Enforcementファイル)を作成する。
TEファイルとは、特定のドメインに対するすべてのタイプとルールを定義するものである。

sudo grep <サービス名> /var/log/audit/audit.log | audit2allow -M <任意のポリシーファイル名>


ポリシーモジュールをコンパイルする。

checkmodule -M -m -o <任意のポリシーモジュール名>.mod <任意のポリシーモジュール名>.te


ポリシーパッケージを作成する。

semodule_package -o <任意のポリシーモジュール名>.pp -m <任意のポリシーモジュール名>.mod


作成したポリシーモジュールをSELinuxにロードして、ポリシーを有効にする。

sudo semodule -i <任意のポリシーモジュール名>



ポリシーモジュールの有効化 / 無効化 / 削除

追加したポリシーは、有効化 / 無効化 / 削除することができる。

# ポリシーの有効化
sudo semodule -e <任意のポリシー名>

# ポリシーの無効化
sudo semodule -d <任意のポリシー名>

# ポリシーの削除
sudo semodule -r <任意のポリシー名>