5.6. トラフィックの制御

5.6.1. 事前定義サービス

グラフィカルの firewall-config ツール、firewall-cmd、および firewall-offline-cmd を使用してサービスを追加および削除できます。
/etc/firewalld/services/ ディレクトリーの XML ファイルを編集できます。ユーザーにサービスが追加または変更されていない場合は、対応する XML ファイルは /etc/firewalld/services/ では見つかりません。/usr/lib/firewalld/services/ ディレクトリのファイルは、サービスの追加または変更する場合にテンプレートとして使用できます。

5.6.2. 緊急時に CLI を使用してすべてのトラフィックを無効

システムへの攻撃など、緊急な状態では、すべてのネットワークトラフィックを無効にし、攻撃を遮断することができます。
ネットワークトラフィックを直ちに無効にするには、パニックモードをオンにします。
~]# firewall-cmd --panic-on
パニックモードをオフにし、その永続設定にファイアウォールを戻します。パニックモードを無効にするには、以下のコマンドを実行します。
~]# firewall-cmd --panic-off
パニックモードを有効または無効にするには、以下のコマンドを実行します。
~]# firewall-cmd --query-panic

5.6.3. CLI を使用して事前定義されたサービスでトラフィックの制御

トラフィックを制御する最も簡単な方法は、事前定義したサービスを firewalld に追加する方法です。これは、必要なすべてのポートを開き、service definition file に従ってその他の設定を変更します。
  1. サービスが許可されていないことを確認します。
    ~]# firewall-cmd --list-services
    ssh dhcpv6-client
  2. 事前定義したサービスの一覧を表示します。
    ~]# firewall-cmd --get-services
    RH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client dns docker-registry ...
    [output truncated]
  3. サービスを、許可されたサービスに追加します。
    ~]# firewall-cmd --add-service=<service-name>
  4. 新しい設定を永続化します。
    ~]# firewall-cmd --runtime-to-permanent

5.6.4. GUI を使用した事前定義サービスでトラフィックの制御

事前定義またはカスタマイズサービスを有効または無効にするには、firewall-config ツールを起動して、設定するサービスのネットワークゾーンを選択します。サービス タブを選択し、信頼するサービスの各タイプのチェックボックスを選択します。サービスをブロックするには、チェックボックスを外します。
サービスを編集するには、firewall-config ツールを起動し、 設定 メニューから 永続 モードを選びます。サービス ウィンドウの下部に新たなアイコンとメニューボタンが表示されます。設定するサービスを選びます。
ポートプロトコルソースポート のタブでは、選択したサービスのポート、プロトコルおよびソースポートの追加、変更、削除ができます。モジュールタブでは、Netfilter ヘルパーモジュールの設定を行います。送信先 タブでは、特定の送信先アドレスとインターネットプロトコル (IPv4 または IPv6) へのトラフィックが制限できます。

注記

実行時 モードのサービス設定は変更できません。

5.6.5. 新しいサービスの追加

サービスの追加もしくは削除は、グラフィカルな firewall-config ツール、firewall-cmdfirewall-offline-cmd を使用するか、/etc/firewalld/services/ にある XML ファイルを編集することで行います。ユーザーがサービスを追加または変更しないと、そのサービスに対応する XML ファイルは /etc/firewalld/services/ 作成されません。サービスの追加または変更には、/usr/lib/firewalld/services/ のファイルをテンプレートとして使用してください。
ターミナルで新規サービスを追加するには firewall-cmd を使用してください。firewalld がアクティブでない場合には firewall-offline-cmd を使用してください。新規サービスや空のサービスを追加するには以下のコマンドを実行します。
~]$ firewall-cmd --new-service=service-name
ローカルファイルを使用して新規サービスを追加するには、以下のコマンドを使用します。
~]$ firewall-cmd --new-service-from-file=service-name.xml
--name=service-name オプションを指定して、サービス名を変更できます。
サービス設定を変更すると、直ちにサービスの更新コピーが /etc/firewalld/services/ に作成できます。
root として、以下のコマンドを実行しサービスを手動でコピーします。
~]# cp /usr/lib/firewalld/services/service-name.xml /etc/firewalld/services/service-name.xml
firewalld は、/usr/lib/firewalld/services からファイルを読み込みます。ファイルが /etc/firewalld/services に追加され有効な場合には、/usr/lib/firewalld/services にある対応のファイルを上書きします。/etc/firewalld/services にある対応のファイルが削除されるか、サービスのデフォルトを読みこむように firewalld に要求が出されるとすぐに、/usr/lib/firewalld/services の上書きされたファイルが使用されます。これが該当するのは永続環境のみで、ランタイム環境でフォールバックさせるには、再読み込みが必要です。

5.6.6. CLI を使用したポートの制御

ポートは、オペレーティングシステムが、ネットワークトラフィックを受信し、区別し、システムサービスに従って転送する論理デバイスです。これは、ポートをリッスンするデーモンにより通常日示されますが、このポートに入るトラフィックを待ちます。
通常、システムサービスは、サービスに予約されている標準ポートでリッスンします。httpd デーモンでは、たとえばポート 80 をリッスンします。ただし、デフォルトでは、システム管理者は、その他の理由によりセキュリティーを強化する別のポートをリッスンするようにデーモンを設定します。

ポートを開く

オープンポートを介して、システムが、セキュリティーリスクを表す外部からアクセス可能です。一般的に、ポートを閉じたままにし、特定サービスに対して要求される場合に限り開きます。
現在のゾーンでオープンポートの一覧を表示するには、以下を行います。
  1. 許可されているポートを一覧表示します。
    ~]# firewall-cmd --list-ports
  2. 許可されているポートにポートを追加して、着信トラフィックに対して開きます。
    ~]# firewall-cmd --add-port=port-number/port-type
  3. 新しい設定を永続化します。
    ~]# firewall-cmd --runtime-to-permanent
ポートタイプは、tcpudpsctp、または dccp になります。このタイプは、ネットワーク接続の種類と一致させる必要があります。

ポートを閉じる

オープンポートが必要なくなった場合に、firewalld のポートを閉じます。ポートをそのままにするとセキュリティーリスクが示されるため、使用されなくなったら、不要なポートを閉じることが強く推奨されます。
ポートを閉じるには、許可されているポートの一覧からそれを削除します。
  1. 許可されているポートを一覧表示します。
    ~]# firewall-cmd --list-ports
    [WARNING]
    ====
    This command will only give you a list of ports that have been opened as ports. You will not be able to see any open ports that have been opened as a service. Therefore, you should consider using the --list-all option instead of --list-ports.
    ====
  2. 許可されているポートからポートを削除し、着信トラフィックに対して閉じます。
    ~]# firewall-cmd --remove-port=port-number/port-type
  3. 新しい設定を永続化します。
    ~]# firewall-cmd --runtime-to-permanent

5.6.7. GUI を使用してポートを開く

特定のポートへのトラフィックがファイアウォールを通過できるようにするには、firewall-config ツールを起動して、設定を変更するネットワークゾーンを選択します。ポート タブを選んで、右側の 追加 ボタンをクリックします。ポートとプロトコル ウィンドウが開きます。
許可するポート番号またはポートの範囲を入力します。リストから tcp または udp を選択します。

5.6.8. GUI を使用してプロトコルを使用したトラフィックの制御

特定のプロトコルへのトラフィックがファイアウォールを通過できるようにするには、firewall-config ツールを起動して、設定を変更するネットワークゾーンを選択します。プロトコル タブを選んで 追加 ボタンをクリックします。プロトコル ウィンドウが開きます。
リストからプロトコルを選択するか、Other Protocol チェックボックスを選択し、そのフィールドにプロトコルを入力します。

5.6.9. GUI を使用してソースポートを開く

特定のポートへのトラフィックがファイアウォールを通過できるようにするには、firewall-config ツールを起動して、設定を変更するネットワークゾーンを選択します。ソースポート タブを選択し、追加 ボタンをクリックします。ソースポート ウィンドウが開きます。
許可するポート番号またはポートの範囲を入力します。リストから tcp または udp を選択します。