ここでは、Turbolinux Appliance Server 4.0(以下「TLAS4」)において、ファイヤウォールの設定について説明しています。
TLAS4は、パケットフィルタリングの設定を行うための簡易ファイヤウォール機能を実装しており、簡易ファイヤウォール機能は、TLAS4が動作している環境のLinuxカーネルのNetFilterと呼ばれる機能によって実装います。NetFilterは、その管理ツールがiptablesコマンドであるため、iptablesと呼ばれることもあります。
パケットフィルタリング概要
クライアントとサーバから構成されるネットワーク通信では、クライアントがサーバへ通信要求を出します。この際、IPパケットのヘッダには、送信元(クライアント)のIPアドレスやポート番号および送信先(サーバ)のIPアドレスやポート番号などが含まれます。クライアントのポート番号はプログラムの起動時に決定されランダムなポート番号(1024~65535)が使用されるため固定ではありません。それに対し、サーバプログラムはウェルノウンポート番号(0~1023)を使用します。通常、サーバのポート番号は提供するサービスごとに固定のポート番号が割り振られています。代表的なウェルノウンポート番号を以下に示します。
プロトコル |
ポート番号 |
サービス |
TCP |
20 |
FTP-DATA |
TCP |
21 |
FTP |
TCP |
22 |
SSH |
TCP |
23 |
TELNET |
TCP |
25 |
SMTP |
TCP |
53 |
DNS |
TCP |
80 |
HTTP |
TCP |
110 |
POP(POP3) |
UDP |
123 |
NTP |
TCP |
143 |
IMAP |
TCP |
443 |
HTTPS |
TCP |
465 |
SMTPS |
TCP |
993 |
IMAPS |
TCP |
995 |
POP3S |
パケットフィルタリングとは、このようなIPパケットのヘッダに含まれるIPアドレスやポート番号などの情報を参照し、そのパケットに対する処理を決定するメカニズムです。
ネットワークインターフェイスで入力(INPUT)、転送(FORWARD)、出力(OUTPUT)されるパケットは、ユーザが指定したルールに従い通過を許可(ACCEPT)するか、あるいは破棄(DROP)するかの決定が下されます。パケットフィルタリングのルールを指定する前に、パケットの経路について理解しておく必要があります。図はパケットが通過する経路に関する概念図です。
Linuxカーネルはパケットフィルタリングを行うために3つのルールリストをあらかじめ保持しています。これらはチェインと呼ばれ、INPUT、FORWARD、OUTPUTの3つが存在します。
INPUTチェイン
Linuxカーネルはパケットがネットワークインターフェイスへ入ってくるとそのパケットの行き先を参照します。これはルーティングと呼ばれます。もし、パケットの行き先が自ホストのプロセスであれば、パケットはINPUTチェインへ入ります。転送(FORWARD)するパケットには利用されません。そして、INPUTチェインで設定されたルールに従ってそのパケットは処理されます。もし、破棄されることなく通過すればそのパケットを待っているローカルプロセスが受け取ります。
FORWARDチェイン
自ホストが中継するパケットはFORWARDチェインへ入り、FORWARDチェインのルールに従い処理されます。しかし、転送先が不明な場合やパケット転送が有効でない場合、そのパケットはその場で破棄されます。破棄されることなく通過すれば、そのパケットは他のネットワークインターフェイスから送り出されます。
OUTPUTチェイン
自ホストのプロセスから送り出されるパケットはOUTPUTチェインへ入ります。そしてOUTPUTチェインで設定されたルールに従い処理されます。もし、破棄されることなく通過すれば、そのパケットは送り出されます。
デフォルトポリシー
各チェインには、複数のルールを設定できます。各チェインへ入ってきたパケットは、設定されている順番どおりに各ルールと一致するかどうかが調査されます。いずれのフィルタリングルールにも一致しないとき、パケットは各チェインのデフォルトポリシーの指定に従って処理されます。ポリシーには次の2つのアプローチがあります。
- ルールにマッチしなかったパケットは全て許可(ACCEPT)
- ルールにマッチしなかったパケットは全て拒否(DROP)
どちらがよいかという判断は一概にはできません。前者は使い勝手はよくなりますが、セキュリティ上の問題が発生しやすくなります。また、後者はセキュリティは強化されますが、使い勝手が悪くなります。しかし、セキュリティを考慮するのであれば、デフォルトポリシーはDROPに設定して、許可するパケットのみをACCEPTすべきです。
TLAS4の簡易ファイヤウォール機能では、入力(INPUT)と出力(OUTPUT)のルール作成をグラフィカルなユーザインターフェイスで支援します。
ファイヤウォールの設定
[ファイヤウォールの設定]テーブルでは、設定するチェインの選択と簡易ファイヤウォール機能の有効/無効の設定を行います。
セクションを選択
画面上部の[セクションを選択]プルダウンメニューを選択すると、その下に表示されるテーブルが変わります。[セクションを選択]プルダウンメニューでは、以下の項目を選択することができます。
ファイヤウォールの設定 |
簡易ファイヤウォール機能の有効/無効の設定を行います。このテーブルがデフォルトです。 |
入力ルールチェイン |
入力(INPUT)チェインを定義する[入力ルール]テーブルが表示されます。 |
出力ルールチェイン |
出力(OUTPUT)チェインを定義する[出力ルール]テーブルが表示されます。 |
ファイヤウォールを有効にする
デフォルトで簡易ファイヤウォール機能は無効になっています。チェックボックスを選択/解除し、[保存]ボタンをクリックすることで、簡易ファイヤウォール機能を起動/停止することができます。
適用を変更する
簡易ファイヤウォールの設定を変更しても、変更した設定はすぐに動作中のファイヤウォールには適用されません。これは、各ルールで行った設定を即座に反映してしまうと、一時的にシステムがセキュアでない状態になる可能性があるためです。修正を反映するには、すべてのルールを変更後、[適用を変更する]ボタンをクリックする必要があります。簡易ファイヤウォールの設定を変更すると、このボタンはクリックできる状態に変わります。
管理者が不適切なファイヤウォール設定を行うと、TLAS4にアクセスできなくなる可能性があります。TLAS4は、管理者が現在接続しているウェブブラウザとのセッションが60秒以上切断されると自動的に変更したファイヤウォール機能を無効にするセーフガード機能が実装されています。
ルールの表示
フィルタリングルールを表示するには、[ファイヤウォールの設定]テーブルの[セクションを選択]プルダウンメニューから表示したいルールのチェインを選択します。各チェインに設定されているルールテーブルが表示されます。
テーブルには、選択したチェインに現在設定されているルールが表示されます。設定されていない場合、ルールは表示されません。1つのテーブルに表示されるルールは、25エントリまでとなっていますので、それ以上のルールが設定されている場合はテーブル上部のプルダウンメニューから表示するエントリ範囲を選択する必要があります。
パケットは1番のルールから順番に検査され、そのパケットの通過を許可するか破棄するかの決定が下されます。いずれのフィルタリングルールにも一致しないとき、パケットは各チェインのデフォルトポリシーの指定に従って処理されます。
デフォルトポリシーの設定
チェインのデフォルトポリシーの設定は、各チェインのルールテーブル下部にある[デフォルトポリシー]プルダウンメニューで行います。各チェインのデフォルトポリシーを以下から選択します。
許可 |
ルールにマッチしなかったパケットは全て許可(ACCEPT)します。 |
否定 |
ルールにマッチしなかったパケットは全て破棄(DROP)します。 |
TLAS4の初期状態ではINPUTチェインのポリシーはDROPに、OUTPUTチェインのポリシーはACCEPTに設定されています。ただし、INPUTチェインのデフォルトポリシーをDROPに設定するとすべてのパケットを破棄してしまうため、代表的なサービスへのパケットは、デフォルトで通過を許可する設定が定義されています。
設定変更後は[保存]ボタンをクリックして設定を反映します。ただし、[変更を適用する]ボタンをクリックするまでは、動作中のファイヤウォールには適用されません。
ルールの追加
チェインにルールを追加するには、各チェインのルールテーブル上部にある[追加]ボタンをクリックします。[新規ルールの設定]テーブルが表示されます。
[新規ルールの設定]テーブルが表示されます。[新規ルールの設定]テーブルの設定項目を以下に示します。設定完了後は[保存]ボタンをクリックし、テーブルにルールを追加します。ただし、[変更を適用する]ボタンをクリックするまでは、動作中のファイヤウォールには適用されません。
ソースIPアドレス範囲の下限/ソースIPアドレス範囲の上限
フィルタリング対象とするパケットの送信元IPアドレスの範囲を指定します。[ソースIPアドレス範囲の下限]には、送信元IPアドレスの最小値を入力し、[ソースIPアドレス範囲の上限]には送信元IPアドレスの最大値を入力します。
どちらのフィールドも空白にすると、全ての送信元IPアドレスが対象になります。
ソースのポート番号
フィルタリング対象とするパケットの送信元ポート番号の範囲を入力します。
このフィールドを空白にすると、全ての送信元ポート番号が対象になります。
宛先IPアドレス範囲の下限/宛先IPアドレス範囲の上限
フィルタリング対象とするパケットの送信先IPアドレスの範囲を指定します。[宛先IPアドレス範囲の下限]には、宛先IPアドレスの最小値を入力し、[宛先IPアドレス範囲の上限]には宛先IPアドレスの最大値を入力します。
どちらのフィールドも空白にすると、全ての宛先IPアドレスが対象になります。
宛先のポート番号
フィルタリング対象とするパケットの宛先ポート番号の範囲を入力します。
このフィールドを空白にすると、全ての宛先ポート番号が対象になります。
ネットワークプロトコル
フィルタリング対象とするネットワークプロトコルをプルダウンメニューから選択します。以下のプロトコルのいずれかを選択可能です。
- 全てのネットワークプロトコル
- TCP
- UDP
- ICMP
- IPIP
- Encap
- gre
- esp
- ah
ネットワークインターフェイス
フィルタリングの対象とするネットワークインターフェイスをプルダウンメニューから選択します。以下のネットワークインターフェイスのいずれかを選択可能です。
- 全てのネットワークインターフェイス
- ループバックインターフェイス
- プライマリイーサネットインターフェイス
- セカンダリイーサネットインターフェイス
- 予備イーサネットインターフェイス
ポリシー
このルールの設定するポリシーをプルダウンメニューから選択します。以下のポリシーのいずれかを選択可能です。
許可 |
ルールにマッチしたパケットを許可(ACCEPT)します。 |
拒否 |
ルールにマッチしたパケットを破棄(DROP)します。 |
否定 |
ルールにマッチしたパケットを破棄(REJECT)しますが、送信元にパッケットが破棄されたことをICMPメッセージ(port-unreachable)で通知します。 |
ルールの変更
ルールを変更するには、各チェインのルールテーブルにあるアイコンをクリックします。クリックしたルールの[ファイやウォールルールを変更]テーブルが表示されます。設定項目は、[新規ルールの設定]テーブルと同じです。「ルールの追加」を参照してください。
ルール順序変更
各チェインには、複数のルールを設定できます。各チェインへ入ってきたパケットは、設定されている順番どおりに各ルールと一致するかどうかが調査され、一致した場合はそのチェインのポリシーに従いパケットの通過を許可(ACCEPT)、拒否(DROP)、否定(REJECT)します。いずれのフィルタリングルールにも一致しないとき、パケットは各チェインのデフォルトポリシーの指定に従って処理されます。
各チェインのルールの適用順序を変更するには、ルールテーブルの[順序]フィールドに、そのルールを適用したい順位を入力します。
例えば、10番目に設定されているルールの順位を7番目に変更したい場合、10番目のルールの[順序]フィールドに7と入力し、[保存]ボタンをクリックします。10番目のルールは、7番目に順位が上がり、変更前に7番目だったルールは8番目、8番目だったルールは9番目、9番目だったルールは10番目にルールテーブルの表示が更新されます。ただし、[変更を適用する]ボタンをクリックするまでは、動作中のファイヤウォールには適用されません。
ルールの削除
ルールを削除するには、各チェインのルールテーブルにあるアイコンをクリックします。クリックしたルールがテーブルから消去されます。ただし、[変更を適用する]ボタンをクリックするまでは、動作中のファイヤウォールには適用されません。