firewalldの基本的な操作
サービスの起動、停止
起動
# systemctl start firewalld
停止
# systemctl stop firewalld
起動ステータスの確認
# systemctl status firewalld
自動起動の無効化
# systemctl disable firewalld
自動起動の有効化
# systemctl enable firewalld
Firewalldの設定内容確認
# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: enp0s3 sources: services: ssh dhcpv6-client ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: #
サービスの追加
再起動をしても設定が消えないように--permanentを入れます
# firewall-cmd --add-service=https --zone=public --permanent success # firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: enp0s3 sources: services: ssh dhcpv6-client ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: #
設定を反映するために、リロードが必要となります
# firewall-cmd --reload success # firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: enp0s3 sources: services: ssh dhcpv6-client https ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: #
サービスとして登録されているものは以下で確認できます。
# firewall-cmd --get-services
サービスの削除
# firewall-cmd --remove-service=https --zone=public --permanent success # firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: enp0s3 sources: services: ssh dhcpv6-client https ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: #
設定を反映するために、リロードが必要となります
# firewall-cmd --reload success # firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: enp0s3 sources: services: ssh dhcpv6-client ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: #
サービスオプション
既存のサービスを変更したり、新しいサービスを作成したりします。主な操作を以下に記載します。
サービス操作は以下で行います
操作 | 操作コマンド |
サービス参照 | firewall-cmd --info-service=service名 |
サービス作成(新規) | firewall-cmd --permanent --new-service=service名 |
サービス作成(既存ファイルから) | firewall-cmd --permanent --new-service-from-file=filename [--name=service名] |
サービス削除 | firewall-cmd --permanent --delete-service=service名 |
参照時の表示フォーマット
service
ports: port1 ..
protocols: protocol1 ..
source-ports: source-port1 ..
modules: module1 ..
destination: ipv1:address1 ..
試しにsnmpサービスを表示させてみます
# firewall-cmd --info-service=snmp snmp ports: 161/tcp 161/udp protocols: source-ports: modules: destination: #
サービス内容として定義できるのは以下の通りです。
設定項目 | 設定コマンド |
サービス名 | firewall-cmd --permanent --service=service名 --set-description=description |
サービス略称 | firewall-cmd --permanent --service=service名 --set-short=description |
ポート | firewall-cmd --permanent --service=service名 --add-port=portid[-portid]/protocol |
プロトコル | firewall-cmd --permanent --service=service名 --add-protocol=protocol |
ソースポート | firewall-cmd --permanent --service=service名 --add-source-port=portid[-portid]/protocol |
モジュール | firewall-cmd --permanent --service=service名 --add-module=module |
宛先IP | firewall-cmd --permanent --service=service名 --set-destination=ipv:address[/mask] |
なお、サービス設定ファイル自体は/usr/lib/firewalld/services
にあります。
サービスを追加すると/etc/firewalld/servicesに追加されます。
既存のファイルからサービスを作成する場合ですが、ファイルをコピーして新しいサービスを作るイメージです。
/usr/lib/firewalld/services/http.xml →コピー→ /etc/firewalld/services/
http2.xml
本家のドキュメントは以下にあります。