5.7. ゾーンの使用

ゾーンは、着信トラフィックをより透過的な管理をする概念を表しています。ゾーンはネットワークインターフェースに接続されているか、ソースアドレスの範囲に割り当てられます。各ゾーンは個別にファイアウォールルールを管理しますが、これにより、複雑なファイアウォール設定を定義してトラフィックに割り当てることができます。

5.7.1. ゾーンの一覧

システムで利用可能なゾーンを確認するには、以下のコマンドを実行します。
~]# firewall-cmd --get-zones
firewall-cmd --get-zones コマンドは、システムで利用可能な全てのゾーンを表示し、特定ゾーンの詳細は表示しません。
すべてのゾーンで詳細情報を表示するには、以下のコマンドを実行します。
~]# firewall-cmd --list-all-zones
特定ゾーンに関する詳細情報を表示する場合は、以下のコマンドを実行します。
~]# firewall-cmd --zone=zone-name --list-all

5.7.2. 特定ゾーンに対する firewalld 設定

「CLI を使用して事前定義されたサービスでトラフィックの制御」 および 「CLI を使用したポートの制御」 は、現在作業中のゾーン範囲にサービスを追加またはポートを修正する方法を説明します。別のゾーンにルールを設定する必要がでてくる場合もあります。
別のゾーンを使用するには、--zone=zone-name オプションを使用します。たとえば、ゾーン publicSSH サービスを許可します。
~]# firewall-cmd --add-service=ssh --zone=public

5.7.3. デフォルトゾーンの変更

システム管理者は、設定ファイルのネットワークインターフェースにゾーンを割り当てます。特定ゾーンに割り当てられない場合は、デフォルトゾーンに割り当てられます。firewalld サービスを再起動するたびに、firewalld は、デフォルトゾーンの設定をロードし、それをアクティブにします。
デフォルトゾーンを設定するには、以下を行います。
  1. 現在のデフォルトゾーンを表示します。
    ~]# firewall-cmd --get-default-zone
  2. 新しいデフォルトゾーンを設定します。
    ~]# firewall-cmd --set-default-zone zone-name

注記

この手順では、--permanent オプションを使用しなくても、設定は永続化します。

5.7.4. ゾーンへのネットワークインターフェースの割り当て

複数のゾーンに複数のルールセットを定義して、使用されているインターフェースのゾーンを変更することで、迅速に設定を変更できます。複数のインターフェースを使用して、その各インターフェースに、トラフィックを通過する特定のゾーンを設定できます。
特定インターフェースにゾーンを割り当てるには、以下を行います。
  1. アクティブゾーン、およびそのゾーンに割り当てられているインターフェースを一覧表示します。
    ~]# firewall-cmd --get-active-zones
  2. 別のゾーンにインターフェースを割り当てます。
    ~]# firewall-cmd --zone=zone-name --change-interface=<interface-name>

注記

再起動後も設定を持続させる --permanent オプションを使用する必要はありません。新しいデフォルトゾーンを設定すると、設定は永続化されます。

5.7.5. ネットワーク接続にデフォルトゾーンの割り当て

接続が NetworkManager により管理されると、使用するゾーンを認識する必要があります。すべてのネットワーク接続に、ゾーンを指定できます。これにより、ポータブルデバイスを使用したコンピューターの場所に従って、さまざまなファイアウォール設定の柔軟性を提供します。したがって、ゾーンおよび設定には、会社または自宅など、さまざまな場所を指定できます。
インターネット接続にデフォルトゾーンを設定するには、NetworkManager GUI を使用するか /etc/sysconfig/network-scripts/ifcfg-connection-name ファイルを編集して、この接続にゾーンを割り当てる行を追加します。
ZONE=zone-name

5.7.6. 新しいゾーンの作成

カスタムゾーンを使用するには、新しいゾーンを作成し、事前定義したゾーンなどを使用します。新しいゾーンには --permanent オプションが必要となり、このコマンドがなければコマンドが動作しません。
新しいゾーンを作成するには、以下を行います。
  1. 新しいゾーンを作成します。
    ~]# firewall-cmd --new-zone=zone-name
  2. 作成したゾーンが永続化設定に追加されたかどうかを確認します。
    ~]# firewall-cmd --get-zones
  3. 新しい設定を永続化します。
    ~]# firewall-cmd --runtime-to-permanent

5.7.7. 設定ファイルを使用して新しいゾーンの作成

また、ゾーンの設定ファイル を使用してゾーンを作成できます。このアプローチは、新しいゾーンを作成する必要がある場合は便利ですが、別のゾーンの設定を変更して利用することもできます。
firewalld ゾーン設定ファイルは、ゾーンに対する情報を含みます。これは、XML ファイルフォーマットで、ゾーンの説明、サービス、ポート、プロトコル、icmp-block、マスカレード、転送ポート、およびリッチ言語ルールです。ファイル名は zone-name.xml となります。zone-name の長さは 17 文字に制限されます。ゾーンの設定ファイルは /usr/lib/firewalld/zones/ ディレクトリーおよび /etc/firewalld/zones/ ディレクトリーです。
以下の例は、TCP プロトコルおよび UDP プロトコルに、1 つのサービス (SSH) および 1 つポート範囲を許可する設定を示します。
<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>My zone</short>
  <description>Here you can describe the characteristic features of the zone.</description>
  <service name="ssh"/>
  <port port="1025-65535" protocol="tcp"/>
  <port port="1025-65535" protocol="udp"/>
</zone>
そのゾーンで設定を変更すると、ポートの追加、ポートおよびサービスを転送するなどを行うセクションを追加または削除します。詳細は、man ページの firewalld.zone を参照してください。

5.7.8. 着信トラフィックにデフォルトの動作を設定するゾーンターゲットの使用

すべてのゾーンに対して、追加指定をしない着信トラフィックを処理するデフォルト動作を設定できます。そのような動作は、ゾーンのターゲットを設定することで定義されます。オプションは、defaultACCEPTREJECT、および DROP の 3 つになります。ターゲットを ACCEPT に設定すると、特定ルールで無効にした着信パケット以外のパケットをすべて許可します。REJECT または DROP にターゲットを設定すると、特定のルールで許可したパケット以外の着信パケットをすべて無効にします。パケットが拒否されると、拒否についてソースマシンに通知しますが、パケットが破棄される時に送られる情報はありません。
ゾーンにターゲットを設定するには、以下を行います。
  1. 特定ゾーンに対する情報を一覧表示して、デフォルトゾーンを確認します。
    ~]$ firewall-cmd --zone=zone-name --list-all
  2. ゾーンに新しいターゲットを設定します。
    ~]# firewall-cmd --zone=zone-name --set-target=<default|ACCEPT|REJECT|DROP>