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


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

7.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/ ディレクトリーにあります。

7.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 ウィンドウが開きます。このコマンドは通常のユーザーとして実行できますが、監理者パスワードが求められる場合もあります。

7.8.3. Web コンソールを使用したファイアウォールのサービスの有効化

デフォルトでは、サービスはデフォルトのファイアウォールゾーンに追加されます。他のネットワークインターフェイスで別のファイアウォールゾーンも使用する場合は、最初にゾーンを選択してから、そのサービスをポートとともに追加する必要があります。

RHEL 8 Web コンソールには、事前定義の firewalld サービスが表示され、それらをアクティブなファイアウォールゾーンに追加することができます。

重要

RHEL 8 Web コンソールは、firewalld サービスを設定します。

また、Web コンソールは、Web コンソールに追加されていない一般的な firewalld ルールを許可しません。

前提条件

手順

  1. RHEL 8 Web コンソールにログインします。

    詳細は、Web コンソールへのログイン を参照してください。

  2. Networking をクリックします。
  3. ルールとゾーンの編集 ボタンをクリックします。

    cockpit edit rules and zones

    ルールとゾーンの編集 ボタンが表示されない場合は、管理者権限で Web コンソールにログインしてください。

  4. Firewall セクションで、サービスを追加するゾーンを選択し、Add Services をクリックします。

    cockpit add services

  5. サービスの追加 ダイアログボックスで、ファイアウォールで有効にするサービスを見つけます。
  6. シナリオに応じてサービスを有効にします。

    cockpit add service

  7. Add Services をクリックします。

この時点で、RHEL 8 Web コンソールは、ゾーンの Services リストにサービスを表示します。

7.8.4. Web コンソールを使用したカスタムポートの設定

RHEL Web コンソールを使用して、サービスのカスタムポートを追加および設定できます。

前提条件

手順

  1. RHEL 8 Web コンソールにログインします。

    詳細は、Web コンソールへのログイン を参照してください。

  2. Networking をクリックします。
  3. ルールとゾーンの編集 ボタンをクリックします。

    cockpit edit rules and zones

    ルールとゾーンの編集 ボタンが表示されない場合は、Web コンソールに管理者権限でログインしてください。

  4. ファイアウォール セクションで、カスタムポートを設定するゾーンを選択し、サービスの追加 をクリックします。

    RHEL web console: Add services

  5. サービスの追加 ダイアログボックスで、カスタムポート ラジオボタンをクリックします。
  6. TCP フィールドおよび UDP フィールドに、例に従ってポートを追加します。以下の形式でポートを追加できます。

    • ポート番号 (22 など)
    • ポート番号の範囲 (5900-5910 など)
    • エイリアス (nfs、rsync など)
    注記

    各フィールドには、複数の値を追加できます。値はコンマで区切り、スペースは使用しないでください (例:8080,8081,http)。

  7. TCP filed、UDP filed、またはその両方にポート番号を追加した後、Name フィールドでサービス名を確認します。

    名前 フィールドには、このポートを予約しているサービスの名前が表示されます。このポートが無料で、サーバーがこのポートで通信する必要がない場合は、名前を書き換えることができます。

  8. 名前 フィールドに、定義されたポートを含むサービスの名前を追加します。
  9. Add Ports ボタンをクリックします。

    RHEL web console: Add ports

設定を確認するには、ファイアウォール ページに移動し、ゾーンの サービス リストでサービスを見つけます。

RHEL web console: Active zones

7.8.5. セキュアな 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

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

開いているポートが不要になった場合は、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

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

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

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

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

重要

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

手順

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

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

    # firewall-cmd --panic-off

検証

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

    # firewall-cmd --query-panic

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

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

前提条件

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

手順

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

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.