Red Hat Training

A Red Hat training course is available for RHEL 8

45.8. firewalld でネットワークトラフィックの制御

firewalld パッケージは、事前定義された多数のサービスファイルをインストールし、それらをさらに追加したり、カスタマイズしたりできます。さらに、これらのサービス定義を使用して、サービスが使用するプロトコルとポート番号を知らなくても、サービスのポートを開いたり閉じたりできます。

45.8.1. CLI を使用した事前定義サービスによるトラフィックの制御

トラフィックを制御する最も簡単な方法は、事前定義したサービスを firewalld に追加する方法です。これにより、必要なすべてのポートが開き、service definition file に従ってその他の設定が変更されます。

前提条件

  • firewalld サービスが実行している。

手順

  1. firewalld のサービスがまだ許可されていないことを確認します。

    # firewall-cmd --list-services
    ssh dhcpv6-client

    このコマンドは、デフォルトゾーンで有効になっているサービスをリスト表示します。

  2. firewalld のすべての事前定義サービスをリスト表示します。

    # 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 ...

    このコマンドは、デフォルトゾーンで利用可能なサービスのリストを表示します。

  3. firewalld が許可するサービスのリストにサービスを追加します。

    # firewall-cmd --add-service=<service_name>

    このコマンドは、指定したサービスをデフォルトゾーンに追加します。

  4. 新しい設定を永続化します。

    # firewall-cmd --runtime-to-permanent

    このコマンドは、これらのランタイムの変更をファイアウォールの永続的な設定に適用します。デフォルトでは、これらの変更はデフォルトゾーンの設定に適用されます。

検証

  1. すべての永続的なファイアウォールのルールをリスト表示します。

    # firewall-cmd --list-all --permanent
    public
      target: default
      icmp-block-inversion: no
      interfaces:
      sources:
      services: cockpit dhcpv6-client ssh
      ports:
      protocols:
      forward: no
      masquerade: no
      forward-ports:
      source-ports:
      icmp-blocks:
      rich rules:

    このコマンドは、デフォルトのファイアウォールゾーン (public) の永続的なファイアウォールのルールを含む完全な設定を表示します。

  2. firewalld サービスの永続的な設定の有効性を確認します。

    # firewall-cmd --check-config
    success

    永続的な設定が無効な場合、コマンドは詳細を含むエラーを返します。

    # firewall-cmd --check-config
    Error: INVALID_PROTOCOL: 'public.xml': 'tcpx' not from {'tcp'|'udp'|'sctp'|'dccp'}

    永続的な設定ファイルを手動で検査して設定を確認することもできます。メインの設定ファイルは /etc/firewalld/firewalld.conf です。ゾーン固有の設定ファイルは /etc/firewalld/zones/ ディレクトリーにあり、ポリシーは /etc/firewalld/policies/ ディレクトリーにあります。

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

グラフィカルユーザーインターフェイスを使用して、事前定義されたサービスでネットワークトラフィックを制御できます。Firewall Configuration アプリケーションは、コマンドラインユーティリティーに代わる、アクセスしやすくユーザーフレンドリーな代替手段を提供します。

前提条件

  • firewall-config パッケージがインストールされている。
  • firewalld サービスが実行している。

手順

  1. 事前定義したサービスまたはカスタマイズしたサービスを有効または無効にするには、以下を行います。

    1. firewall-config ユーティリティーを起動して、サービスを設定するネットワークゾーンを選択します。
    2. Zones タブを選択してから、下の Services タブを選択します。
    3. 信頼するサービスのタイプごとにチェックボックスをオンにするか、チェックボックスをオフにして、選択したゾーンのサービスをブロックします。
  2. サービスを編集するには、以下を行います。

    1. firewall-config ユーティリティーを起動します。
    2. Configuration メニューから Permanent を選択します。Services ウィンドウの下部に、その他のアイコンおよびメニューボタンが表示されます。
    3. 設定するサービスを選択します。

PortsProtocolsSource Port のタブでは、選択したサービスのポート、プロトコル、およびソースポートの追加、変更、ならびに削除が可能です。モジュールタブは、Netfilter ヘルパーモジュールの設定を行います。Destination タブは、特定の送信先アドレスとインターネットプロトコル (IPv4 または IPv6) へのトラフィックが制限できます。

注記

Runtime モードでは、サービス設定を変更できません。

検証

  • Super キーを押して、アクティビティーの概要に入ります。
  • Firewall Configuration ユーティリティーを選択します。

    • コマンドラインで firewall-config コマンドを入力して、グラフィカルファイアウォール設定ユーティリティーを起動することもできます。
  • ファイアウォールの設定のリストを表示します。

    ファイアウォール設定

Firewall Configuration ウィンドウが開きます。このコマンドは通常のユーザーとして実行できますが、監理者パスワードが求められる場合もあります。

45.8.3. セキュアな Web サーバーのホストを可能にする firewalld の設定

ポートは、オペレーティングシステムがネットワークトラフィックを受信して区別し、システムサービスに転送できるようにする論理サービスです。このシステムサービスは、ポートをリッスンし、ポートに入るトラフィックを待機するデーモンによって表されます。

通常、システムサービスは、サービスに予約されている標準ポートでリッスンします。httpd デーモンは、たとえば、ポート 80 をリッスンします。ただし、システム管理者は、サービス名の代わりにポート番号を直接指定できます。

firewalld サービスを使用して、データをホストするためのセキュアな Web サーバーへのアクセスを設定できます。

前提条件

  • firewalld サービスが実行している。

手順

  1. 現在アクティブなファイアウォールゾーンを確認します。

    # firewall-cmd --get-active-zones
  2. HTTPS サービスを適切なゾーンに追加します。

    # firewall-cmd --zone=<zone_name> --add-service=https --permanent
  3. ファイアウォール設定を再読み込みします。

    # firewall-cmd --reload

検証

  1. firewalld でポートが開いているかどうかを確認します。

    • ポート番号を指定してポートを開いた場合は、次のように入力します。

      # firewall-cmd --zone=<zone_name> --list-all
    • サービス定義を指定してポートを開いた場合は、次のように入力します。

      # firewall-cmd --zone=<zone_name> --list-services

45.8.4. ネットワークのセキュリティーを強化するための不使用または不要なポートの閉鎖

開いているポートが不要になった場合は、firewalld ユーティリティーを使用してポートを閉じることができます。

重要

不要なポートをすべて閉じて、潜在的な攻撃対象領域を減らし、不正アクセスや脆弱性悪用のリスクを最小限に抑えてください。

手順

  1. 許可されているポートのリストを表示します。

    # firewall-cmd --list-ports

    デフォルトでは、このコマンドはデフォルトゾーンで有効になっているポートをリスト表示します。

    注記

    このコマンドでは、ポートとして開かれているポートのみが表示されます。サービスとして開かれているポートは表示されません。その場合は、--list-ports の代わりに --list-all オプションの使用を検討してください。

  2. 許可されているポートのリストからポートを削除し、着信トラフィックに対して閉じます。

    # firewall-cmd --remove-port=port-number/port-type

    このコマンドは、ゾーンからポートを削除します。ゾーンを指定しない場合は、デフォルトゾーンからポートが削除されます。

  3. 新しい設定を永続化します。

    # firewall-cmd --runtime-to-permanent

    ゾーンを指定しない場合、このコマンドは、ランタイムの変更をデフォルトゾーンの永続的な設定に適用します。

検証

  1. アクティブなゾーンをリスト表示し、検査するゾーンを選択します。

    # firewall-cmd --get-active-zones
  2. 選択したゾーンで現在開いているポートをリスト表示し、不使用または不要なポートが閉じているかどうかを確認します。

    # firewall-cmd --zone=<zone_to_inspect> --list-ports

45.8.5. CLI を使用したトラフィックの制御

firewall-cmd コマンドを使用すると、次のことが可能です。

  • ネットワークトラフィックの無効化
  • ネットワークトラフィックの有効化

その結果、たとえばシステムの防御を強化したり、データのプライバシーを確保したり、ネットワークリソースを最適化したりすることができます。

重要

パニックモードを有効にすると、ネットワークトラフィックがすべて停止します。したがって、そのマシンへの物理アクセスがある場合、またはシリアルコンソールを使用してログインする場合に限り使用してください。

手順

  1. ネットワークトラフィックを直ちに無効にするには、パニックモードをオンにします。

    # firewall-cmd --panic-on
  2. パニックモードをオフにし、ファイアウォールを永続設定に戻します。パニックモードを無効にするには、次のコマンドを実行します。

    # firewall-cmd --panic-off

検証

  • パニックモードを有効または無効にするには、次のコマンドを実行します。

    # firewall-cmd --query-panic

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

特定のプロトコルを使用してファイアウォールを経由したトラフィックを許可するには、GUI を使用できます。

前提条件

  • firewall-config パッケージがインストールされている

手順

  1. firewall-config ツールを起動し、設定を変更するネットワークゾーンを選択します。
  2. 右側で Protocols タブを選択し、Add ボタンをクリックします。Protocol ウィンドウが開きます。
  3. リストからプロトコルを選択するか、Other Protocol チェックボックスを選択し、そのフィールドにプロトコルを入力します。