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を書くようにルールを設定できます。
オプション
–state | firewalldが起動しているか、停止しているかの状態を出力する |
–reload | permanent設定を有効にする。runtimeのままの設定は消える |
–complete-reload | カーネルモジュールを再読込して完全に再起動する |
–permanent | permanent設定を行う。このオプションで指定した設定はすぐに有効にならず、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
実行結果
デフォルトのpublicゾーンのサービスを表示する
$ firewall-cmd --list-services
実行結果
デフォルトのpublicゾーンで特定のサービスをただちに有効にする
$ firewall-cmd --add-service=サービス名
実行結果
デフォルトのpublicゾーンで特定のサービスを永続的に有効にする
$ firewall-cmd --permanent --add-service=サービス名
実行結果
デフォルトのpublicゾーンで特定のサービスをただちに無効にする
$ firewall-cmd --remove-service=サービス名
実行結果
設定を再読込する
$ firewall-cmd --reload
実行結果
NIC設定されているゾーンを表示する
$ firewall-cmd --zone=ゾーン名 --list-interfaces
実行結果
ゾーンにNICを追加する
$ firewall-cmd --zone=ゾーン名 --add-interface=NIC
NIC設定されているゾーンを変更する
$ firewall-cmd --zone=ゾーン名 --change-interfaces
実行結果
特定のNICをすべてのゾーンから除外する
$ firewall-cmd --remove-interface=NIC
実行結果