FreeBSD ハンドブック : セキュリティ : ファイアウォール : パケットフィルタリングファイアウォールの構築
Previous: ipfw に対するコマンドの例
Next: プリンタの利用

6.4.6. パケットフィルタリングファイアウォールの構築

注: 以下の提案は, ただの提案にすぎません: 必要な処理はそれぞれのファイアウォールで異なるため, あなた独自の要求にあったファイアウォールを構築する方法を ここで述べることはできないのです.

最初にファイアウォールをセットアップするとき, コントロールされた環境でファイアウォールホストの設定がおこなえるような テストベンチセットアップが用意できない場合には, カーネルのログ取りを 有効にしてログ取り版のコマンドを使用することを強くおすすめします. そうすることで, 大した混乱や中断なしに問題となる範囲の特定と処置を 素早くおこなうことができます. 初期セットアップフェーズが完了してからであっても, アタックの可能性のあるアクセスをトレースしたり, 要求の変化に応じてファイアウォールルールを変更したりできるので, `deny' に対するログ取りをおこなうことをおすすめします.

注: accept コマンドのログ取りをおこなっていると, ファイアウォールをパケットが一つ通過する毎に 1 行のログが生成されるため 大量の ログデータが発生します. そのため, 大規模な ftp/http 転送などをおこなうと, システムが非常に 遅くなってしまいます. また, パケットが通過するまでにカーネルにより多くの仕事を要求するため, パケットのレイテンシ (latency) を増加させてしまいます. syslogd もログをディスクに記録するなど, より多くの CPU タイムを 使用し始め, 実に容易に /var/log が置かれているパーティションを パンクさせてしまう可能性があります.

現状では, FreeBSD はブート時にファイアウォールルールをロードする 能力を持っていません. 私は /etc/netstart スクリプトにロードをおこなうスクリプトを 追加することをおすすめします. IP インターフェースの設定がおこなわれる前に ファイアウォールの設定がおこなわれるように, netstart ファイル中の 充分に早い位置にルールをロードするスクリプトを配置してください. こうすることで, ネットワークがオープンな間は常に抜け道が塞がれている ことになります.

ルールをロードするために使用するスクリプトは, あなたが作成しなければなりません. 現在のところ ipfw は 1 コマンドで複数のルールを ロードするユーティリティをサポートしていません. 私が使用しているシステムでは以下のようにしています:

# ipfw list

ファイルに現在のルールリストを出力し, テキストエディタを使用して すべての行の前に ``ipfw '' と書き足します. こうすることで, このスクリプトを /bin/sh に与えてルールをカーネルに再読み込み させることができます. これは最も効率的な方法とはいえないかもしれませんが, きちんと動作しています.

次の問題は, ファイアウォールが実際には何を する べきかです ! これは外部からそのネットワークへのどんなアクセスを許したいか, また内部から外界へのアクセスをどのくらい許したいかに大きく依存します. いくつか一般的なルールを挙げると:

これとは別のファイアウォール設定に関するチェックリストが CERT から 入手可能です. ftp://ftp.cert.org/pub/tech_tips/packet_filtering

前にも述べたように, これはただの ガイドライン にすぎません. ファイアウォールでどのようなフィルタルールを使用するかは, あなた自身が 決めなければなりません. これまでのアドバイスにしたがったにも関わらず, 誰かがあなたのネットワークに 侵入してきたとしても, 私は「いかなる」責任もとることはできません.


FreeBSD ハンドブック : セキュリティ : ファイアウォール : パケットフィルタリングファイアウォールの構築
Previous: ipfw に対するコマンドの例
Next: プリンタの利用