3.4.4. ポート番号を変更する
ポリシー設定に応じて、サービスの実行が許可されるのは特定のポート番号に限られます。ポリシーを変更せず、サービスが実行されるポートを変えようとすると、サービスの起動に失敗する場合があります。root ユーザーで
semanage port -l | grep -w "http_port_t"
コマンドを実行し、SELinux で http
によるリッスンを許可しているポートを表示させます。
# semanage port -l | grep -w http_port_t http_port_t tcp 80, 443, 488, 8008, 8009, 8443
デフォルトでは、 SELinux で
http
にリッスンを許可している TCP ポートは 80、443、488、8008、8009、8443 になります。httpd
で http_port_t
用に記載されていないポートをリッスンするよう /etc/httpd/conf/httpd.conf
に設定を行なうと、httpd
の起動に失敗します。
次のように、TCP ポート 80、443、488、8008、8009、8443 以外のポートで実行するよう
httpd
に設定を行ないます。
- root ユーザーで
/etc/httpd/conf/httpd.conf
を編集し、 SELinux ではhttpd
用に設定されていないポートをListen
オプションに記載します。 以下の例では、httpd
が 10.0.0.1 IP アドレス、 TCP ポート 12345 でリッスンするよう設定しています。# Change this to Listen on specific IP addresses as shown below to # prevent Apache from glomming onto all bound IP addresses (0.0.0.0) # #Listen 12.34.56.78:80 Listen 10.0.0.1:12345
- root ユーザーで
semanage port -a -t http_port_t -p tcp 12345
を実行して、 そのポートを SELinux ポリシー設定に追加します。 - root ユーザーで
semanage port -l | grep -w http_port_t
を実行してポートが追加されたか確認します。# semanage port -l | grep -w http_port_t http_port_t tcp 12345, 80, 443, 488, 8008, 8009, 8443
ポート 12345 での
httpd
の実行が必要なくなった場合には、 root ユーザーで semanage port -d -t http_port_t -p tcp 12345
を実行してポリシー設定からそのポートを削除します。