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 になります。httpdhttp_port_t 用に記載されていないポートをリッスンするよう /etc/httpd/conf/httpd.conf に設定を行なうと、httpd の起動に失敗します。
次のように、TCP ポート 80、443、488、8008、8009、8443 以外のポートで実行するよう httpd に設定を行ないます。
  1. 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
    
  2. root ユーザーで semanage port -a -t http_port_t -p tcp 12345を実行して、 そのポートを SELinux ポリシー設定に追加します。
  3. 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 を実行してポリシー設定からそのポートを削除します。