RHEL 6.2では、ホスト上のhttpdを別のホスト上のTomcatのフロントエンドプロキシとして使用しています。また、非標準ポートでリッスンしてステータス情報を監視ツールに提供するようにmod_statusを構成しています。したがって、1)ネットワーク接続を確立し、2)非標準ポートでリッスンするためにhttpdが必要です。
デフォルトのターゲットポリシー(現在は寛容モード)は、httpdが定義済みのポートリスト(semanage port -l | grep http_port_t
)での待機のみを許可し、httpdが送信ネットワーク接続を確立することを許可しません。 aureport -a
は、httpdがカスタムステータスポートにバインドしようとしたとき、および他のホストのAJPポートに接続しようとしたときのAVC拒否を示します。
私は2つの解決策を見つけましたが、1つは寛容すぎ、もう1つは脆弱すぎるようです(つまり、ポリシーのアップグレード時に破損する可能性があります)。
audit2allow
を使用してローカルポリシーソースを生成し、次にcheckmodule
を使用してコンパイルし、semodule_package
を使用してポリシーパッケージを生成し、semanage
を使用して適用を開始しました。次にhttpdを再起動し、AVC拒否が生成されていないことを確認しました。 audit2allowによって生成されたローカルポリシーは、次の付与を使用しました。
httpd_t port_t:tcp_socket {name_bind name_connect}を許可します。
これにより、httpdは(http_port_tにリストされているポートだけでなく)任意のポートにバインドし、任意のポートに接続できます。このアプローチの利点は、ローカルポリシーに含まれ、次のyum update
で上書きされないことです。短所は、必要以上に幅広い許可を与えることです。 httpdは、任意のポートにバインドして接続できます。
バインドの代わりに、次のコマンドを使用して、カスタムポートをhttp_port_tリストに追加します。
semanage port -a -t http_port_t -p tcp(custom-port-number)
semanage port -l | grep http_port_t
を使用してhttp_port_tの下のポートのリストを表示できることは知っていますが、このリストがどこに保存されているかわかりません。また、新しいポリシーを持つ次のyum update
が上書きされるかどうかもわかりません。リスト。
接続する別の方法は、次のコマンドを使用して新しいポートリストを作成することです。
セマネージポート-a-t ajp_port_t -p tcp 9010
次に、次のローカルポリシーを作成します。
httpd_t ajp_port_t:tcp_socket {name_connect}を許可します。
強化されたhttp_port_tリストのように、新しいajp_port_t
リストが新しいターゲットポリシーバージョンのインストールを生き残るかどうかはわかりません。
semanage
は、ポリシーパッケージの制御下にない新しいモジュールを作成します。ポリシーパッケージがアップグレードされると、これらのモジュールは残り、ロード時に新しいポリシーに適用されます。