はじめに
– パケット フィルタリング ファイアウォールは、着信ネットワーク パケットを読み取り、パケットのヘッダー情報に基づいて各データ パケットをフィルタリング (許可または拒否) します。 Linux カーネルには、Netfilter と呼ばれるパケット フィルタリング機能が組み込まれています。 .
– RHEL 7 では、Netfilter によって保存されたルールを作成、維持、および表示するために、次の 2 つのサービスを利用できます。
1.ファイアウォール
2. iptables
– RHEL 7 では、デフォルトのファイアウォール サービスは firewalld です。
– firewalld は、ファイアウォール (ネットワーク) ゾーンをサポートする動的ファイアウォール マネージャーです。
– firewalld サービスは、D-BUS インターフェイスも提供します。すでに D-BUS を使用しているサービスまたはアプリケーションは、D-BUS インターフェースを介して直接ファイアウォール ルールを追加または変更を要求できます。
iptables に対する利点
firewalld には、iptables に比べて次の利点があります。
1. iptables コマンドとは異なり、firewall-cmd コマンドはファイアウォールを再起動せず、確立された TCP 接続を中断しません。
2. firewalld は動的ゾーンをサポートします。
3. firewalld は、ファイアウォール構成に依存するサービスとのより良い統合のために D-Bus をサポートします。
設定オプション
firewalld サービスには、次の 2 種類の構成オプションがあります。
1. ランタイム :ファイアウォール設定への変更はすぐに有効になりますが、永続的ではありません。ランタイム構成モードで行った変更は、firewalld サービスを再起動すると失われます。
2. 永久 注:ファイアウォール設定への変更は、構成ファイルに書き込まれます。これらの変更は、firewalld サービスの再起動時に適用されます。
構成ファイル
firewalld の構成ファイルは、
/usr/lib/firewalld の 2 つのディレクトリにあります。 :デフォルトの構成ファイルが含まれています。これらのファイルは変更しないでください。 firewalld パッケージをアップグレードすると、このディレクトリが上書きされます。
/etc/firewalld :デフォルトの構成ファイルへの変更は、このディレクトリに保存されます。このディレクトリ内のファイルは、デフォルトの構成ファイルをオーバーロードします。
ファイアウォール ゾーン
firewalld サービスを使用すると、特定のネットワーク内のデバイスとトラフィックに設定する信頼のレベルに基づいて、ネットワークを異なるゾーンに分割できます。ゾーンごとに次の機能を定義できます:
サービス :信頼する定義済みまたはカスタム サービス。信頼できるサービスは、他のシステムやネットワークからアクセスできるポートとプロトコルの組み合わせです。
ポート :他のシステムやネットワークからアクセスできる追加のポートまたはポート範囲、および関連するプロトコル。
マスカレード :IPv4 アドレスを単一の外部アドレスに変換します。マスカレードを有効にすると、プライベート ネットワークのアドレスがパブリック アドレスにマッピングされ、その背後に隠されます。
ポート フォワーディング :特定のポートまたはポート範囲からのインバウンド ネットワーク トラフィックを、ローカル システムの代替ポート、または別の IPv4 アドレスのポートに転送します。
ICMP フィルタ :選択した Internet Control Message Protocol メッセージをブロックします。
リッチ ルール :既存の firewalld ルールを拡張して、追加の送信元アドレスと宛先アドレス、およびログ記録と監査アクションを含めます。
インターフェース :ゾーンにバインドされたネットワーク インターフェイス。インターフェースのゾーンは ZONE=option で指定します /etc/sysconfig/network-scripts/ifcfg で ファイル。オプションがない場合、インターフェイスはデフォルト ゾーンにバインドされます。
定義済みのファイアウォール ゾーン
firewalld ソフトウェア パッケージには、次のディレクトリに定義済みのネットワーク ゾーンのセットが含まれています:
# ls -lrt /usr/lib/firewalld/zones/ total 36 -rw-r----- 1 root root 342 Sep 15 2015 work.xml -rw-r----- 1 root root 162 Sep 15 2015 trusted.xml -rw-r----- 1 root root 315 Sep 15 2015 public.xml -rw-r----- 1 root root 415 Sep 15 2015 internal.xml -rw-r----- 1 root root 400 Sep 15 2015 home.xml -rw-r----- 1 root root 304 Sep 15 2015 external.xml -rw-r----- 1 root root 291 Sep 15 2015 drop.xml -rw-r----- 1 root root 293 Sep 15 2015 dmz.xml -rw-r----- 1 root root 299 Sep 15 2015 block.xml
ゾーン ファイルには、ネットワーク インターフェイスに適用できるプリセット設定が含まれています。例:
# grep –i service /usr/lib/firewalld/zones/public.xml <service name=“ssh”/> <service name=“dhcpv6-client”/>
この例では、パブリック ゾーンにバインドされたネットワーク インターフェイスは、ssh と dhcpv6-client の 2 つのサービスのみを信頼します。
各ゾーンの簡単な説明は次のとおりです:
ドロップ :着信ネットワーク パケットはドロップされ、応答はありません。発信
ネットワーク接続のみが可能です。
ブロック :着信ネットワーク接続は、IPv4 の場合は icmp-host-prohibited メッセージで拒否され、IPv6 の場合は icmp6-adm-prohibited メッセージで拒否されます。システム内から開始されたネットワーク接続のみが可能です。
ホーム :家庭用。ほとんどの場合、ネットワーク上の他のコンピューターが自分のコンピューターに害を及ぼさないことを信頼しています。選択された着信接続のみが受け入れられます。
public :公共エリアでの使用向け。ネットワーク上の他のコンピューターが自分のコンピューターに害を及ぼさないとは信じていません。選択された着信接続のみが受け入れられます。
仕事 :作業エリアでの使用向け。ほとんどの場合、ネットワーク上の他のコンピューターが自分のコンピューターに害を及ぼさないことを信頼しています。選択された着信接続のみが受け入れられます。
dmz :非武装地帯にあり、内部ネットワークへのアクセスが制限されている一般公開されているコンピューターの場合。選択された着信接続のみが受け入れられます。
外部 :特にルーター用にマスカレードが有効になっている外部ネットワークで使用します。ネットワーク上の他のコンピューターが自分のコンピューターに害を及ぼさないとは信じていません。選択された着信接続のみが受け入れられます。
内部 :内部ネットワークで使用します。ほとんどの場合、ネットワーク上の他のコンピューターが自分のコンピューターに害を及ぼさないことを信頼しています。選択された着信接続のみが受け入れられます。
信頼 :すべてのネットワーク接続が受け入れられます。
デフォルトの firewalld ゾーンの設定
初期インストール後、構成ファイル /etc/firewalld/firewalld.conf で指定されているように、パブリック ゾーンがデフォルト ゾーンになります。 .
# grep –i defaultzone /etc/firewalld/firewalld.conf DefaultZone=public
ifcfg ファイルで ZONE=[zone] を指定しない限り、ネットワーク インターフェイスはデフォルト ゾーンにバインドされます。次のコマンドは、パブリック ゾーンにバインドされているインターフェイスを表示します:
# firewall-cmd --get-active-zone public interfaces: eth0 eth1
firewall-cmd コマンドを使用して、デフォルト ゾーンを変更できます。
# firewall-cmd --set-default-zone=work success
また、firewall-config GUI を使用してデフォルト ゾーンを変更することもできます。メニュー バーから [オプション] -> [デフォルト ゾーンの変更] を選択し、ポップアップ リストからゾーンを選択します。
ファイアウォール サービス
– firewalld サービスは、ローカル ポートとプロトコル、および宛先アドレスの組み合わせです。
– firewalld サービスには、サービスが有効になったときに自動的にロードされる Netfilter カーネル モジュールを含めることもできます。
– firewalld ソフトウェア パッケージには次のものが含まれます。次のディレクトリ内の定義済みサービスのセット:
# ls -lrt /usr/lib/firewalld/zones/ total 36 -rw-r----- 1 root root 342 Sep 15 2015 work.xml -rw-r----- 1 root root 162 Sep 15 2015 trusted.xml -rw-r----- 1 root root 315 Sep 15 2015 public.xml -rw-r----- 1 root root 415 Sep 15 2015 internal.xml -rw-r----- 1 root root 400 Sep 15 2015 home.xml -rw-r----- 1 root root 304 Sep 15 2015 external.xml -rw-r----- 1 root root 291 Sep 15 2015 drop.xml -rw-r----- 1 root root 293 Sep 15 2015 dmz.xml -rw-r----- 1 root root 299 Sep 15 2015 block.xml
– サービスはランタイム モードでゾーンに対して有効にできます。
– サービス定義は永続モードでのみ編集できます。
firewalld を起動
firewalld を開始するには:
# systemctl start firewalld
ブート時に firewalld が確実に開始されるようにするには:
# systemctl enable firewalld
firewalld が実行されているかどうかを確認するには:
# systemctl status firewalld # firewall-cmd --state
firewalld サービスを構成する 3 つの方法:
– firewall-cmd :コマンドライン インターフェース
– firewall-config :グラフィカル ユーザー インターフェース
– さまざまな XML を編集 構成ファイル。
firewall-cmd ユーティリティ
コマンドライン ツールの firewall-cmd は、デフォルトでインストールされる firewalld アプリケーションの一部です。 firewall-cmd コマンドのヘルプを表示するには:
# firewall-cmd --help
firewall-cmd コマンドは、General、Status、Permanent、Zone、IcmpType、Service、Adapt and Query Zones、Direct、Lockdown、Lockdown Whitelist、Panic などのオプションのカテゴリを提供します。すべてのゾーンの情報を一覧表示するには:
# firewall-cmd --list-all-zones public (default, active) interfaces: eth0 eth1 sources: services: dhcpv6-client ssh ports: ...
公開ゾーンへの HTTP クライアントによるアクセスを許可するには:
# firewall-cmd --zone=public --add-service=http success
公開ゾーンで許可されているサービスを一覧表示するには:
# firewall-cmd --zone=work --list-services dhcpv6-client http ssh
このコマンドを使用すると、ランタイム構成のみが変更され、構成ファイルは更新されません。
ランタイム構成モードで行われた構成の変更は、firewalld サービスを再起動すると失われます:
# systemctl restart firewalld # firewall-cmd --zone=work --list-services dhcpv6-client ssh
変更を永続的にするには、–permanent オプションを使用します。例:
# firewall-cmd --permanent --zone=public --add-service=http success
永続的な構成モードで行われた変更は、すぐには実装されません。ただし、Permanent 構成で行われた変更は構成ファイルに書き込まれます。 firewalld サービスを再起動すると、構成ファイルが読み取られ、変更が実装されます。例:
# systemctl restart firewalld # firewall-cmd --zone=work --list-services dhcpv6-client http ssh