ファイヤウォールについて
ファイヤウォールの利用
ファイヤウォールとは、ネットワークを流れるトラフィックを監視、保護するために使用するネットワークセキュリティ用ツールです。通常は、コンピュータ自体に搭載されています。本来、ファイヤウォールはシステムをスキャンしてウイルスやトロイの木馬を探したり、受信パケットをスキャンしてウイルスを監視したりするものではありません。しかし、ファイヤウォール製品の中には、アンチウイルスソフトウェアがバンドルされ、さまざまなレベルでウイルス監視ができるものもあります。
ファイヤウォールにはさまざまな種類がありますが、どの製品も防御の効果を最大限に高めるためにハードウェアとソフトウェアを組み合わせて使用しています。
ファイヤウォールの選択
適切なファイヤウォールを選ぶには、以下の点を検討してください。
・利用中のネットワークでセキュリティ上脅威となるものは何か。
・特定のユーザからのアクセスを拒否する必要があるか。・特定のプロトコルを拒否する必要はあるか。
・(HTTPやTelnetなど)どのプロトコルからの要求を許可するか。・(FTPなど)どのプロトコルを拒否するか。
ファイヤウォールの構造
ファイヤウォールの基本的な構造はどれも同じで、お使いになるファイヤウォールの種類によって多少の違いがあるだけです。ファイヤウォールサーバでは、まずインターネットから送られてくるパケットをすべて調べます。また、ご利用のネットワーク経由で送られてくるパケットも調べます。これは、すべてのトラフィックが通るメインゲート、または「隘路(チェックポイント)」と考えることができます。ファイヤウォールサーバは、インターネットとご自分のネットワークとの間に配置され、システムのセキュリティを守る働きをします。
暗号化
2つのネットワーク間で互いに通信できるように設定している場合、ネットワークの安全を守るもう1つの方法として、それぞれのファイヤウォールで暗号を使用できます。この場合、ファイヤウォールから送信される全パケットが暗号化されることになります。最も普及している暗号化方式はRSA(Rivest-Shamier-Adleman)です。下図のネットワーク通信の例では、メッセージがローカルネットワークのファイヤウォールサーバで暗号化され、リモートネットワークのファイヤウォールサーバで復号化されています。
ファイヤウォールの種類
ファイヤウォールには、おもに以下の3つの種類があります。
・ネットワークレベル(第1世代のファイヤウォール技術)
・サーキットレベル(第2世代)
・アプリケーションレベル(第3世代)
それぞれの種類のファイヤウォールで、異なる技術を使用してネットワークを保護しています。ネットワークレベル(またはパケットフィルタ)のファイヤウォールは、トランスポート層のネットワークトラフィックを解析して、設定によってあらかじめ許可されているプロトコルかどうかをチェックします。
サーキットレベルのファイヤウォールは一歩進んだ機能を持っており、パケットが接続要求なのか、2つの同等なトランスポート層間での接続なのかを確認します。この確認作業では、まず各接続の設定が調べられ、次に完全なセッション状態とシーケンス情報を保持している有効な接続テーブルとその接続との比較が行われます。
アプリケーションレベルのファイヤウォールは、他の2種類よりも精密な機能を持っています。このファイヤウォールは、アプリケーション層でネットワークパケットのデータを個別に調べてから、接続を許可します。また、すべてのネットワークパケットのデータを調べ、接続状態とシーケンス情報を完全な形で保持します。
ネットワークレベルのファイヤウォール
ネットワークレベルのファイヤウォールは、スクリーニングルータの名で広く知られています。または、パケットフィルタと呼ばれることもあります。これは、パケットをスクリーニングする(ふるい分けする)という基本的な動作を行うファイヤウォールです。一般的に、このファイヤウォールはパケットのアドレスを調べて、そのパケットをローカルネットワークに通過させるか、入ってこないように遮断するかを判断します。
パケットには送信者のIPアドレスと受信者のIPアドレスが両方とも含まれているため、特定のコンピュータに対して受信パケットと送信パケットをすべて遮断できます。このためには、ブロックリストまたは許可・拒否リストと呼ばれるファイルを作成し、IPアドレスをそこに記述する必要があります(最も一般的なフィルタです)。ルータは、接続要求があるたびにこのファイルをチェックして、受信IPアドレスがこのリストに登録されていれば、その接続を遮断します。
通常、このチェックは、ファイヤウォールで無効にされているサービスに特定のユーザが接続しようとした場合にだけ行われます。ほとんどの場合、スクリーニングルータは以下の情報に基づいてフィルタリングを行います。
・データが送られてくる送信元アドレス。
・データを送る送信先アドレス。
・データのプロトコル(TCP、UDP、ICMPなど)。
・接続要求のあったサービスが使用する送信元および送信先のアプリケーションポート。
・パケットが接続要求の開始点であるかどうか。
ネットワークレベルのファイヤウォールは、正しく設定されていれば、拒否されている動作を行おうとしない限りどのユーザの接続も通過させます。
FirstClassインターネットサービスには、フィルタリングを行うセキュリティ機能があらかじめ組み込まれています。したがって、インターネットサービスはインターネットプロトコルをチェックするネットワークレベルのファイヤウォールとして動作します。詳細は、FirstClassインターネットサービスのヘルプを参照してください。
ネットワークレベルのファイヤウォールは下図のようになります。
この例では、IPアドレスとホスト名に基づいて特定のユーザを拒否しています。また、ファイルのアップロード、ダウンロードを含むFTP(File Transfer Protocol)サービスの要求も拒否しています。
このルータは、(自分が設定したルールに基づく)パケットフィルタリングをアプリケーション層から独立して行っています。したがって、スクリーニングルータを利用すれば、クライアントとサーバのアプリケーションに変更を加えることなく、ネットワークとそのトラフィックを管理できます。
ステートフルインスペクション
ネットワークレベルのファイヤウォールには、ステートフルインスペクションという別の種類があります。その構造は、ほとんどのルータで使用されている基本的なパケットフィルタリング機能を拡張したものです。ステートフルインスペクションは、ネットワーク層で機能するため、疑わしいパケットがプロトコルスタックを通過しないようにすることができます。しかし、静的なパケットフィルタリングとは異なり、ステートフルインスペクションは、(OSI階層の全階層に対応する)パケット内の全データに基づいて判断を行います。接続状態が常に監視されるため、ファイヤウォールは、システム管理者が定義したルールと以前のセッション状態に基づいて、さまざまな処理ができるようになります。実際、このファイヤウォールは、ファイヤウォール経由で接続中のセッションの情報を保持しておくことができます。これにより、UDPなどのコネクションレス型のプロトコルであっても、高いセキュリティを確保しながら、まだ承認されていない接続の全パケットを効率的にスクリーニングできます。
ネットワークレベルのファイヤウォールの欠点は、アプリケーションの警告と監査ができないことです。したがって、スクリーニングフィルタがパケットを拒絶しても、そのことが管理者に通知されません。アプリケーションレベルのファイヤウォールなど高度なファイヤウォールは、プロトコルをフィルタリングし、拒否した要求を報告するようになっています。
多くのシステムでは、ネットワークレベルのファイヤウォールは、防御の第一線としてしか使われていません。このレベルのファイヤウォールは多くのプロトコルに対応していないため、追加のフィルタリングが必要になります。
サーキットレベルのファイヤウォール
通常、サーキットレベルのファイヤウォールは、プロキシサーバソフトウェアを実行するホストコンピュータで構成されています。このコンピュータをプロキシサーバといいます。プロキシサーバは、ネットワークの外にあるサーバと通信を行うことによって、2つのネットワーク間を流れるトラフィックを制御します。
サーキットレベルのファイヤウォールとアプリケーションレベルのファイヤウォールは、どちらもプロキシサーバであるという点では同じようなものです。その違いは、サーキットレベルのファイヤウォールにはプロキシクライアントソフトウェアが必要ないということです。サーキットレベルのファイヤウォールは、クライアントとサーバとの間に経路を作りますが、その際、一方のアプリケーションがもう一方のアプリケーションに関する情報を取得する必要はありません。
つまり、クライアントとサーバは、基本的にファイヤウォールと通信するのではなく、ファイヤウォール経由で通信できます。これにより、トランザクションの開始が実行中のトランザクションから干渉を受けないようにできます。
サーキットレベルのファイヤウォールを使用する利点は以下の通りです。
・さまざまなプロトコルで使用できるサービスがある。
・評価をほとんど行わないため、速度が大きくなる。
・ネットワークアドレス変換機能と併用して使用できるため、内部のIPアドレスを外部ユーザから隠すことができる。
サーキットレベルのファイヤウォールを使用する欠点は以下の通りです。
・TCP以外のプロトコルのサブセットへのアクセスを制限できない。
・自分より高い階層のプロトコルで、厳重なセキュリティチェックができない。
・監査イベントの生成機能に限界がある。
ネットワークレベルのファイヤウォールと同じように、サーキットレベルのファイヤウォールもブラックリストや(完全なセッション状態とシーケンス情報を含む)有効な接続情報が記述された許可・拒否リストを使用します。まず、受信セッションを調べて、正当なTCPプロトコルであることを確認します。ハンドシェイクが完了すると、そのネットワークパケット情報が許可・拒否リストにあるかどうかを調べます。許可リストにあることがわかれば、そのパケットは許可されます。接続時に仮想経路が作られ、接続している間はその経路が開かれたままとなります。
サーキットレベルのファイヤウォールは下図のようになります。
アプリケーションレベルのファイヤウォール
前述のように、アプリケーションレベルのファイヤウォールには、ネットワークの外部にあるサーバと通信を行うプロキシサーバが備わっており、2つのネットワーク間のトラフィックを制御します。
アプリケーションレベルのファイヤウォールを使用している場合、自分のローカルネットワークがインターネットに直接接続することはありません。その代わりに、プロキシサーバが、許可されたパケットの複製をネットワーク間で転送します。このパケットに含まれているのが受信データであっても送信データであっても同様です。その結果、ファイヤウォールは、接続を開始した送信元のIPアドレスを完全に隠し、ネットワーク情報の入手を試みる侵入者からネットワークを守ります。
つまり、自分のIPアドレスを隠すためにプロキシサーバを使用して、インターネット上で自分を匿名状態にできます。ただし、特定のサーバを攻撃しようするハッカーも、この「サービス」を使用して自分のIPアドレスを隠すことができるという欠点があります。
プロキシサーバはネットワークプロトコルを識別できるため、プロキシサーバの設定によって自分のネットワーク上で必要なIPサービスの種類を制限できます。入手可能なプロキシサーバには数多くの種類があります。スクリーニングするプロトコルは、(スクリーニングルータとは異なり)プロキシサーバに登録しておく必要があります。
理想的な環境は、スクリーニングフィルタとファイヤウォールを同時に使用して、パケットとプロトコルをフィルタリングすることです。スクリーニングルータとファイヤウォールの両方を使用するシステムは、下図のようになります。
ファイヤウォールを(インターネットに最も近い位置にある)外部ルータと内部ルータとの間に置いても、攻撃からの防御能力が高まるわけではありません。しかし、ファイヤウォールサーバで調べなければならないトラフィック量を大きく減らすことができるため、ファイヤウォールのパフォーマンスが高まります。また、ファイヤウォールサーバの隣にフィルタリングルータを設置しないと、サブネット上を流れるパケットを、他の内部ホスト宛のものも含めてすべて処理しなければならなくなります。
高度なセキュリティが必要な環境では、プロキシサーバを利用するのがよいでしょう。ただし、アプリケーション自体が監査とフィルタリングを実行するため、プロキシを利用すると、ネットワークレベルのファイヤウォールを利用する場合に比べて速度が遅くなります。したがって、アプリケーションレベルのファイヤウォールは、(FirstClassサーバとFirstClassインターネットサービス用のコンピュータを除き)ネットワーク内でも最も速度の大きいコンピュータに搭載してください。
FirstClassクライアントが直接対応しているのは、SOCKS4対応のプロキシインタフェースだけです。ファイヤウォールで使用するクライアントは、NAT(Network Address Translation)かSOCKS4のどちらかの設定にする必要があります。
NAT(Network Address Translation)
NAT(Network Address Translation)は、最新のプロキシサーバ(ソフトウェアルータとも呼ばれる)に搭載されている機能で、あるネットワーク内で使われているIPアドレスを、他のネットワーク内で利用可能な異なるIPアドレスに変換します。NATの機能はたいてい企業のファイヤウォールに備わっています。これは、送信要求、受信要求が必ず変換処理を経なければならなくなるため、セキュリティが確実に高まるためです。また、要求を制限、認証したり、以前の要求と照合したりすることも可能になります。
NATは、他のプロキシ方式と比べてはるかに透過性が高いため、(透過プロキシアプリケーションを含む)ほとんどすべてのアプリケーションがNAT対応プロキシサーバ経由で他のサービスに接続できるようになります。NATは、TCP/IP通信と(コネクションレスのプロトコルである)UDP/IP通信の両方に対応しています。
FirstClassクライアントでは、クライアントマシンのネットワークゲートウェイをNATルータのマシンに設定するだけでNATを利用できるようになります。これはOS側での設定であり、FirstClass側での設定は必要ありません。
注意
NATが使用されるのは、たいてい、インターネットに接続するためにプライベートネットワーク上のクライアントマシンから送信を行う場合です。クライアント側から見れば、NATを利用するのは好ましい選択ですが、プライベートネットワーク上にあるサーバでの利用には適していません。
SOCKS4
SOCKS(またはsocks)サーバは、企業のファイヤウォールの内側にあるクライアントからの要求を処理し、要求されたインターネットの宛先かユーザIDに基づいて接続要求を許可または拒否します。接続と「バインド」要求が完了すると、情報交換が(HTTPなどの)通常のプロトコルで行われます。
SOCS4は、TCP/IPだけに対応するクライアントプログラム用のプロキシサーバインタフェースです。ここで説明するケースでは、プロキシサーバがSOCKS4の接続要求をサーバマシンにリレーするよう設定されています。
注意
FirstClassは、SOCKS5には対応していません。
SOCKS4を利用できるようにFirstClassを設定するには、以下の手順に従ってください。
1 [ログイン]フォームの[設定]をクリックします。
2 サーバマシンを通常の要領で設定します。
3 [プロトコル]で[TCP/IP]を選択します。
4 [設定]をクリックします。
5 [基本設定]タブで、以下の項目を選択します。
・[ポート番号]は[TCPデフォルト(510)]。
・[プロキシのポート]は[デフォルト(1080)]。
・[プロキシのIPアドレス]は「0.0.0.0」。
注意
[プロキシのIPアドレス]で0.0.0.0以外のアドレスを設定すると、そのアドレスに迂回するようクライアントまたはアウトバウンド接続に命令することになります。これにより、SOCKS4インタフェースを使用するアドレスがプロキシサーバに伝えられます。
・[バッファのサイズ]は[デフォルト(10000)]。
6 この設定を保存します。
設定後、プロキシサーバはクライアントの代わりとなるIPアドレスに接続要求をリレーするようになります。クライアントソフトウェアは、プロキシサーバのIPアドレスだけでなく、プロキシサーバが使用するポート番号も知る必要があります。これは、サーバと通信するためにクライアントソフトウェアに510番ポートの使用を設定しなければならないのと同じようなことです(「ポートの要件」を参照してください)。
FirstClassサーバを設定してファイヤウォールの内側で動作するようにするには、適切な接続をファイヤウォールに対して開く必要があります(「ポートの要件」を参照してください)。
NetinfoファイルかデフォルトのNETINFOポート設定で指定されているポートに、SOCKS4サーバが対応している必要があります。したがって、通常は510番ポートでプロキシサーバによるリレーを許可する必要があります(これを「ポートを開く」といいます)。Netinfoファイルに記述された(TCPGUIPORTやTCPRGUIPORTなどの)ポートを追加するには、そのポートを開くようにプロキシサーバを設定します。
23番ポートは、インターネットの「Telnet」プログラムのポートで、コマンドラインユーザインタフェース(CLUI)で使用します。プロキシサーバ経由でCLUIを使用するには、TCPのTelnetホストにプロキシ接続ができる(Procomm PlusやHyperTerminalなどの)Telnetプログラムやターミナルエミュレーションが必要です。CLUIを使用する場合、FirstClassクライアントとFCPプロトコルは必要ありません。通信は、ターミナルプログラムとプロキシサーバとの間で行われます。例えば、ターミナルプログラムとプロキシサーバがSOCKS5に対応可能であれば、SOCKS5を利用してCLUI経由で接続できます。
FirstClassインターネットサービスがファイヤウォールの外側にある場合、プロキシサーバは、対応するインターネットのポートを、外部接続に対して開かれるポートの一覧に登録する必要があります。通常、このポートはtelnet用のポートと同じく、あらかじめ設定されています。これは、ほとんどのプロキシサーバで、25番(SMTP)、80番(HTTP)、110番(POP3)、119番(NNTP)など一般的なインターネットポートを開くようデフォルト設定されているためです。
FirstClassインターネットサービスとFirstClassサーバは、それぞれ異なるマシンで実行できます。そのため、インターネットサービスを外部側またはインターネット側のプロキシサーバに搭載し、ローカル側のコアサーバと切り離すことができます。
システムによっては、サーバがインターネットから切り離されていることあります。その場合は、FirstClassクライアントの接続のためにSOCKS4プロキシが必要になります。これには、510番などのポート経由でインターネットサービスからサーバへSOCKS4接続を行う場合も含まれます。このケースではセキュリティのための追加措置を取っていませんが、いずれの場合もサーバ安全性は確保されます。
パフォーマンスとセキュリティのバランス
ファイヤウォールの決定するにあたってよく起こる問題は、パフォーマンスとセキュリティのバランスをどう取るかということです。パケットが通過する経路と、各パケットに対して実行されるセキュリティチェックのレベルについて検討する必要があります。一般的に、ネットワークレベルのファイヤウォールのパフォーマンスが最も高く、サーキットレベルのファイヤウォール、アプリケーションレベルのファイヤウォールの順に続きます。
セキュリティチェックのレベルでは、これとは逆の順序になります。これは、ネットワークパケットが通過するプロトコル層の数が多いほど、そのパケットをより詳しく調べる必要があるためです。したがって、アプリケーションレベルのファイヤウォールは、ネットワークレベルのファイヤウォールより安全性が高く、ネットワークレベルのファイヤウォールは、サーキットレベルのファイヤウォールより安全性が高いと考えられます。しかし、サーキットレベルのファイヤウォールは広範囲のセキュリティチェックを行わないため、多くの許可・拒否ルールが設定されるネットワークレベルのファイヤウォールよりたいてい動作が速くなります。
通常、アプリケーションレベルのファイヤウォールは、構造的に速度が最も遅くなります。これは、各パケットが2つの別々のネットワークセッションとして処理され、データのセキュリティチェックが広範囲に行われる結果、処理に必要な時間が長くなるためです。ただし、業界では、一般的にアプリケーションレベルのファイヤウォールが最もセキュリティが高いと考えられています。
ポートの要件
以下の一覧は、ファイヤウォールの設定時に開けておく必要のあるポート番号を、接続の種類ごとに示したものです。
ポート |
プロトコル |
備考 |
21 |
FTP |
このポートがリレーを許可する(開く)ようにしてください。 |
23 |
CLUI/Telnet |
このポートを開くようにしてください。この23番ポートは、インターネットの「Telnet」プログラムのポートです。これは、CLUIインタフェースで使用します。 |
25 |
SMTP |
このポートをファイヤウォール上で開いて、双方向の通信ができるようにしてください。通常は、これがプロキシサーバのデフォルト設定です。 |
53 |
DNS |
このポートを開くようにしてください。FirstClassにはDNS機能はありませんが、このポートでDNSに接続する必要があります。 |
79 |
Finger |
|
80 |
HTTP |
このポートをファイヤウォール上で開いて、双方向の通信ができるようにしてください。通常は、これがプロキシサーバのデフォルト設定です。 |
110 |
POP3 |
このポートをファイヤウォール上で開いて、双方向の通信ができるようにしてください。通常は、これがプロキシサーバのデフォルト設定です。 |
119 |
NNTP |
このポートをファイヤウォール上で開いて、双方向の通信ができるようにしてください。通常は、これがプロキシサーバのデフォルト設定です。 |
143 |
IMAP |
|
389 |
LDAP |
|
443 |
HTTPS |
|
510 |
TCP FCP |
このポートをファイヤウォールのプロキシサーバ上で開いて、双方向の通信ができるようにしてください。Netinfoファイルに記述された(TCPGUIPORTやTCPRGUIPORTなどの)ポートを追加するには、そのポートを開くようにプロキシサーバを設定します。 |
810 |
UDP FCP |
このポートは、IP Network Notifierで使用します。 |
3000 |
FCP |
FirstClassクライアントの旧バージョンで使用していたTCPポートです(現バージョン以降では必要ありません)。 |
|