Red Hat Training

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

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 ツールを起動し、サービスを設定するネットワークゾーンを選択します。Services タブを選択し、信頼するサービスタイプのチェックボックスを選択します。サービスをブロックする場合は、チェックボックスをオフにします。
サービスを編集するには、firewall-config ツールを起動し、Configuration というラベルの付いたメニューから Permanent を選択します。Services ウィンドウの下部に、追加のアイコンとメニューボタンが表示されます。設定するサービスを選択します。
ポート プロトコル、および ソースポートタブ は、選択したサービスのポート、プロトコル、およびソースポートの追加、変更、および削除が可能です。modules タブは、Netfilter ヘルパーモジュールを設定するためのものです。Destination タブでは、特定の宛先アドレスおよびインターネットプロトコル(IPv4 または IPv6)へのトラフィックを制限できます。
注記
Runtime モードでは、サービス設定を変更できません。

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

サービスは、グラフィカルな firewall-config ツール、firewall-cmd、および firewall-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 から一致するファイルを上書きします。/usr/lib/firewalld/services の上書きファイルは、/etc/firewalld/services 内の一致するファイルが削除されるとすぐに、またはサービスのデフォルトを読み込むように firewalld が求められた場合に使用されます。これに該当するのは永続環境のみです。ランタイム環境でフォールバックさせるには、再読み込みが必要です。

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 ツールを起動して、設定を変更するネットワークゾーンを選択します。右側の Ports タブを選択し、Add ボタンをクリックします。Port and Protocol ウィンドウが開きます。
許可するポート番号またはポートの範囲を入力します。一覧から tcp または udp を選択します。

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

特定のプロトコルを使用してファイアウォールを通過するトラフィックを許可するには、firewall-config ツールを起動し、設定を変更するネットワークゾーンを選択します。右側の Protocols タブを選択し、Add ボタンをクリックします。Protocol ウィンドウが開きます。
一覧からプロトコルを選択するか、Other Protocol チェックボックスを選択し、フィールドにプロトコルを入力します。

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

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