Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

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 オプションを使用します。たとえば、public ゾーンで SSH サービスを許可するには、次のコマンドを実行します。
~]# 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 --permanent --new-zone=zone-name
  2. 新しいゾーンをリロードします。
    ~]# firewall-cmd --reload
  3. 作成したゾーンが永続設定に追加されたかどうかを確認します。
    ~]# firewall-cmd --get-zones
  4. 新しい設定を永続化します。
    ~]# 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>
そのゾーンの設定を変更するには、セクションを追加または削除して、ポート、転送ポート、サービスなどを追加します。詳細は、firewalld.zone の man ページを参照してください。

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

すべてのゾーンに対して、特に指定されていない着信トラフィックを処理するデフォルト動作を設定できます。そのような動作は、ゾーンのターゲットを設定することで定義されます。デフォルト の、ACCEPTREJECT、および 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>