Ubuntu 24.04/22.04/20.04 に SELinux をインストールする方法

Security-Enhanced Linux (SELinux) は、Linux システムでのアクセス制御セキュリティ ポリシーの管理に不可欠です。主にシステム管理者、開発者、セキュリティ専門家によって使用される SELinux は、カーネル レベルで強力なセキュリティを提供します。Ubuntu サーバー、特に 24.04、22.04、および 20.04 LTS リリースでの実装により、これらのシステムのセキュリティが強化されます。

Ubuntu のセキュリティを強化する SELinux の主な機能は次のとおりです。

  • 強制アクセス制御 (MAC): 従来の任意アクセス制御システムとは異なり、SELinux はシステム プロセスとユーザーを制限する厳格なポリシー ルールを適用し、不正アクセスのリスクを軽減します。
  • きめ細かな制御: システム プロセスと、システム プロセスとファイルやその他のリソースとのやり取りを詳細に制御します。
  • 強化されたセキュリティポリシー: カスタマイズされたセキュリティ ポリシーは、外部および内部の脅威から保護するのに役立ちます。
  • 監査とログ記録: 包括的なログ機能により、セキュリティ関連のイベントの監視と追跡が容易になり、問題の迅速な特定と解決に役立ちます。

SELinux を Ubuntu サーバー環境に統合すると、特に重要なアプリケーションや機密データを管理する場合、システムのセキュリティが大幅に強化されます。このガイドは、SELinux のインストールと基本的な使用方法に焦点を当て、これらのセキュリティ上の利点を活用するための簡単な方法を提供することを目的としています。

AppArmor サービスを無効にする

互換性を確保するには、AppArmor がアクティブかどうかを確認してください。AppArmor と SELinux を同時に実行すると競合が発生する可能性があります。次のコマンドで AppArmor のステータスを確認します。

sudo systemctl status apparmor

AppArmor が動作している場合は、SELinux への干渉を防ぐために無効にします。AppArmor を無効にするには、次のコマンドを実行します。

sudo systemctl disable apparmor --now

APTコマンドでSELinuxをインストールする

この段階では、主要な SELinux パッケージをインストールします。 policycoreutils, selinux-utils、 そして selinux-basicsこれらは、SELinux ポリシーを管理し、基本的な SELinux サポートを提供するために不可欠です。

次のコマンドでインストールを開始します。

sudo apt install policycoreutils selinux-utils selinux-basics

これを実行すると、Ubuntu システムに必要な SELinux パッケージがインストールされます。

SELinuxを有効にする

必要なパッケージをインストールしたら、SELinux をアクティブ化して、起動時に確実に読み込まれるようにします。このアクティブ化は、SELinux のセキュリティ機能を有効にするために重要です。ルート権限で次のコマンドを実行します。

sudo selinux-activate

この手順では、起動プロセス中に SELinux を初期化するようにシステムを構成します。

SELinux モードを強制する

SELinux を強制モードに設定することは非常に重要です。このモードでは、SELinux はセキュリティ ポリシーを積極的に適用し、事前定義されたルールに基づいてアクセスを拒否します。強制モードに切り替えるには、次の操作を実行します。

sudo selinux-config-enforcing

このアクションにより、SELinux 構成が強制モードで動作するように変更されます。

SELinux を有効にするためにシステムを再起動する

システムを再起動してセットアップ プロセスを完了します。これにより、すべての変更が適用され、SELinux が設定モードで動作を開始します。

sudo reboot

再起動後、システムは SELinux がインストールされ、有効化され、セキュリティ ポリシーを適用するように構成された状態で実行されます。次のセクションでは、セキュリティ ニーズに合わせて SELinux をさらにカスタマイズする方法について説明します。

SELinuxの設定

SELinux モードを理解する

SELinux は 3 つの異なるモードで機能します。

  • 強制モード: デフォルト設定。SELinux はセキュリティ ポリシーを厳密に適用し、確立されたルールに従ってアクセスを拒否します。
  • 許可モード: ここで、SELinux はポリシー違反をログに記録しますが、積極的に強制することはありません。このモードは、ポリシーのテストとトラブルシューティングに役立ちます。
  • 無効モード: このモードでは、SELinux は完全にオフになり、ポリシーは適用されません。

SELinux設定ファイルを編集する

SELinux設定を調整するには、 /etc/selinux/config ファイル。このタスクには、nano などの好みのテキスト エディターを使用します。

sudo nano /etc/selinux/config

ファイル内で、 SELINUX 希望するモードを設定するには、次の行を入力します。たとえば、強制モードを有効にするには、次のようにします。

SELINUX=enforcing

設定変更の適用

変更を有効にするには、システムを再起動します。

sudo reboot

追加の SELinux 設定オプションのカスタマイズ

SELinux にはいくつかのカスタマイズ オプションがあります。

  • SETLOCALDEFS: ローカルで定義されたファイルコンテキストの使用を決定します。デフォルトのコンテキストを使用する場合は、これを0に設定します。 /etc/selinux/config それに応じてファイルします:
SETLOCALDEFS=0
  • SELINUXタイプ: ポリシーの種類を設定します。一般的なポリシーの種類「ターゲット」は、特定のシステムサービスを保護することに重点を置いています。これを設定するには、 SELINUXTYPE 設定ファイル内の行:
SELINUXTYPE=targeted

例: Web サーバー用の SELinux の設定

Ubuntuウェブサーバー上でHTTPおよびHTTPSトラフィックを許可するようにSELinuxを構成することを検討してください。 semanage コマンドはポリシー管理に使用されます。

まず、 semanage ユーティリティ:

sudo apt install policycoreutils-python-utils

次に、ポート 80 で HTTP トラフィックを許可します。

sudo semanage port -a -t http_port_t -p tcp 80

ポート 443 上の HTTPS トラフィック:

sudo semanage port -a -t http_port_t -p tcp 443

これらのコマンドは SELinux ポリシーを更新し、Web サーバーがポート 80 (HTTP) および 443 (HTTPS) で着信接続を受信できるようにして、安全な Web サービス操作を保証します。

SELinux モードの確認

再起動後の SELinux ステータスの確認

Ubuntu システムを再起動した後、SELinux の動作状態を確認することが重要です。この検証により、システムが SELinux 構成設定を正しく適用していることが保証されます。

現在のステータスを確認するには、次のコマンドを実行します。

sestatus

このコマンドは、SELinuxの現在の動作状態、実行モード(強制、許可、無効)、使用されているポリシーなど、SELinuxに関する包括的な詳細情報を提供します。この出力を、 /etc/selinux/config SELinux が意図したとおりに機能していることを確認するためのファイル。

一般的な SELinux の問題のトラブルシューティング

デフォルトのファイルコンテキストの復元

ファイルのコンテキストが間違っていると、SELinuxによるアクセス拒否が発生し、アプリケーションの機能が損なわれることがあります。これを修正するには、 restorecon コマンド。たとえば、 /var/www/html ディレクトリで、次を実行します:

sudo restorecon -Rv /var/www/html

このコマンドは、すべてのファイルとディレクトリのデフォルトのコンテキストを再帰的に復元します。 /var/www/html変更内容を詳細に出力します。

トラブルシューティングのために一時的に許可モードに切り替える

SELinux が特定の問題を引き起こしているかどうか不明な場合は、一時的に permissive モードに切り替えて診断してください。このモードでは違反は強制されずにログに記録されます。次の方法で permissive モードを有効にします。

sudo setenforce 0

今すぐアプリケーションをテストしてください。問題がなくなった場合、その原因は SELinux ポリシーにある可能性があります。テスト後は強制モードに戻すことを忘れないでください。

sudo setenforce 1

問題診断のための SELinux ログの確認

SELinuxログはポリシー違反の特定に不可欠です。Ubuntuでは、主要なSELinuxログは /var/log/audit/audit.log最近のエントリを表示するには、以下を使用します。

sudo tail /var/log/audit/audit.log

ログで「拒否」または「AVC」を検索して、潜在的な違反を特定します。

Audit2allow を使用したカスタム ポリシー モジュールの生成

ポリシー関連の問題に直面していますか?活用 audit2allow 監査ログを分析し、カスタム ポリシー モジュールを作成します。例:

sudo grep 'denied' /var/log/audit/audit.log | audit2allow -M mycustommodule
sudo semodule -i mycustommodule.pp

最初のコマンドは、監査ログの「拒否」エントリから「mycustommodule」という名前のポリシーを生成します。 2 番目のコマンドはこのポリシーをインストールし、問題を解決できる可能性があります。

SELinux ブール値の管理

SELinux ブール値は特定の機能を制御します。すべてのブール値とその状態を一覧表示するには、次のコマンドを使用します。

sudo getsebool -a

ブール値を変更するには、例えば httpd_can_network_connect、 実行する:

sudo setsebool -P httpd_can_network_connect 1

-P フラグは再起動後も永続性を保証します。

Web アプリケーション用の SELinux の設定: HTTP および HTTPS トラフィックの許可

WordPress のような Web アプリケーションでは、SELinux で必要なネットワーク ポートを開くことが重要です。次の方法でポート 80 (HTTP) と 443 (HTTPS) を有効にします。

sudo semanage port -a -t http_port_t -p tcp 80
sudo semanage port -a -t http_port_t -p tcp 443

WordPress の SELinux 設定

シームレスな WordPress 操作のために SELinux ポリシーを調整します。

  • HTTPD スクリプトとモジュールのネットワーク接続: プラグインとテーマの更新時にこれを有効にします:
sudo setsebool -P httpd_can_network_connect 1
  • WordPress ディレクトリの読み取りおよび書き込みアクセス: HTTPD が WordPress ファイルとやり取りできることを確認します。
sudo chcon -R -t httpd_sys_rw_content_t /var/www/html/wp-content
sudo chcon -R -t httpd_sys_rw_content_t /var/www/html/wp-config.php

追加のトラブルシューティング SELinux 設定オプション

さまざまなソフトウェア要件に合わせて SELinux をカスタマイズします。

  • カスタムディレクトリへのアクセス: カスタムWebディレクトリのファイルコンテキストを変更します。例: /opt/myapp:
sudo chcon -R -t httpd_sys_content_t /opt/myapp
  • Web サーバーへの FTP アクセス: 必要に応じて FTP アクセスを有効にします。
sudo setsebool -P allow_ftpd_full_access 1
  • Web サーバー電子メール機能アプリケーションに電子メール送信機能が必要な場合:
sudo setsebool -P httpd_can_sendmail 1

これらの構成は、特定のセキュリティおよび運用上のニーズに対応する SELinux の柔軟性を示しています。

結論

Ubuntu 24.04、22.04、または 20.04 に SELinux をインストールするためのガイドはこれで終わりです。インストール プロセスを順を追って説明し、基本的なコマンドをいくつか取り上げ、重要な構成のヒントをいくつか紹介しました。システムのセキュリティを維持するには、定期的な更新と継続的な監視が不可欠であることを忘れないでください。サーバーのニーズに合わせて SELinux ポリシーを自由に試してください。ただし、変更を加える前に必ず構成をバックアップしてください。

ジョシュア・ジェームズ