はじめに
Security Enhanced LinuxまたはSELinuxは、最新のLinuxディストリビューションに組み込まれている高度なアクセス制御メカニズムです。これは当初、コンピュータシステムを悪意のある侵入や改ざんから保護するために米国国家安全保障局によって開発されました。時が経つにつれて、SELinuxはパブリックドメインでリリースされ、それ以来、さまざまなディストリビューションがSELinuxをコードに組み込んでいます
多くのシステム管理者は、SELinuxがやや未知の領域であると感じています。このトピックは気が遠くなるように思えるかもしれませんし、時にはかなり混乱することもあります。ただし、適切に構成されたSELinuxシステムは、セキュリティリスクを大幅に減らすことができ、それについて少し知っていると、アクセス関連のエラーメッセージのトラブルシューティングに役立ちます。このチュートリアルでは、SELinuxの背後にある概念(パッケージ、コマンド、構成ファイル)について学習します
SELinuxパッケージのインストール
SELinuxでは多くのパッケージが使用されています。一部はデフォルトでインストールされます。 RedHatベースのディストリビューションのリストは次のとおりです。
- policycoreutils (SELinuxを管理するためのユーティリティを提供します)
- policycoreutils-python (SELinuxを管理するためのユーティリティを提供します)
- selinux-policy (SELinuxリファレンスポリシーを提供します)
- selinux-policy-targeted (SELinuxターゲットポリシーを提供します)
- libselinux-utils (SELinuxを管理するためのいくつかのツールを提供します)
- setroubleshoot-server (監査ログメッセージを解読するためのツールを提供します)
- setools (監査ログの監視、クエリポリシー、およびファイルコンテキスト管理のためのツールを提供します)
- setools-console (監査ログの監視、クエリポリシー、およびファイルコンテキスト管理のためのツールを提供します)
- mcstrans (さまざまなレベルをわかりやすい形式に変換するためのツール)
これらのいくつかはすでにインストールされています。 CentOS 7システムにインストールされているSELinuxパッケージを確認するには、次のようないくつかのコマンドを実行します(grep
の後に異なる検索語を使用します)。 )rootユーザーとして:
rpm -qa | grep selinux
出力は次のようになります。
libselinux-utils-2.2.2-6.el7.x86_64
libselinux-2.2.2-6.el7.x86_64
selinux-policy-targeted-3.12.1-153.el7.noarch
selinux-policy-3.12.1-153.el7.noarch
libselinux-python-2.2.2-6.el7.x86_64
以下のコマンドを使用して、すべてのパッケージをインストールできます(yumは、既に持っているパッケージを更新するだけです)。または、システムに不足しているパッケージだけをインストールします。
yum install policycoreutils policycoreutils-python selinux-policy selinux-policy-targeted libselinux-utils setroubleshoot-server setools setools-console mcstrans
これで、すべてのSELinuxパッケージがロードされたシステムができあがりました。
SELinuxモード
SELinuxで遊んでみる時が来たので、SELinuxモードから始めましょう。 SELinuxはいつでも、次の3つのモードのいずれかになります。
- 実施
- 許容
- 無効
強制モードでは、SELinuxは強制します Linuxシステムでのポリシーを確認し、ユーザーとプロセスによる不正アクセスの試みが拒否されていることを確認します。アクセス拒否は、関連するログファイルにも書き込まれます。 SELinuxポリシーと監査ログについては後で説明します。
パーミッシブモードは、セミイネーブル状態のようなものです。 SELinuxはポリシーを許容モードで適用しないため、アクセスが拒否されることはありません。ただし、ポリシー違反は引き続き監査ログに記録されます。実施する前にSELinuxをテストするのに最適な方法です。
無効化されたモードは一目瞭然です。システムは強化されたセキュリティで実行されません。
SELinuxのモードとステータスの確認
getenforce
を実行できます 現在のSELinuxモードを確認するコマンド。
getenforce
SELinuxは現在無効になっているはずなので、出力は次のようになります:
Disabled
sestatus
を実行することもできます コマンド:
sestatus
SELinuxが無効になっている場合、出力には次のように表示されます。
SELinux status: disabled
SELinux構成ファイル
SELinuxの主な設定ファイルは/etc/ selinux/configです。次のコマンドを実行して、その内容を表示できます。
cat /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=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
このファイルには2つのディレクティブがあります。 SELINUXディレクティブはSELinuxモードを指示し、前に説明したように3つの可能な値を持つことができます。
SELinuxの有効化と無効化
SELinuxの有効化はかなり簡単です。ただし、無効にするのとは異なり、2段階のプロセスで実行する必要があります。 SELinuxは現在無効になっており、前のセクションのすべてのSELinuxパッケージをインストールしたと想定しています。
最初のステップとして、/etc/selinux/config
を編集する必要があります SELINUXディレクティブをパーミッシブモードに変更するファイル。
vi /etc/sysconfig/selinux
...
SELINUX=permissive
...
ステータスを許容に設定する SELinuxを適用する前に、システム内のすべてのファイルにコンテキストのラベルを付ける必要があるため、最初に必要です。すべてのファイルに適切なラベルが付けられていない場合、制限されたドメインで実行されているプロセスは、正しいコンテキストでファイルにアクセスできないために失敗する可能性があります。これにより、起動プロセスが失敗したり、エラーで開始したりする可能性があります。 コンテキストを紹介します およびドメイン チュートリアルの後半。
次に、システムを再起動します:
reboot
再起動プロセスでは、SELinuxコンテキストでラベル付けされたサーバー内のすべてのファイルが表示されます。
2番目のフェーズでは、設定ファイルを編集して、SELINUXディレクティブをpermissiveから変更する必要があります。 強制 /etc/sysconfig/selinux
にあります ファイル:
...
SELINUX=enforcing
...
次に、サーバーを再起動します。
reboot
サーバーがオンラインに戻ったら、sestatus
を実行できます SELinuxステータスを確認するコマンド。サーバーに関する詳細が表示されます:
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: permissive
Mode from config file: error (Success)
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 28