目次

firewall-cmdコマンド

Version CentOS 7.2

y2sunlight 2020-06-01

CentOS パッケージ管理に戻る

firewalld は RHEL7/CentOS7 で使われているファイアウォールのサービスです(CentOS6以前では iptablesが使われていました)。そしてfirewalld を操作する為のコマンドが、firewall-cmd です。

firewall-cmd は 使用頻度からいうとそれほど多くはありませんが、OSインストール直後、ApatchやMariaDBのインストール時には必ず使うコマンドです。以下では実際によく使う firewall-cmd の利用例を記載します。

関連記事

リンク


firewall-cmdの基礎知識

ゾーン

ファイアウォールは、ゾーン毎に設定を行います。そして、インターフェース(NIC)に対してそのゾーンを割り当てます。結果として各ゾーンは複数のインターフェースを持つことになります。事前定義されたゾーンは /usr/lib/firewalld/zones/ にXMLファイルとして保存され、9つのゾーン (block, dmz, drop, external, home, internal, public, trusted, work) があります。本編は開発環境を対処としているので、ほとんどの場合、public ゾーンが対象となります。

ゾーン割り当てを表示する

firewall-cmd --get-active-zones

public
  interfaces: eth0

ゾーンの割り当てのないインターフェースには、デフォルトゾーンが割り当てられます。以下のコマンドは、デフォルトゾーンを表示します。

デフォルトゾーンを表示する

firewall-cmd --get-default-zone

public

本章では、publicゾーンがデフォルトになっている場合を仮定します。

サービス

サービスを使用すると、ポートのオープン、プロトコルの定義、パケット転送などを一括して行う事ができます。ゾーンにサービスを追加することで、そのサービス用のファイアウォール設定が反映されます。各サービスのファイアウォール設定は /usr/lib/firewalld/services にxmlファイルとして保存されています。

ファイアウォール設定で使用できるサービスの一覧を表示する

firewall-cmd --get-services

RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns freeipa-ldap freeipa-ldaps freeipa-replication ftp high-availability http https imaps ipp ipp-client ipsec iscsi-target kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind rsyncd samba samba-client smtp ssh telnet tftp tftp-client transmission-client vdsm vnc-server wbem-https


firewall-cmdのユースケース

以下の例は、publicゾーンを対象とした場合を想定しています。他のゾーンを指定する場合は、–zone=ZONE_NAME オプションを指定して下さい。

サービスの許可

サービスの一覧表示

firewall-cmd --list-service   #reloadしないと反映されません

サービスの追加

firewall-cmd --add-service=http               #一時的
firewall-cmd --add-service=http --permanent   #恒久的

#変更後はFWの再起動
firewall-cmd --reload

サービスの削除

firewall-cmd --remove-service=http               #一時的
firewall-cmd --remove-service=http --permanent   #恒久的

firewall-cmd --reload

ポート番号の許可

ポート番号の一覧表示

firewall-cmd --list-ports   #reloadしないと反映されません

ポート番号の追加

firewall-cmd --add-port=8080/tcp               #一時的
firewall-cmd --add-port=8080/tcp --permanent   #恒久的

#変更後はFWの再起動
firewall-cmd --reload

ポート番号の削除

firewall-cmd --remove-port=8080/tcp               #一時的
firewall-cmd --remove-port=8080/tcp --permanent   #恒久的

firewall-cmd --reload

IPアドレスの許可

IPアドレスの一覧表示

firewall-cmd --list-sources   #reloadしないと反映されません

IPアドレスの追加

firewall-cmd --add-source=192.168.1.0/24               #一時的
firewall-cmd --add-source=192.168.1.0/24 --permanent   #恒久的

firewall-cmd --reload

IPアドレスの削除

firewall-cmd --remove-source=192.168.1.0/24               #一時的
firewall-cmd --remove-source=192.168.1.0/24 --permanent   #恒久的

firewall-cmd --reload