ファイヤウォールの利用
ファイヤウォールとは、ネットワークを流れるトラフィックを監視、保護するために使用するネットワークセキュリティ用ツールです。通常は、コンピュータ自体に搭載されています。本来、ファイヤウォールはシステムをスキャンしてウイルスやトロイの木馬を探したり、受信パケットをスキャンしてウイルスを監視したりするものではありません。しかし、ファイヤウォール製品の中には、アンチウイルスソフトウェアがバンドルされ、さまざまなレベルでウイルス監視ができるものもあります。
ファイヤウォールにはさまざまな種類がありますが、どの製品も防御の効果を最大限に高めるためにハードウェアとソフトウェアを組み合わせて使用しています。
ファイヤウォールの選択
適切なファイヤウォールを選ぶには、以下の点を検討してください。
ご自分のネットワークでセキュリティ上危険なものは何でしょうか?
特定のユーザからのアクセスを拒否したいと考えていますか?プロトコルはどうでしょうか。
(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 [設定]をクリックしてください。
4 [プロトコル]で[TCP/IP]を選択してください。
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ポートです(現バージョン以降では必要ありません)。
| ||