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

 

本家のドキュメントは以下にあります。

https://firewalld.org/documentation/