【SELinux】ポリシー一覧/コンテキスト(タイプ)一覧/Boolean一覧等の状態確認や設定追加削除方法

スポンサーリンク
スポンサーリンク

SELinuxの基本設定ファイル

SELinuxの基本設定ファイルは以下です。再起動後も設定状態を維持したい場合はこのファイルを設定変更します。(一時的な変更であれば # setenforce=0 )

# vi /etc/selinux/config
# This file controls the state of SELinux on the system.
# 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 three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

SELinux=enforcing

SELinuxによるアクセス制御を行う(許可ルールが無ければアクセスを止め、かつ/var/log/audit/audit.logに記録する)

SELinux=permissive

permissive=許可されていなくてもアクセスは止めないが /var/log/audit/audit.log に記録する

SELinux=disabled

disabled=SELinuxによるアクセス制御を行わない。ファイルにコンテキスト(ラベル)も付けない。

SELINUXTYPE=targeted

多くのプロセスが定義され、SELinuxにより行動を制限される。

SELINUXTYPE=minimum

頻繁に利用される一部のプロセスのみが定義され、SELinuxにより行動を制限される。

SELINUXTYPE=mls

targetedに加え、利用ユーザによってさらにアクセス制御ルールが加わる。(難しいためあまり利用されない)

また、その他の設定も /etc/selinux配下に集まっています。

ポリシーに関する設定表示

SELinux設定用パッケージのインストール

SELinuxの設定表示・追加削除を実施するにはまず以下のパッケージをインストールします。

# yum -y install policycoreutils-python
# yum -y install setools-console

SELinux のコンテキスト定義ルール一覧表示

ファイルが新規作成されるときに設定されるコンテキストは、この定義ルールと作るディレクトリによって決まります。このディレクトリに作る場合はこのコンテキスト、といった具合ですり定義ルールは以下で一覧表示できます。

# semanage fcontext -l

ただし、ファイルに実際に割り当たっているコンテキストがこのルールに合致するとは限りません。mvで移動してきた場合は変更されませんし、一時的に変更するコマンドもあります。現在あたっているコンテキストを確認するのは ls -Z です。

定義ルールに一致しないファイルを、定義ルール通りに戻すコマンドは以下です。

# restorecon -RFv

SELinuxのポリシー(Access Vector)一覧表示

# sesearch --allow
# sesearch --neverallow
# sesearch --auditallow
# sesearch --dontaudit

allow は『許可してaudit.logに記録しない』というルール。neverallowは『拒否してaudit.logに記録する』というルール。auditallowは『許可してaudit.logに記録する』というルール。dontauditは『拒否してaudit.logに記録しない』というルール。NW機器のACLと同じで、暗黙のneverallowルールがあるがある。

スポンサーリンク

SELinuxのboolean設定一覧表示

booleanとは、ある目的に必要なポリシーを1つにまとめたものです。booleanを一覧表示するには以下のコマンドを使います。

# getsebool -a

booleanでよく使われるのは "httpd_can_connec_network_connect"です。これは、webアプリがphp等のスクリプトを使ってメール送信やLDAP連携、DB接続するときにデフォルトではSELinuxにより拒否されるので、このbooleanで許可することができます。

# setsebool -P httpd_can_connec_network_connect on

設定が反映されたかを確認します。

# getsebool httpd_can_network_connect

また、このbooleanの具体的な許可ルールを見たい場合は以下を打ちます。

# sesearch -b httpd_can_network_connect

SELinuxのClassとPermission一覧表示

# seinfo -x -c

SELinux のタイプ(type)一覧表示

# seinfo -t

SELinux の個別追加設定した内容を表示(ただしsemodule等で追加したモジュール情報は見れない)

# semanage export

ファイルコンテキスト(fcontext)定義ルール設定追加

# semanage fcontext -a -t httpd_user_content_t -f a '/home/[^/]+/contents(/.*)?'

-a = add。ルールを追加するという意味。

-t = type。タイプを指定するという意味。

-f = file type。a は all filesという意味。

ファイルパスは正規表現で指定。

上記の追加ルールの意味は、『/home配下の各ユーザディレクトリの下にcontentsというディレクトリがあった場合、そのディレクトリ本体およびその配下に作られたファイルおよびディレクトリのコンテキストのタイプを httpd_user_content_t に設定する』という意味。

設定状態は semanage export で確認可能。

# semanage export
boolean -D
login -D
interface -D
user -D
port -D
node -D
fcontext -D
module -D
fcontext -a -f a -t httpd_user_content_t '/home/[^/]+/contents(/.*)?'
[root@localhost ~]#

コンテキスト定義ルール設定削除

# semanage fcontext -d '/home/[^/]+/contents(/.*)?'

ポート設定追加

ssh で使うポートを tcp:10022 に変更したい場合、その許可ルールを設定するよりも、ssh_port_tというタイプの定義(デフォルトtcp:22) にtcp:10022を追加するほうが楽です。

# semanage port -a -t ssh_port_t -p tcp 10022

設定状態確認

# semanage export
boolean -D
login -D
interface -D
user -D
port -D
node -D
fcontext -D
module -D
port -a -t ssh_port_t -p tcp 10022
[root@localhost ~]#
スポンサーリンク
スポンサーリンク
スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
スポンサーリンク