====== firewall-cmdコマンド ====== Version CentOS 7.2 --- //[[http://www.y2sunlight.com|y2sunlight]] 2020-06-01// [[centos:top|CentOS パッケージ管理に戻る]] firewalld は RHEL7/CentOS7 で使われているファイアウォールのサービスです(CentOS6以前では iptablesが使われていました)。そしてfirewalld を操作する為のコマンドが、firewall-cmd です。 firewall-cmd は 使用頻度からいうとそれほど多くはありませんが、OSインストール直後、ApatchやMariaDBのインストール時には必ず使うコマンドです。以下では実際によく使う firewall-cmd の利用例を記載します。 関連記事 * [[centos:package|CentOS パッケージ管理の基礎知識]] * [[centos:yum|yum --- パッケージ管理システム]] * [[centos:systemctl|systemctl --- サービスの操作]] * [[centos:journalctl|journalctl --- ログの操作]] * firewall-cmd --- ファイアウォールの操作 リンク * [[https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/security_guide/sec-using_firewalls|Red Hat Customer Portal]] --- ファイアウォールの使用 ---- ===== firewall-cmdの基礎知識 ===== ==== ゾーン ==== ファイアウォールは、ゾーン毎に設定を行います。そして、インターフェース(NIC)に対してそのゾーンを割り当てます。結果として各ゾーンは複数のインターフェースを持つことになります。事前定義されたゾーンは ''/usr/lib/firewalld/zones/'' にXMLファイルとして保存され、9つのゾーン (block, dmz, drop, external, home, internal, public, trusted, work) があります。本編は開発環境を対処としているので、ほとんどの場合、''public'' ゾーンが対象となります。 {{fa>question-circle}} ゾーン割り当てを表示する firewall-cmd --get-active-zones public interfaces: eth0 ゾーンの割り当てのないインターフェースには、デフォルトゾーンが割り当てられます。以下のコマンドは、デフォルトゾーンを表示します。 {{fa>question-circle}} デフォルトゾーンを表示する firewall-cmd --get-default-zone public 本章では、publicゾーンがデフォルトになっている場合を仮定します。 ==== サービス ==== サービスを使用すると、ポートのオープン、プロトコルの定義、パケット転送などを一括して行う事ができます。ゾーンにサービスを追加することで、そのサービス用のファイアウォール設定が反映されます。各サービスのファイアウォール設定は ''/usr/lib/firewalld/services'' にxmlファイルとして保存されています。 {{fa>question-circle}} ファイアウォール設定で使用できるサービスの一覧を表示する 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'' オプションを指定して下さい。 === サービスの許可 === {{fa>question-circle}}サービスの一覧表示 firewall-cmd --list-service #reloadしないと反映されません {{fa>question-circle}}サービスの追加 firewall-cmd --add-service=http #一時的 firewall-cmd --add-service=http --permanent #恒久的 #変更後はFWの再起動 firewall-cmd --reload {{fa>question-circle}}サービスの削除 firewall-cmd --remove-service=http #一時的 firewall-cmd --remove-service=http --permanent #恒久的 firewall-cmd --reload === ポート番号の許可 === {{fa>question-circle}}ポート番号の一覧表示 firewall-cmd --list-ports #reloadしないと反映されません {{fa>question-circle}}ポート番号の追加 firewall-cmd --add-port=8080/tcp #一時的 firewall-cmd --add-port=8080/tcp --permanent #恒久的 #変更後はFWの再起動 firewall-cmd --reload {{fa>question-circle}}ポート番号の削除 firewall-cmd --remove-port=8080/tcp #一時的 firewall-cmd --remove-port=8080/tcp --permanent #恒久的 firewall-cmd --reload === IPアドレスの許可 === {{fa>question-circle}}IPアドレスの一覧表示 firewall-cmd --list-sources #reloadしないと反映されません {{fa>question-circle}}IPアドレスの追加 firewall-cmd --add-source=192.168.1.0/24 #一時的 firewall-cmd --add-source=192.168.1.0/24 --permanent #恒久的 firewall-cmd --reload {{fa>question-circle}}IPアドレスの削除 firewall-cmd --remove-source=192.168.1.0/24 #一時的 firewall-cmd --remove-source=192.168.1.0/24 --permanent #恒久的 firewall-cmd --reload \\