Version CentOS 7.2
— y2sunlight 2020-06-01
firewalld は RHEL7/CentOS7 で使われているファイアウォールのサービスです(CentOS6以前では iptablesが使われていました)。そしてfirewalld を操作する為のコマンドが、firewall-cmd です。
firewall-cmd は 使用頻度からいうとそれほど多くはありませんが、OSインストール直後、ApatchやMariaDBのインストール時には必ず使うコマンドです。以下では実際によく使う 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
以下の例は、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アドレスの一覧表示
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