Linuxコマンド辞典 firewall-cmdコマンド(ネットワーク)

firewalldを利用してパケットフィルタリングを管理する「firewall-cmd」コマンドの概要と使い方を記載しています。

RHEL Fedora CentOS Vine Deblan Ubuntu Plamo

参考サイト:Man page of INSTALL

概要・使用方法

書式

$ firewall-cmd [オプション] [--zone=ゾーン名]

firewalldのフロントエンドとしてパケットフィルタリングを設定します。firewalldは柔軟にファイアウォールを管理するサービスです。バックエンドではiptablesを利用しています。ルール設定には「permanent設定」と「runtime設定」があります。

permanent設定は永続的に利用できるルールで、システム起動時/firewalldを再起動(restart)/再読み込み(reload)した際に有効になります。runtimeせていは一時的な設定で、設定後はすぐに有効になりますが、再起動や再読み込みされると無効になるルールです。

firewalldはNIC/ゾーン/サービスから構成されます。HTTP(80/TCP)やSSH(22/TCP)などをサービスとして管理します。これらのサービスをゾーンというサービスの集合で構成します。このゾーンをNICに割り当てて全体のパケットフィルタリングを構築します。iptablesよりも容易にフィルタリングを構築できます。ゾーンやサービスあh、/usr/lib/firewalld/{services,zones}に用意されている構成で十分使えますが、独自ルールを用意する場合は/etc/firewalld/{services,zones}以下に用意します。また、独自サービスやカスタイマイズする場合は、ダイレクトオプションを使ってiptablesを書くようにルールを設定できます。

オプション

–statefirewalldが起動しているか、停止しているかの状態を出力する
–reloadpermanent設定を有効にする。runtimeのままの設定は消える
–complete-reloadカーネルモジュールを再読込して完全に再起動する
–permanentpermanent設定を行う。このオプションで指定した設定はすぐに有効にならず、firewalldをリロード/再起動するか、システムを再起動した際に有効になる。
このオプションをつけない場合は設定はすぐに有効になるが、再起動すると設定は消える。

サービス(SSHやHTTPなどの個別サービス)

–get-services定義されているサービス名を表示する
–get-icmptypes定義されているICMPタイプ名を表示する
–add-service=サービス名指定したサービスを有効にする(許可する)
–remove-service=サービス名指定したサービスを無効にする(拒否する)

ゾーン(サービスの集合)

–list-allゾーン名(指定がなければデフォルト)で有効になっている項目をすべてリストする
–get-zones定義されているゾーン名を表示する
–list-all-zonesすべてのゾーンを設定を含めて一覧表示する
–get-default-zone設定されているデフォルトゾーン名を表示する
–set-default-zone=ゾーン名指定したゾーン名をデフォルトゾーンに設定する

NIC(ゾーンを割り当てるインターフェース)

–list-interfaces定義されているNICを表示する
–add-interfaces=NIC指定したNICをゾーンに追加する
–remove-interface=NIC指定したNICのゾーンを削除する
–change-interface=NIC指定したNICを–zoneオプションと合わせて指定したゾーンに変更する

ダイレクト(iptables)ルールを直接指定する

–direct–add-chain {ipv4|ipv6|eb} テーブル チェインテーブルにチェインを追加する
–direct–remove-chain {ipv4|ipv6|eb} テーブル チェインテーブルからチェインを削除する
–direct–add-rule {ipv4|ipv6|eb} テーブル チェイン 優先度 引数引数のiptablesルールを設定する
–direct–remove-rule {ipv4|ipv6|eb} テーブル チェイン 引数引数のiptablesルールを削除する

firewalldの状態を確認する

$ firewall-cmd --state

実行結果

[root@centos ~]# firewall-cmd --state
not running
[root@centos ~]# 

ゾーンに属しているインターフェースを表示する

$ firewall-cmd --get-active-zones

実行結果

 firewall-cmd --get-active-zonesコマンド結果

デフォルトのpublicゾーンのサービスを表示する

$ firewall-cmd --list-services

実行結果

firewall-cmd --list-servicesコマンド結果

デフォルトのpublicゾーンで特定のサービスをただちに有効にする

$ firewall-cmd --add-service=サービス名

実行結果

firewall-cmd --add-service=サービス名コマンド結果

デフォルトのpublicゾーンで特定のサービスを永続的に有効にする

$ firewall-cmd --permanent --add-service=サービス名

実行結果

firewall-cmd --permanent --add-service=サービス名コマンド結果

デフォルトのpublicゾーンで特定のサービスをただちに無効にする

$ firewall-cmd --remove-service=サービス名

実行結果

firewall-cmd --remove-service=サービス名コマンド結果

設定を再読込する

$ firewall-cmd --reload

実行結果

firewall-cmd --reloadコマンド結果

NIC設定されているゾーンを表示する

$ firewall-cmd --zone=ゾーン名 --list-interfaces

実行結果

firewall-cmd --zone=ゾーン名 --list-interfacesコマンド結果

ゾーンにNICを追加する

$ firewall-cmd --zone=ゾーン名 --add-interface=NIC

NIC設定されているゾーンを変更する

$ firewall-cmd --zone=ゾーン名 --change-interfaces

実行結果

firewall-cmd --zone=ゾーン名 --change-interfacesコマンド結果

特定のNICをすべてのゾーンから除外する

$ firewall-cmd --remove-interface=NIC

実行結果

firewall-cmd --remove-interface=NICコマンド結果