Firewalldでのパケットフィルタリング設定について解説する前に、Netfilterにおけるパケットフィルタリング処理の仕組みをおさらいしておきましょう。
Netfilterでは、以下の3種類のパケットの流れに対してパケットフィルタリングの処理を行います(図1)。
受信するパケットが適切かをチェックします。受信すべきパケットはローカルプロセス(Linux上のプロセス)に配送し、ルールに合致しないパケットは破棄します。
送信するパケットが適切かをチェックします。送信すべきパケットはネットワークデバイスを経由して外部へ送信し、ルールに合致しないパケットは破棄します。
別のサーバへ転送すると指定されたパケットを受信すると、FORWARDのルールを適用して処理します。転送すべきパケットはネットワークデバイスを経由して別のサーバなどに転送され、ルールに合致しないパケットは破棄します。
このパケット処理の分類を「チェイン」と呼びます。iptablesでは、それぞれのチェインに対して個別のフィルタリングルールとデフォルトルールを設定します。デフォルトルールでは、通信の「ACCEPT(許可)」または「DROP(廃棄)」を指定します。「ACCEPT」は、ルールが定められていない通信も「全て許可」します。「DROP」はその逆で、ルールを定めていない通信は「全て破棄」します。また、INPUT方向の戻り通信に対して、OUTPUT方向の「通信許可ルールを設定する必要」もあります。
一方のFirewalldでは、主にINPUTチェインのパケットフィルタリングルールを制御します。また、チェインに対して直接デフォルトルールを設定するのではなく、「ゾーン」と呼ぶグループ単位でルールを定義します。
では、Firewalldはどのようにシンプルになったのか。「ゾーン」設定の具体例を交えながら説明していきます。
ゾーンとは、パケットフィルタリングのルールをまとめて、グループ化したものです。Firewalldでは、このゾーンを「インタフェース」に定義します。実際のルールの設定は「ゾーン」に対して行います。
あらかじめ設定されている「ゾーン」は表1の通りです。
ゾーン名 | 概要 |
---|---|
public | サーバとして最低限必要な受信許可ルール。全てのインタフェースはデフォルトでpublicゾーンに所属している |
work | 業務用クライアントPCとしての利用を想定したルール。社内LAN内で使う場合を想定している。クライアントPCに求められる必要最低限のルールが定義されている |
home | 家庭用クライアントPCとしての利用を想定したルール。家庭内LANに接続して使う場合を想定している |
internal | Linuxを用いてファイアウォールを構築するのに使うルール。内部ネットワークのインタフェースに設定する |
external | 同じく、Linuxを用いてファイアウォールを構築するのに使うルール。こちらは、外部ネットワークのインタフェースに対して設定する |
dmz | 同じく、Linuxを用いてファイアウォールを構築するのに使うルール。こちらは、DMZのインタフェースに対して設定する |
block | 受信パケットを全て拒否するルール。送信パケットの戻り通信は許可される |
drop | 受信パケットを全て破棄するルール。送信パケットの戻り通信は許可される |
trusted | 全ての通信を許可するルール |
では、具体的なコマンドを使って、実際にFirewalldを設定しながら学んでみましょう。
Copyright © ITmedia, Inc. All Rights Reserved.