2.8. ファイアウォール

情報セキュリティは、製品ではなくプロセスであると一般的に考えられています。通常、標準的なセキュリティ実装ではある種の専用メカニズムが用いられており、これでアクセス権限の制御や、識別/追跡可能な権限のあるユーザーへのネットワークリソースの制限が行われます。Red Hat Enterprise Linux には、管理者とセキュリティエンジニアを支援する、ネットワークレベルのアクセス制御問題に対処するいくつかのツールが含まれています。
ファイアウォールは、ネットワークセキュリティ実装の中心となるコンポーネントです。ホームユーザー向けの PC 1 台の保護から、重要な企業情報を安全に保護するデータセンターソリューションまでの市場のあらゆるレベルにファイアウォールソリューションを提供しているベンダーがいくつかあります。ファイアウォールには、Cisco、Nokia、Sonicwall などが提供しているファイアウォールアプライアンスなど、スタンドアロンのハードウェアソリューションもあります。また、Checkpoint、McAfee、Symantec などのベンダーが提供する家庭用やビジネス用に開発された専用ソフトウェアのファイアウォールソリューションもあります。
ファイアウォールがハードウェアかソフトウェアであるかに加えて、ファイアウォールの機能方法の違いもソリューションを区別するものとなります。表2.6「ファイアウォールの種類」は、一般的な 3 つのファイアウォールのタイプとその機能について説明しています。

表2.6 ファイアウォールの種類

方法説明利点欠点
NATNetwork Address Translation (NAT) は、プライベート IP サブネットワークを、1 つまたは小規模のパブリック IP アドレスの集合の後ろに置き、すべての要求をいくつかのソースではなく 1 つのソースにマスカレード (変換) します。Linux カーネルには Netfilter カーネルサブシステムによる組み込み NAT 機能があります。
LAN 上のマシンに透過的に設定可能。
多くのマシンとサービスを 1 つ以上の外部 IP アドレスの後方に置いて保護することで、管理業務が簡素化されます。
LAN までの/からのユーザーアクセス制限が、NAT ファイアウォール/ゲートウェイ上のポート開閉により設定できます。
ユーザーがファイアウォールの外側にあるサービスに接続すると悪意あるアクティビティを防ぐことができない。
パケットフィルターパケットフィルタリングファイアウォールは、LAN を通過する各データパケットを読み込みます。ヘッダー情報に基づいてパケットを読み込んでから処理を行い、ファイアウォール管理者により実装されたプログラム可能なルールセットに基づいてパケットをフィルターします。Linux カーネルには Netfilter カーネルサブシステムによる組み込みパケットフィルタリング機能があります。
iptables フロントエンドユーティリティーでカスタマイズ可能。
すべてのネットワーク活動がアプリケーションレベルではなく、ルーターレベルでフィルターされるため、クライアント側でのカスタマイズが不要。
パケットがプロキシ経由で送信されないため、クライアントからリモートホストへのダイレクト接続によりネットワークのパフォーマンスが高速になります。
プロキシファイアウォールのようなコンテンツに対するパケットをフィルターできない。
プロトコル層でパケット処理をするが、アプリケーション層ではパケットをフィルターできない。
IP マスカレードまたはローカルサブネットおよび DMZ ネットワークと使用されている場合、複雑なネットワークアーキテクチャーのためにパケットフィルタリングのルール設定が難しくなる可能性がある。
プロキシプロキシファイアウォールは、LAN クライアントからプロキシマシンへの特定のプロトコルまたは種類の要求をすべてフィルターします。次に、その要求をローカルクライアントに代わってインターネットに送ります。プロキシマシンは、悪意あるリモートユーザーと内部ネットワーククライアントマシン間のバッファとして機能します。
LAN の外側で機能するアプリケーションとプロトコルを管理者が制御できる。
プロキシサーバーの中には、頻繁にアクセスするデータを要求するのにインターネット接続を使うのではなく、ローカルにキャッシュできるものもあります。これにより、帯域の消費量を低減できます。
プロキシサービスはログ記録を取り、厳重に監視することができるので、ネットワーク上のリソース利用を厳しく制御することができる。
プロキシはアプリケーション固有 (HTTP、Telnet など) またはプロトコル制限された場合が多い (多くのプロキシは TCP 接続のサービスでのみ機能)。
アプリケーションサービスはプロキシの後方で実行できないため、アプリケーションサーバーには別の形態のネットワークセキュリティを使用する必要がある。
すべての要求と送信が、クライアントからリモートサービスに直接実行されるのではなく、1 つのソースからやりとりされるため、プロキシがネットワークのボトルネックになる可能性がある。

2.8.1. Netfilter と IPTables

Linux カーネルは、Netfilter と呼ばれる強力なネットワークサブシステムを特長としています。Netfilter サブシステムは、NAT および IP マスカレードのサービスのほかにも、ステートフルまたはステートレスのパケットフィルタリング機能を提供します。また、Netfilter には、高ルーティングや接続状態の高度な管理のために IP ヘッダー情報を分割 (マングル: mangle) する機能もあります。Netfilter は iptables ツールを使って制御されます。

2.8.1.1. IPTables の概要

Netfilter の強力な機能と柔軟性は、iptables 管理ツールを使って実行されます。このコマンドラインツールは、その前身である ipchains (Linux カーネル 2.4 以上で Netfilter/iptables に置き換えられる) の構文と似ています。
iptables は、Netfilter サブシステムを使用してネットワークの接続、検査および処理などを強化します。iptables は、高度なロギング、プレルーティングとポストルーティングの動作、ネットワークアドレス変換およびポート転送機能すべてをオールインワンの 1 つのコマンドラインインターフェースで実現します。
本セクションでは、iptables の概要を説明します。詳細は、「IPTables」を参照してください。