Firewalldの基本操作をまとめる!

Firewalldでよく使用するコマンドを一覧化します。

Firewalldの起動状態を確認する!

Firewalldの起動状態を確認します。Firewalldが起動していないと、「firewall-cmd」コマンドは使用できません。

$ sudo firewall-cmd --state
running

Firewalldの起動と停止は、systemctlコマンドで行います。サービス名は、「firewalld.servcie」です。

$ sudo systemctl stop firewalld.service
$ sudo systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Thu 2022-04-07 12:46:27 JST; 10s ago
...
$ sudo systemctl start firewalld
$ sudo systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2022-04-07 12:46:52 JST; 3s ago
...

現在有効になっているゾーンを確認する!

デフォルトのゾーンは、「public」です。

$ firewall-cmd --get-default
public

現在有効になっている設定を確認する!

「--list-all」オプションで、現在有効になっている設定を確認できます。

$ sudo firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s3
  sources: 
  services: cockpit dhcpv6-client ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

サービス名で通信許可設定を追加/削除する!

httpを追加する例です。コマンドではわかりませんが、NetfilterのINPUTチェーンに対して設定が追加されます。

$ sudo firewall-cmd --permanent --add-service=http
success
$ sudo firewall-cmd --reload
success
$ sudo firewall-cmd --list-services
cockpit dhcpv6-client http ssh

--add-serviceで指定できる設定値は、以下で確認します。

$ firewall-cmd --get-services
...

httpを削除する例です。

$ sudo firewall-cmd --permanent --remove-service=http
success
$ sudo firewall-cmd --reload
success
$ sudo firewall-cmd --list-services
cockpit dhcpv6-client ssh

ポート番号で通信許可設定を追加/削除する!

10021ポートを追加する例です。

$ sudo firewall-cmd --permanent --add-port=10021/tcp
success
$ sudo firewall-cmd --reload
success
$ sudo firewall-cmd --list-ports
10021/tcp

10021ポートを削除する例です。

$ sudo firewall-cmd --permanent --remove-port=10021/tcp
success
$ sudo firewall-cmd --reload
success
$ sudo firewall-cmd --list-ports

ICMPの通信許可設定を無効化/有効化する!

pingコマンドへの応答はデフォルトで有効です。pingコマンドの応答を無効化します。

$ sudo firewall-cmd --list-icmp-blocks
$ sudo firewall-cmd --permanent --add-icmp-block=echo-request
$ sudo firewall-cmd --reload
success
$ sudo firewall-cmd --list-icmp-blocks
echo-request

pingコマンドへの応答の設定を有効化します。

$ sudo firewall-cmd --list-icmp-blocks
echo-request
$ sudo firewall-cmd --permanent --remove-icmp-block=echo-request
success
$ sudo firewall-cmd --reload
success
$ sudo firewall-cmd --list-icmp-blocks

Firewalld停止時に設定変更を行う!

Firewalld停止時に設定を行う場合は、firewalld-offline-cmdコマンドを使用します。Firewalldを起動すると、サーバへのアクセス自体が不可になってしまうような場合に重宝します。

$ sudo firewall-offline-cmd --list-all
public
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: cockpit dhcpv6-client ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

Firewalldで使用できるゾーンの情報を確認する!

Firewalldで使用できるゾーンは、「firewall-cmd --get-zones」コマンドで確認できます。

# firewall-cmd --get-zones
block dmz drop external home internal nm-shared public trusted work

各ゾーンの設定は、「firewall-cmd --list-all-zones」コマンドで確認できます。

# firewall-cmd --list-all-zones
block
  target: %%REJECT%%
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: 
  ports: 
  protocols: 
  forward: no
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

dmz
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: ssh
  ports: 
  protocols: 
  forward: no
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

drop
  target: DROP
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: 
  ports: 
  protocols: 
  forward: no
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

external
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: ssh
  ports: 
  protocols: 
  forward: no
  masquerade: yes
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

home
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: cockpit dhcpv6-client mdns samba-client ssh
  ports: 
  protocols: 
  forward: no
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

internal
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: cockpit dhcpv6-client mdns samba-client ssh
  ports: 
  protocols: 
  forward: no
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

nm-shared
  target: ACCEPT
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: dhcp dns ssh
  ports: 
  protocols: icmp ipv6-icmp
  forward: no
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
	rule priority="32767" reject

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s3
  sources: 
  services: dhcpv6-client ssh
  ports: 
  protocols: 
  forward: no
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

trusted
  target: ACCEPT
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: 
  ports: 
  protocols: 
  forward: no
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

work
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: cockpit dhcpv6-client ssh
  ports: 
  protocols: 
  forward: no
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

おわりに

Firewalldの設定は、firewalld-cmdコマンドで行います。Firewalld停止時は、firewall-offline-cmdコマンドを使用します。オプションは、基本的にfirewalld-cmdと同じです。

関連記事

関連書籍(Amazon)

N/A