web-dev-qa-db-ja.com

SELinuxブール値「httpd_can_network_relay」と「httpd_can_network_connect」の違い

CentOS 7.3サーバーでSELinuxを有効にする処理を行っています。許可モードに設定して、拒否の監査ログを監視しています。サーバーで必要なすべてを許可し、それ以上は許可しない最小限のルールセットを実装したいと考えています。

だから今朝、昨夜WordPressのFTP更新機能を使ったとき、httpdがネットワークへの接続をブロックされていたことに気づきました。 audit2whyはどちらかを設定することをお勧めしますhttpd_can_network_relayまたはhttpd_can_network_connect

これら2つの違いを正しく理解していることを確認したいだけです。 httpd_can_network_connectを使用すると、httpdが希望する発信ネットワーク接続を確立できます。一方、httpd_can_network_relayはFTPポートと一時ポートのみを許可しますか?

audit2whyさんのコメント:

# setsebool -P httpd_can_network_connect 1
Description: Allow httpd to act as a relay

# setsebool -P httpd_can_network_relay 1
Description: Allow httpd to act as a FTP client connecting to the ftp port and ephemeral ports

もしそうなら、それは一時的なポートが何であるかをどのように定義するのでしょうか、それとも1024以上のものを許可するだけでしょうか?

私が見逃しているすべての詳細なリファレンスはありますか?

更新

コマンドへのコメントの順序を誤解していますが、上記は次のようになります。

Description: Allow HTTPD scripts and modules to connect to the network using TCP.
# setsebool -P httpd_can_network_connect 1

Description: Allow httpd to act as a relay
# setsebool -P httpd_can_network_relay 1
4
Nigel B. Peck

エニグマが言うように:

最初のオプション[httpd_can_network_relay]は、httpdがクライアントに代わってバックエンドhttpdにリクエストをリレーするリバースプロキシシナリオで使用されます。

はどうかと言うと httpd_can_network_connect、httpdがスクリプトやモジュールを含むネットワーク接続を確立できるようにします。

基本的に、audit2whyからの出力は奇妙な方法でフォーマットされているため、どの説明がどのブール値に一致するかを判別するのは困難でした。そのため、それに基づく奇妙な質問です。私はそれを正しい解釈で質問を更新しました。

5
Nigel B. Peck

最初のオプション[httpd_can_network_relay]は、httpdがクライアントに代わってバックエンドhttpdにリクエストをリレーするリバースプロキシシナリオで使用されます。

2番目の[httpd_can_network_connect]を使用すると、httpdモジュールおよびスクリプトが、httpdサービスに関連付けられているポートへの発信接続を確立できます。これらのポートのリストを表示するには、semanage port -l | grep -w http_port_tを実行します

シナリオを機能させるには、setsebool -P httpd_can_network_connect 1を実行してから、このコマンドを実行してhttpdが接続できるポートを追加する必要がありますsemanage port -a -t http_port_t -p tcp <PORT>

1
enigma