本ページでは、firewalldのサービス設定について説明します。
サービスの概要
サービスとは、複数の通信条件の組み合わせを別名で管理する機能です。定義されているサービスをゾーンに割り当てることで、サービス単位の通信制御が可能となります。
firewalldには、デフォルトで主要なプロトコルのサービスが定義されています。
定義済みサービスの確認
以下のコマンドで、定義済みのサービス一覧が表示されます。
# firewall-cmd --get-services
RH-Satellite-6 amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client ...(略)
以下のコマンドで、個別サービスの詳細情報を確認できます。
以下の例では、http
の詳細を表示しています。
# firewall-cmd --info-service=http
http
ports: 80/tcp
protocols:
source-ports:
modules:
destination:
サービスの追加
サービスを追加するには、以下のコマンドを実行します。
以下の例では、myapp
というサービスに、ポートやIPアドレスによる許可条件を指定しています。各条件の指定は任意で、指定しない項目は許可状態となります。
なお、サービスの設定では宛先IPアドレスの指定ができるものの、送信元IPアドレスの指定ができません。別途説明するリッチルールで許可する送信元/宛先IPアドレスを一括で指定した方が管理しやすいので、サービスの設定では宛先IPアドレスを個別に指定しないことをお勧めします。
# サービスを追加
# firewall-cmd --permanent --new-service=myapp
success
# サービス概要文の指定
# firewall-cmd --permanent --service=myapp --set-short="(サービスの概要)"
success
# 通信を許可する宛先ポート番号を指定
# firewall-cmd --permanent --service=myapp --add-port=9999/tcp
success
# 通信を許可する送信元ポート番号を指定
# firewall-cmd --permanent --service=myapp --add-source-port=32768-61000/tcp
success
# 通信を許可する宛先IPアドレスを指定
# firewall-cmd --permanent --service=myapp --set-destination=ipv4:192.168.0.1/24
success
# 設定をリロードして反映
# firewall-cmd --reload
success
サービスの削除
定義済みのサービスを削除する場合は、以下のコマンドを実行します。
# サービスを削除
# firewall-cmd --permanent --delete-service=myapp
success
# 設定をリロードして反映
# firewall-cmd --reload
success
サービスのゾーン割り当て
定義済みのサービスをゾーンに割り当てるには、以下のコマンドを実行します。
以下の例では、myapp
サービスをpublic
ゾーンに割り当てています。
なお、デフォルトではpublic
がデフォルトゾーンとなっているため、同ゾーンへの設定に限り--zone=public
は省略可能です。
# サービスの割り当て
# firewall-cmd --permanent --zone=public --add-service=myapp
success
# 設定をリロードして反映
# firewall-cmd --reload
success
以下のコマンドを実行することで、myapp
がpublic
ゾーン内の許可サービスに追加されたことを確認できます。
# firewall-cmd --zone=public --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: enp0s3
sources:
services: dhcpv6-client myapp ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
サービスのゾーン割り当て解除
ゾーンからサービスの割り当てを解除する場合は、以下のコマンドを実行します。
以下の例では、myapp
サービスをpublic
ゾーンから割り当て解除しています。
# サービスの割り当て解除
# firewall-cmd --permanent --zone=public --remove-service=myapp
success
# 設定をリロードして反映
# firewall-cmd --reload
success
以下のコマンドを実行することで、myapp
がpublic
ゾーン内の許可サービスから削除されたことを確認できます。
# firewall-cmd --zone=public --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: enp0s3
sources:
services: dhcpv6-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules: