iptablesで商用のファイアウォールを置き換える

 IT予算が厳しくなると、マネージャはコスト削減を迫られる。どんなテクノロジであれ、サービスの契約は高くつく。ファイアウォールも例外ではない。Netfilterは、パケットフィルタリング・プログラムiptablesを擁するフリーの代替ファイアウォールだ。商用ソリューションのような契約サービスやファイアウォール設定を簡単に変更できるインタフェースは用意されていないが、ファイアウォール処理において安定したパフォーマンスと実力を発揮し、レポートおよびレスポンスの機能を強化するアドオンが利用できる。

 iptablesでエンタープライズ・ファイアウォールが実現できることを示す事例として、イリノイ大学アーバナシャンペーン校(University of Illinois at Urbana-Champaign)で私が管理しているネットワークを紹介しよう。このネットワークは2,000に及ぶデバイスをサポートしており、2つのファイアウォール・ゾーン(DMZおよびセキュア)を有する1ギガビットのアップリンクを備えている。1日のアウトバウンド帯域幅は平均して100GB/sほどだ。このネットワークを保護するのがiptablesを実行している2台のファイアウォール専用マシンで、それぞれは3枚のネットワークカード(2枚はファイアウォールのブリッジング用、1枚は管理アクセス用)を備え、1GBのメモリと1.5GHzのシングルコアプロセッサで動作している。この場合、演算処理能力はそれほど重要でないため、ローエンドのCPU搭載マシンを利用することで費用の節約が可能だ。

 ファイアウォールに起因した遅延が生じることもなく、不正なトラフィックのブロックについても期待どおりの働きをしてくれる。また、ファイアウォールに適切な調整を施すと、ソフトウェアの問題によるダウンタイムも発生しなくなった。

 ただ、いくつか注意すべき点がある。定期的なスキャンを実施している、あるいは高トラフィックネットワーク上にあるファイアウォールでは、接続テーブルが一杯になってしまう可能性がある。この問題を解決するには、「net.ipv4.ip_conntrack_max」というカーネルパラメータの値を大きく(私は131071にしている)、「net.ipv4.tcp_keepalive_time」の値を小さくする(3600が適切)。ファイアウォールに十分な空きメモリがある限りは、この設定で問題はないはずだ。あとは何も考えなくても満足のいく動作をしてくれる。結果として、パケット損失がなく遅延を感じさせない、非常に可用性に優れた(ハードウェアに問題がなければの話だが)ファイアウォールが構築できる。

ポリシーに基づくトラフィックフィルタリングの効果

 どんなファイアウォールを利用しても、その効果はルールセット次第だ。iptablesのルールは概してわかりやすい。たとえば、次のように記述する。

iptables -A INPUT -m state -p tcp --dport 80 -s 192.168.5.0/24 --state NEW,ESTABLISHED,RELATED -j ACCEPT

 このコマンドは、入力(ファイアウォールを構築したマシンの着信トラフィック用)ルールを追加(-A)するものだ。ルールの内容は、サブネット192.168.5.0からポート80(Webトラフィック用)に届いたトラフィックの接続状態(-m)を参照してNEW(新規)、ESTABLISHED(接続済み)、またはRELATED(関連)のトラフィックがないかチェックする、というものになっている。また、破棄したパケットのログを取るには(実際にそうすべきだが)、ログ処理用にDROPルールとREJECTルールを1つずつ作成する必要がある。

 不正な形式のパケット(つまり、SYNスキャンの一部となるパケット)は、TCPヘッダのフラグだけをチェックするルールによって簡単にブロックできる。fwsnortといったほかのツールを使えば、明らかに悪意のあるトラフィックをブロックするためのもっと詳細なパケット検査が可能になる。fwsnortはSnortのルールをiptablesのルールに変換してくれる。こうして変換されたルールにより、IPS(Intrusion Prevention System:侵入防御システム)機能の一部がiptablesに組み込まれる。ただし、iptablesでは、悪意あるネット空間からの全トラフィックを遮断するIPアドレスのブラックリストを簡単に追加できる。iptablesのルール記述の規則に慣れ、IPヘッダの基本知識を覚えれば、新しいルールがたやすく書けるようになる。

レポートおよびアクティブレスポンスのアドオン機能

 数々のアドオンツールを使えば、iptablesのログデータをもっと有効に活用できる。標準的なシステムログのスキャナでもうまく設定すれば必要な情報を取り出せるが、そのために作られてはいないので限界がある。これに対し、psadでは、一定のしきい値を超える明らかな攻撃についてメールで警告したり、一度しきい値を超えた悪意のあるIPアドレスを積極的にブロックしたりする設定が可能だ。

 Netfilterのthe conntrack-toolsを使えば、接続テーブルの管理を強化できる。接続テーブルの情報にコマンドラインからアクセスできるほか、その統計情報を取得することも可能だ。また、l7-filterを利用すれば、第7層(アプリケーション層)までファイアウォール処理の設定が可能になる。たとえば、大学などの環境ではl7-filterを使ってピアツーピアのトラフィック帯域幅を制限することで、MPAA(米国映画協会)/RIAA(全米レコード協会)からの不愉快な差し止め通知を受けずに済むようになるわけだ。

 反面、iptablesは商用のファイアウォール機器と違ってルール作成機能が充実していないため、ユーザにはより詳しいファイアウォール処理の理解が求められる。Firewall BuilderやKMyFirewallのようなツールを使えばiptablesの設定は便利になるが、セキュリティ管理者であればファイアウォールの処理とアプリケーションについて全般的に学ぶ必要があるだろう。これは、多大な時間と大量の導入前テストが必要なことを意味する。

 また、何らかの障害が発生してもどこかに電話して直しに来てもらうわけにはいかない、という問題もある。そのため、社内の知識レベルを上げる必要がある。とはいえ、オープンソースソリューションに関する情報はパブリックドメインとしてある程度公開されているので、教育研修のコスト要因といえば時間と、あとはおそらくAmazonで何冊か書籍を購入する費用くらいだろう。

 結果的に、組織はファイアウォールの代わりにiptablesを利用することで莫大なコストを節約できる。おまけに、オープンソースソリューションのもたらす高い柔軟性も得られる。

John Bambenekはイリノイ大学アーバナシャンペーン校、(インターネットストームセンタ)の広報担当マネージャ兼セキュリティ管理者。セキュリティに関する執筆記事が多数あり、数々のコンピュータセキュリティ講座のテキストも手がけている。最近はBotnets: Countering the Largest Security Threat(ボットネット:最大のセキュリティ脅威への対策)の「Botnets: Proactive System Defense」(ボットネットに対する予防的システム防御)という章の執筆を担当。

Linux.com 原文