LinuCレベル3 セキュリティスペシャリスト アクセスおよび権限制御の強化 問22
アクセスおよび権限制御の強化/SELinux による強制アクセス制御RHEL 9系で、Apache(httpd)を TCP 8123番で待ち受けるように設定したところ、起動時にSELinuxに拒否されてポートにバインドできなかった。semanage port -l で確認すると、8123番はどのポートタイプにも割り当てられていない。SELinuxをenforcingのまま、再起動後も有効な形で待ち受けを許可するコマンドとして適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル3 セキュリティスペシャリストの出題範囲「アクセスおよび権限制御の強化」に対応。実際の試験問題ではありません)
- Asetsebool -P httpd_can_network_connect on
- Bsemanage fcontext -a -t http_port_t '/usr/sbin/httpd'
- Cchcon -t httpd_exec_t /usr/sbin/httpd
- Dsemanage port -a -t http_port_t -p tcp 8123
正解:D
解説
SELinuxのtargetedポリシーでは、httpd_tドメインがバインドできるポートは http_port_t 等のポートタイプで決まっています。既定で割り当てのないポートを使うには、semanage port -a -t http_port_t -p tcp 8123 でポートにタイプを割り当てます。semanage による変更はポリシーのローカル設定として永続化されるため、再起動後も有効です。なお、別のタイプに既に割り当てられているポートの場合は -a ではなく -m で変更します。
選択肢ごとの解説
- A誤り。httpd_can_network_connect は httpd が外部へ接続を張ることを許可するブール値で、待ち受けるポートの許可には関係しません。
- B誤り。semanage fcontext はファイルのコンテキストの規則を登録するコマンドで、http_port_t はポートに付けるタイプです。
- C誤り。httpd_exec_t は httpd の実行ファイルに既に付いているタイプで、書き換えてもポートへのバインドは許可されません。
- D正しい。未割り当てのポートに http_port_t を割り当てると、httpd_t がそのポートで待ち受けられるようになります。