SELinux
アクセス制御の考え方
DAC(Discretionary Access Control)
従来のLinuxのアクセス制御
リソースの所有者がアクセス権を制御できるという考え方。
MAC(Mandatory Access Control)
SELinuxでのアクセス制御
セキュリティ管理者が設定したアクセス制御ルールを、すべてのユーザー/プロセスに強制的に適用する。
セキュリティコンテキスト
ドメイン
プロセスは特定のSELinuxドメインで実行される。
実行中のプロセスに対して付与されるラベル
親プロセスのドメインを単純に継承するわけではない。ドメイン遷移。
タイプ
ファイルやソケットなどのリソースに対してに付与されるラベル
どのドメインのプロセスがどのタイプのリソースにアクセスできるかをアクセスベクタで記述する
タイプはSELinuxファイルタイプまたは SELinuxプロセスドメインを定義する。
ロール
SELinuxはすべてのLinuxユーザーをSELinuxユーザーIDにマップする。
つまりユーザーのロールはそのユーザーがアクセスできるプロセスドメインとファイルタイプを決定する。
ロールにはSELinuxドメインへの権限とファイルタイプへの権限が与えられる。
ユーザーに対して付与されるラベル
どのドメインのプロセスを生成できるかを決定する
SELinuxユーザーには指定されたロールを実行する権限が与えられる。
SELINUXTYPE
サーバの運用では安全面を重視してSELINUX=enforcing。
code:cat /etc/selinux/config
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of these three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
ポリシーファイル
SELINUXTYPE=targetedでは/etc/selinux/targeted以下のポリシーファイルが使われる。
semanageコマンド
CentOS 8を普通にインストールしただけでは入ってないっぽい。
code:dnf provides semanage
Failed to set locale, defaulting to C.UTF-8
Last metadata expiration check: 0:00:44 ago on Fri Dec 18 15:04:47 2020.
policycoreutils-python-utils-2.9-9.el8.noarch : SELinux policy core python utilities
Repo : BaseOS
Matched from:
Filename : /usr/sbin/semanage
$ dnf install policycoreutils-python-utils
参考
あるSELinuxドメインのプロセスが
SELinuxポリシーはプロセスドメインがファイルタイプおよび他のプロセスドメインに対して有するアクセス権を定義する。