はじめに
Security-Enhanced Linux (SELinux) は、Red Hat Enterprise Linux における重要なセキュリティ機構であり、強制アクセス制御(MAC)ポリシーを適用します。この重要な側面の一つが「ラベル付け」であり、これはネットワークポートにも適用されます。ポートに特定の SELinux ラベルを割り当てることで、どのサービスがそのポートにバインド(接続)できるかを制御できます。
このチャレンジでは、SELinux ポートラベルの管理を実践します。既存のポート定義の確認方法、非標準ポートでサービスを許可するための新しいラベルの追加方法、そして元のポリシーに戻すための定義の削除方法を学びます。
SELinux ポートラベルの管理
あなたはシステム管理者として、Web サーバーを非標準ポートである 8081 で動作させるように設定する必要があると仮定します。デフォルトでは、SELinux は Web サーバープロセス(例:httpd)がこのポートにバインドするのを阻止します。これは、そのポートに正しい SELinux ラベルが付与されていないためです。あなたのタスクは、semanage ユーティリティを使用して、ポート 8081 に一時的に正しいラベルを追加し、その後削除することです。
タスク
- HTTP サービスに関連付けられている既存の SELinux ポートラベルを表示する。
- TCP ポート
8081にhttp_port_tタイプを割り当てる新しいルールを追加し、Web サーバーがそのポートを使用できるようにする。 - 新しいルールを確認した後、TCP ポート
8081のカスタムルールを削除して、変更を元に戻す。
要件
- すべてのコマンドは
labexユーザーとして実行してください。管理者権限が必要な場合はsudoを使用してください。 - すべての操作は
/home/labexディレクトリ内で行ってください。 - SELinux ポートラベルの管理には
semanageコマンドを使用してください。
例
新しいポートラベルを追加する前に http_port_t を照会すると、デフォルトのポートが表示されます:
## sudo semanage port -l | grep http_port_t
http_port_t tcp 80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t tcp 5988
ポート 8081 のルールを追加した後の出力には、新しいポートが含まれているはずです:
## sudo semanage port -l | grep http_port_t
http_port_t tcp 8081, 80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t tcp 5988
まとめ
このチャレンジでは、SELinux ネットワークポートラベルを管理するための基本的な操作を学びました。semanage port コマンドを使用して既存のポリシーを表示し、semanage port -a で新しいポート定義を追加し、semanage port -d で削除する練習を行いました。ポートに適切にラベルを付けることは、Red Hat Enterprise Linux のような SELinux が有効なシステムでネットワークサービスを安全に展開するために不可欠なスキルです。



