Red Hat Training
A Red Hat training course is available for RHEL 8
9.3. firewalld でネットワークトラフィックの制御
firewalld
パッケージは、事前定義された多数のサービスファイルをインストールし、それらをさらに追加したり、カスタマイズしたりできます。さらに、これらのサービス定義を使用して、サービスが使用するプロトコルとポート番号を知らなくても、サービスのポートを開いたり閉じたりできます。
9.3.1. 緊急時に CLI を使用してすべてのトラフィックの無効化
システムへの攻撃などの緊急な状態にあるとき、すべてのネットワークトラフィックを無効にし、攻撃を遮断できます。
手順
ネットワークトラフィックを直ちに無効にするには、パニックモードをオンにします。
# firewall-cmd --panic-on
重要パニックモードを有効にすると、ネットワークトラフィックがすべて停止します。したがって、そのマシンへの物理アクセスがある場合、またはシリアルコンソールを使用してログインする場合に限り使用してください。
パニックモードをオフにし、ファイアウォールを永続設定に戻します。パニックモードを無効にするには、次のコマンドを実行します。
# firewall-cmd --panic-off
検証
パニックモードを有効または無効にするには、次のコマンドを実行します。
# firewall-cmd --query-panic
9.3.2. CLI を使用して事前定義されたサービスでトラフィックの制御
トラフィックを制御する最も簡単な方法は、事前定義したサービスを firewalld
に追加する方法です。これにより、必要なすべてのポートが開き、service definition file に従ってその他の設定が変更されます。
手順
サービスが許可されていないことを確認します。
# firewall-cmd --list-services ssh dhcpv6-client
事前定義したサービスのリストを表示します。
# 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 ...
サービスを、許可されたサービスに追加します。
# firewall-cmd --add-service=<service_name>
新しい設定を永続化します。
# firewall-cmd --runtime-to-permanent
9.3.3. GUI を使用して事前定義サービスでトラフィックを制御
グラフィカルユーザーインターフェイスを使用して、事前定義サービスでネットワークトラフィックを制御できます。
前提条件
-
firewall-config
パッケージがインストールされている
手順
事前定義したサービスまたはカスタマイズしたサービスを有効または無効にするには、以下を行います。
- firewall-config ツールを起動して、サービスを設定するネットワークゾーンを選択します。
-
Zones
タブを選択してから、下のServices
タブを選択します。 - 信頼するサービスのタイプごとにチェックボックスをオンにするか、チェックボックスをオフにして、選択したゾーンのサービスをブロックします。
サービスを編集するには、以下を行います。
- firewall-config ツールを起動します。
-
Configuration
メニューからPermanent
を選択します。Services ウィンドウの下部に、その他のアイコンおよびメニューボタンが表示されます。 - 設定するサービスを選択します。
Ports
、Protocols
、Source Port
のタブでは、選択したサービスのポート、プロトコル、およびソースポートの追加、変更、ならびに削除が可能です。モジュールタブは、Netfilter ヘルパーモジュールの設定を行います。Destination
タブは、特定の送信先アドレスとインターネットプロトコル (IPv4
または IPv6
) へのトラフィックが制限できます。
Runtime
モードでは、サービス設定を変更できません。
9.3.4. 新しいサービスの追加
サービスは、グラフィカルな firewall-config ツールと、firewall-cmd
および firewall-offline-cmd
を使用して追加または削除できます。または、/etc/firewalld/services/
にある XML ファイルを編集できます。ユーザーがサービスを追加または変更しないと、対応する XML ファイルが /etc/firewalld/services/
に作成されません。/usr/lib/firewalld/services/
のファイルは、サービスを追加または変更する際にテンプレートとして使用できます。
サービス名は英数字にする必要があります。_
(下線) 文字および -
(ハイフン) 文字も使用できます。
手順
firewalld
がアクティブでない場合に、ターミナルで新しいサービスを追加するには、firewall-cmd
または firewall-offline-cmd
を使用します。
新しい、空のサービスを追加するには、次のコマンドを実行します。
$ firewall-cmd --new-service=<service_name> --permanent
ローカルファイルを使用して新規サービスを追加するには、次のコマンドを使用します。
$ firewall-cmd --new-service-from-file=<service_xml_file> --permanent
--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
が求められた場合に使用されます。これに該当するのは永続環境のみです。ランタイム環境でフォールバックさせるには、再読み込みが必要です。
9.3.5. GUI を使用してポートを開く
特定のポートへのファイアウォールを通過するトラフィックを許可する場合は、GUI でポートを開くことができます。
前提条件
-
firewall-config
パッケージがインストールされている
手順
- firewall-config ツールを起動し、設定を変更するネットワークゾーンを選択します。
-
右側の
Ports
タブを選択し、Add ボタンをクリックします。Port and Protocol
ウィンドウが開きます。 - 許可するポート番号またはポートの範囲を入力します。
-
リストから
tcp
またはudp
を選択します。
9.3.6. GUI を使用してプロトコルを使用したトラフィックの制御
特定のプロトコルを使用してファイアウォールを経由したトラフィックを許可するには、GUI を使用できます。
前提条件
-
firewall-config
パッケージがインストールされている
手順
- firewall-config ツールを起動し、設定を変更するネットワークゾーンを選択します。
-
右側で
Protocols
タブを選択し、Add
ボタンをクリックします。Protocol
ウィンドウが開きます。 -
リストからプロトコルを選択するか、
Other Protocol
チェックボックスを選択し、そのフィールドにプロトコルを入力します。
9.3.7. GUI を使用してソースポートを開く
特定ポートからファイアウォールを経由したトラフィックを許可するには、GUI を使用できます。
前提条件
-
firewall-config
パッケージがインストールされている
手順
- firewall-config ツールを起動し、設定を変更するネットワークゾーンを選択します。
-
右側の
Source Port
タブを選択し、Add
ボタンをクリックします。Source Port
ウィンドウが開きます。 -
許可するポート番号またはポートの範囲を入力します。リストから
tcp
またはudp
を選択します。