4.11.2 ファイアウォールと侵入検知システムを配置する
ここでは,ファイアウォールと侵入検知システムを適切に配置,設定することでシステムのセキュリティを向上させる方法について説明します。
- 〈この項の構成〉
(1) ファイアウォールと侵入検知システムを配置する目的
ファイアウォールは,外部のネットワークと内部のネットワーク間のアクセスを制御します。あらかじめアクセスを許可するクライアントや通信を特定し,決められたルールに従って通信を許可したり破棄したりすることで,外部ネットワークからの不正なアクセスを防止します。このため,ファイアウォールを使用する場合は,通信を許可するポートやIPアドレスを明確にして,設定しておく必要があります。
侵入検知システム(IDS)は,通信回線を監視して,通信パターンによって不正なアクセスを判断します。
ファイアウォールと侵入検知システムを適切な個所に配置,設定することで,次のようなセキュリティ上の脅威からシステムを守れます。
-
システム外からシステムへの第三者の不正侵入
-
アプリケーションの扱うデータの第三者への漏洩
ここでは,次の表に示すシステム構成ごとのファイアウォールと侵入検知システムの配置個所,および設定するときに留意することについて説明します。
システム構成 |
説明 |
---|---|
基本的なWebクライアント構成 |
1台のアプリケーションサーバで構成されるシステム構成です。クライアントはWebブラウザです。 |
基本的なEJBクライアント構成 |
1台のアプリケーションサーバで構成されるシステム構成です。クライアントはEJBクライアントアプリケーションです。 |
サーバの層ごとにファイアウォールで区切る構成(アプリケーション集中型) |
複数のアプリケーションサーバで構成されるシステム構成で,サーバの層ごとにファイアウォールで区切る構成です。アプリケーションはすべて同じ層のアプリケーションサーバ上で動作します。 |
サーバの層ごとにファイアウォールで区切る構成(アプリケーション分散型) |
複数のアプリケーションサーバで構成されるシステム構成で,サーバの層ごとにファイアウォールで区切る構成です。アプリケーションは異なる複数の層のアプリケーションサーバ上で動作します。 |
なお,インターネットと接続するシステムの場合は,外部ネットワークから直接内部ネットワークのアプリケーションサーバにアクセスされないように,DMZを確保して,リバースプロキシを使用した構成を検討することをお勧めします。
(2) 基本的なWebクライアント構成の場合
ここでは,1台のアプリケーションサーバで構成される基本的なWebクライアント構成の場合のファイアウォールと侵入検知システムの配置個所について説明します。
ファイアウォールは,ネットワークから見てアプリケーションサーバの手前に配置します。この構成の場合,ネットワーク上のWebクライアントは,ファイアウォール経由でだけアプリケーションサーバにアクセスできます。
基本的なWebクライアント構成の場合のファイアウォールと侵入検知システムの配置例を次の図に示します。
(a) アプリケーションサーバの設定
アプリケーションサーバでは,次の項目を設定します。
-
J2EEサーバの管理用通信ポートのアドレス指定
J2EEサーバの管理用通信ポートにアクセスできるアドレスを指定します。
-
Management Serverおよび運用管理エージェントのアドレス指定
Management Serverおよび運用管理エージェントにアクセスできるアドレスを指定します。
(b) ファイアウォールの設定
外部ネットワークとアプリケーションサーバ内のWebサーバ(HTTP Server)のアクセスについて制御するために,次の項目を設定します。
-
外部ネットワークからのWebサーバに対してのアクセス許可
ファイアウォールの外部のネットワークとアプリケーションサーバ間の通信では,公開ポートであるHTTP/80やHTTPS/443などだけを許可するようにします。ただし,システム構成によっては,DNSなど,そのほかの通信を必要に応じて許可してください。
-
アクセスを許可するWebクライアントのIPアドレスの限定(任意)
ファイアウォールの機能を使用してアクセスを許可するWebクライアントのIPアドレスを限定することで,そのシステムの利用者を特定できます。この場合は,ファイアウォールに通信を許可するIPアドレスを指定してください。
-
Management Serverおよび運用管理エージェントの通信ポートの指定
Management Serverおよび運用管理エージェントの通信ポートについては,ファイアウォールの外部からはアクセスできないように通信を遮断してください。これらの通信ポートにアクセスできると,運用管理者以外の外部のユーザからアプリケーションサーバに対して不正な運用操作が実行されるおそれがあります。
(c) 侵入検知システムの設定
外部ネットワークとアプリケーションサーバ内のWebサーバ(HTTP Server)の公開ポートの通信内容を監視するために,次の項目を設定します。
-
通信内容の監視
通信内容に既知の攻撃パターンや,攻撃と疑われるようなパターンが含まれている場合は運用管理者などに警告を通知するように設定します。侵入検知システムとファイアウォールの連携機能を利用して,疑わしい通信は自動的に遮断するように設定することもできます。
-
SSLコネクションの確立部分への攻撃の監視
HTTPSによるアクセスは,通信内容が暗号化されているため,基本的に通信内容を監視できません。この場合は,HTTPSに関する既知の攻撃パターンとして,SSLコネクションの確立部分への攻撃などを監視対象としてください。
-
公開ポート以外のポートへの通信の監視
アプリケーションサーバの公開ポート以外のポートへの通信が外部ネットワークから送信されている場合は,設定ミスなどによってファイアウォールが突破されているおそれがあります。この場合,警告を通知するように設定することをお勧めします。
(3) 基本的なEJBクライアント構成の場合
ここでは,1台のアプリケーションサーバで構成される基本的なEJBクライアント構成の場合のファイアウォールと侵入検知システムの配置個所について説明します。
ファイアウォールは,ネットワークから見てアプリケーションサーバの手前に配置します。この構成の場合,ネットワーク上のEJBクライアントは,ファイアウォール経由でだけアプリケーションサーバにアクセスできます。
基本的なEJBクライアント構成の場合のファイアウォールと侵入検知システムの配置例を次の図に示します。
(a) アプリケーションサーバの設定
アプリケーションサーバでは,次の項目を設定します。
-
J2EEサーバの管理用通信ポートのアドレス指定
J2EEサーバの管理用通信ポートにアクセスできるアドレスを指定します。
-
Management Serverおよび運用管理エージェントのアドレス指定
Management Serverおよび運用管理エージェントにアクセスできるアドレスを指定します。
-
EJBクライアントからアクセスされるポート番号の固定
EJBクライアントからアプリケーションサーバを利用するために,EJBクライアントから次のポート番号に通信できるように設定してください。
-
CORBAネーミングサービス
ポート番号は,通常固定されています(デフォルトのポート番号:900)。
-
EJBコンテナ
ポート番号が固定されていないため,EJBコンテナが利用するポート番号を明示的に指定(固定)する必要があります。指定個所については,マニュアル「アプリケーションサーバ システム設計ガイド」の「3.15 アプリケーションサーバのプロセスが使用するTCP/UDPのポート番号」を参照してください。
-
-
Management Serverおよび運用管理エージェントの通信ポートの指定
Management Serverおよび運用管理エージェントの通信ポートの指定については,ファイアウォールの外部からはアクセスできないように,公開ポートを使用しないことを推奨します。これらの通信ポートにアクセスできると,運用管理者以外の外部のユーザからアプリケーションサーバに対して不正な運用操作が実行されるおそれがあります。
(b) ファイアウォールの設定
外部ネットワークとアプリケーションサーバ間のアクセスについて制御するために,次の項目を設定します。
-
外部ネットワークからアプリケーションサーバに対してのアクセス許可
ファイアウォールの外部のネットワークとアプリケーションサーバ間の通信では,公開ポートであるCORBAネーミングサービスおよびEJBコンテナの固定ポートなどだけを許可するようにします。ただし,システム構成によっては,DNSなど,そのほかの通信を必要に応じて許可してください。
-
アクセスを許可するクライアントのIPアドレスの限定(任意)
ファイアウォールの機能を使用してアクセスを許可するクライアントのIPアドレスを限定することで,そのシステムの利用者を特定できます。この場合は,ファイアウォールに通信を許可するIPアドレスを指定してください。
-
Management Serverおよび運用管理エージェントの通信ポートの指定
Management Serverおよび運用管理エージェントの通信ポートについては,ファイアウォールの外部からはアクセスできないように通信を遮断してください。これらの通信ポートにアクセスできると,運用管理者以外の外部のユーザからアプリケーションサーバに対して不正な運用操作が実行されるおそれがあります。
(c) 侵入検知システムの設定
外部ネットワークとアプリケーションサーバの公開ポートの通信内容を監視するために,次の項目を設定します。
-
通信内容の監視
通信内容に既知の攻撃パターンや,攻撃と疑われるようなパターンが含まれている場合は運用管理者などに警告を通知するように設定します。侵入検知システムとファイアウォールの連携機能を利用して,疑わしい通信は自動的に遮断するように設定することもできます。
-
SSLコネクションの確立部分への攻撃の監視
HTTPSによるアクセスは,通信内容が暗号化されているため,基本的に通信内容を監視できません。この場合は,HTTPSに関する既知の攻撃パターンとして,SSLコネクションの確立部分への攻撃などを監視対象としてください。
-
公開ポート以外のポートへの通信の監視
アプリケーションサーバの公開ポート以外のポートへの通信が外部ネットワークから送信されている場合は,設定ミスなどによってファイアウォールが突破されているおそれがあります。この場合,警告を通知するように設定することをお勧めします。
(4) サーバの層ごとにファイアウォールで区切る構成(アプリケーション集中型)
システムの規模によっては,一つのシステムが複数のアプリケーションサーバおよびそのほかのサーバで構成されることがあります。このような構成では,それぞれの層でセキュリティを確保する必要があります。
ここでは,Webサーバ,アプリケーションサーバおよびデータベースサーバを多層化した場合に,アプリケーションはすべて同じ層のアプリケーションサーバで動作させる構成について説明します。この構成を,アプリケーション集中型の構成といいます。
アプリケーション集中型の構成の場合のファイアウォールと侵入検知システムの配置例を次の図に示します。この構成では,サーバの層ごとに1台ずつ,合計3台のファイアウォールを配置しています。また,DMZには,リバースプロキシモジュールを組み込んだWebサーバ(リバースプロキシサーバ)を配置しています。
また,コストなどの要因からファイアウォール数を削減したい場合は,次の図に示すような構成にできます。この例では,ファイアウォール1とファイアウォール2で実行するアクセス制御をファイアウォール1に集約して,ファイアウォール2を削減します。
この構成の場合は,ファイアウォール2で設定する内容を,ファイアウォール1にまとめて設定してください。
(a) アプリケーションサーバの設定
アプリケーションサーバでは,次の項目を設定します。
-
J2EEサーバの管理用通信ポートのアドレス指定
J2EEサーバの管理用通信ポートにアクセスできるアドレスを指定します。
-
Management Serverおよび運用管理エージェントのアドレス指定
Management Serverおよび運用管理エージェントにアクセスできるアドレスを指定します。
(b) ファイアウォールの設定
この構成では,次に示す三つのファイアウォールを使用しています。
-
ファイアウォール1
外部のネットワークとDMZのWebサーバ(リバースプロキシサーバ)間のアクセスを制御します。
-
ファイアウォール2
DMZのWebサーバ(リバースプロキシサーバ)と内部のネットワークにあるアプリケーションサーバ間のアクセスを制御します。
-
ファイアウォール3
アプリケーションサーバとデータベースサーバ間のアクセスを制御します。
それぞれのファイアウォールに設定する内容について説明します。
-
ファイアウォール1の設定
外部のネットワークとDMZのWebサーバ(リバースプロキシサーバ)間のアクセスを制御するためのファイアウォールです。次の項目を設定します。
-
外部ネットワークからWebサーバ(リバースプロキシサーバ)に対してのアクセス許可
ファイアウォール1よりも外部のネットワークからアプリケーションサーバ内のWebサーバに対する通信は,公開ポートへの通信だけを許可します。HTTP/80やHTTPS/443などが該当します。ただし,システム構成によっては,DNSなど,そのほかの通信を必要に応じて許可してください。
-
アクセスを許可するWebクライアントのIPアドレスの限定(任意)
ファイアウォールの機能を使用してアクセスを許可するWebクライアントのIPアドレスを限定することで,そのシステムの利用者を特定できます。この場合は,ファイアウォール1に通信を許可するIPアドレスを指定してください。
-
-
ファイアウォール2の設定
Webサーバとアプリケーションサーバ間のアクセスを制御するためのファイアウォールです。次の項目を設定します。
-
DMZのWebサーバ(リバースプロキシサーバ)から内部ネットワークのアプリケーションサーバ内のWebサーバに対してのアクセス許可
ファイアウォール2よりも外部のネットワーク(DMZ)からアプリケーションサーバ内のWebサーバに対する通信は,公開ポートへの通信だけを許可します。HTTP/80やHTTPS/443などが該当します。ただし,システム構成によっては,DNSなど,そのほかの通信を必要に応じて許可してください。
-
アクセスを許可するWebクライアントのIPアドレスの限定(任意)
ファイアウォールの機能を使用してアクセスを許可するWebクライアントのIPアドレスを限定することで,そのシステムの利用者を特定できます。この場合は,リバースプロキシサーバのIPアドレスを指定してください。
このほかの通信の設定は,システム構成によって,必要に応じて許可してください。DNSなどの通信の許可が必要な場合があります。
- 参考
-
WebサーバとJ2EEサーバが動作するアプリケーションサーバの間にファイアウォールを配置した場合には,次の設定が必要です。
-
Webサーバからアプリケーションサーバに対してのアクセス許可
J2EEサーバのWebサーバ通信用ポート(NIO HTTPサーバのリクエスト受付ポート。デフォルトのポート番号:8008)への通信の許可を設定します。
-
-
-
ファイアウォール3の設定
アプリケーションサーバとデータベース間のアクセスを制御するためのファイアウォールです。このファイアウォールが,システムで最も重要な情報を守るための最終防衛ラインになります。
次の項目を設定します。
-
アプリケーションサーバからデータベースサーバに対してのアクセス許可
アプリケーションサーバからデータベースサーバに対する通信は,データベースサーバの通信用ポートだけを許可するように設定します。データベースサーバの通信用ポートは,使用するデータベースの設定に従ってください。データベースサーバからアプリケーションサーバへのコネクション確立が必要な場合があるので注意してください。
このほかの通信の設定は,システム構成によって,必要に応じて許可してください。DNSなどの通信の許可が必要な場合があります。
-
(c) 侵入検知システムの設定
外部ネットワークとアプリケーションサーバ内のWebサーバの公開ポートの通信内容を監視するために,次の項目を設定します。
-
通信内容の監視
通信内容に既知の攻撃パターンや,攻撃と疑われるようなパターンが含まれている場合は運用管理者などに警告を通知するように設定します。侵入検知システムとファイアウォールの連携機能を利用して,疑わしい通信は自動的に遮断するように設定することもできます。
-
SSLコネクションの確立部分への攻撃の監視
HTTPSによるアクセスは,通信内容が暗号化されているため,基本的に通信内容を監視できません。この場合は,HTTPSに関する既知の攻撃パターンとして,SSLコネクションの確立部分への攻撃などを監視対象としてください。
-
公開ポート以外のポートへの通信の監視
アプリケーションサーバの公開ポート以外のポートへの通信が外部ネットワークから送信されている場合は,設定ミスなどによってファイアウォールが突破されているおそれがあります。この場合,警告を通知するように設定することをお勧めします。
(5) サーバの層ごとにファイアウォールで区切る構成(アプリケーション分散型)
ここでは,Webサーバ,アプリケーションサーバおよびデータベースサーバを多層化した場合に,アプリケーションを複数の層のアプリケーションサーバで動作させるときの構成について説明します。この構成を,アプリケーション分散型の構成といいます。
アプリケーション分散型の構成の場合のファイアウォールと侵入検知システムの配置例を次の図に示します。この例では,Webサーバに該当するマシンがアプリケーションサーバを兼ねているため,WebアプリケーションがWebサーバと同じ層で動作します。また,Enterprise Beanは,Webサーバとは別のマシン上に構築されたアプリケーションサーバ上で動作します。
なお,運用管理は,各ホストに配置したManagement Serverによって実行します。このため,管理ホストは層ごとに配置しています。
この構成では,DMZのフロントに1台,およびサーバの層ごとに1台ずつ,合計4台のファイアウォールを配置しています。また,DMZには,リバースプロキシモジュールを組み込んだWebサーバ(リバースプロキシサーバ)を配置しています。
(a) Web/アプリケーションサーバでの設定
Webサーバを兼ねたアプリケーションサーバマシン(Web/アプリケーションサーバ)では,次の項目を設定します。なお,このアプリケーションサーバマシンでは,Webアプリケーションが動作します。
-
J2EEサーバの管理用通信ポートのアドレス指定
J2EEサーバの管理用通信ポートにアクセスできるアドレスを指定します。
-
Management Serverおよび運用管理エージェントのアドレス指定
Management Serverおよび運用管理エージェントにアクセスできるアドレスを指定します。
(b) アプリケーションサーバの設定
Enterprise Beanが動作するアプリケーションサーバでは,次の項目を設定します。
-
J2EEサーバの管理用通信ポートのアドレス指定
J2EEサーバの管理用通信ポートにアクセスできるアドレスを指定します。
-
Management Serverおよび運用管理エージェントのアドレス指定
Management Serverおよび運用管理エージェントにアクセスできるアドレスを指定します。
-
EJBコンテナが利用するポート番号の固定
EJBコンテナが利用するポート番号を明示的に指定(固定)する必要があります。
指定個所については,マニュアル「アプリケーションサーバ システム設計ガイド」の「3.15 アプリケーションサーバのプロセスが使用するTCP/UDPのポート番号」を参照してください。
(c) ファイアウォールの設定
この構成では,次の4台のファイアウォールを使用しています。
-
ファイアウォール1
外部のネットワークとDMZのWebサーバ(リバースプロキシサーバ)間のアクセスを制御します。
-
ファイアウォール2
DMZのWebサーバ(リバースプロキシサーバ)と内部のネットワーク上のWeb/アプリケーションサーバ間のアクセスを制御します。
-
ファイアウォール3
Web/アプリケーションサーバとアプリケーションサーバ間のアクセスを制御します。
-
ファイアウォール4
アプリケーションサーバとデータベースサーバ間のアクセスを制御します。
それぞれのファイアウォールに設定する内容について説明します。
-
ファイアウォール1の設定
外部のネットワークとDMZのWebサーバ(リバースプロキシサーバ)間のアクセスを制御するためのファイアウォールです。次の項目を設定します。
-
外部ネットワークからWebサーバ(リバースプロキシサーバ)に対してのアクセス許可
ファイアウォール1よりも外部のネットワークからアプリケーションサーバ内のWebサーバに対する通信は,公開ポートへの通信だけを許可します。HTTP/80やHTTPS/443などが該当します。ただし,システム構成によっては,DNSなど,そのほかの通信を必要に応じて許可してください。
-
アクセスを許可するWebクライアントのIPアドレスの限定(任意)
ファイアウォールの機能を使用してアクセスを許可するWebクライアントのIPアドレスを限定することで,そのシステムの利用者を特定できます。この場合は,ファイアウォール1に通信を許可するIPアドレスを指定してください。
-
-
ファイアウォール2の設定
外部のネットワークと内部のネットワーク上のWeb/アプリケーションサーバ間のアクセスを制御するためのファイアウォールです。次の項目を設定します。
-
DMZのWebサーバ(リバースプロキシサーバ)からアプリケーションサーバ内のWebサーバに対してのアクセス許可
ファイアウォール1よりも外部のネットワークから,アプリケーションサーバ内のWebサーバに対する通信は,公開ポートへの通信だけを許可します。HTTP/80やHTTPS/443などが該当します。ただし,システム構成によっては,DNSなど,そのほかの通信を必要に応じて許可してください。
-
アクセスを許可するWebクライアントのIPアドレスの限定(任意)
ファイアウォールの機能を使用してアクセスを許可するWebクライアントのIPアドレスを限定することで,そのシステムの利用者を特定できます。この場合は,リバースプロキシサーバのIPアドレスを指定してください。
-
-
ファイアウォール3の設定
Web/アプリケーションサーバとアプリケーションサーバ間のアクセスを制御するためのファイアウォールです。次の項目を設定します。
-
Web/アプリケーションサーバからアプリケーションサーバに対してのアクセス許可
Web/アプリケーションサーバからアプリケーションサーバ上のJ2EEサーバを利用するために,次のポート番号に通信できるように設定してください。
・CORBAネーミングサービス
ポート番号は,通常固定されています(デフォルトのポート番号:900)。
・EJBコンテナ
ポート番号が固定されていないため,EJBコンテナが利用するポート番号を明示的に指定(固定)する必要があります。
指定個所については,マニュアル「アプリケーションサーバ システム設計ガイド」の「3.15 アプリケーションサーバのプロセスが使用するTCP/UDPのポート番号」を参照してください。
-
トランザクション関連の双方向アクセスの許可(グローバルトランザクションでトランザクションコンテキストプロパゲーションを使用する場合)
Web/アプリケーションサーバとアプリケーションサーバの間で,グローバルトランザクションでトランザクションコンテキストプロパゲーションを使用する場合は,両方のアプリケーションサーバの次に示すポートが双方向で通信できるように設定します。
・J2EEサーバのトランザクションリカバリ用通信ポート(デフォルトのポート番号:20302)
・スマートエージェントの通信ポート(デフォルトのポート番号:14000)
-
そのほかの設定(任意)
システム構成によっては,DNSなど,そのほかの通信を必要に応じて許可してください。
-
-
ファイアウォール4の設定
アプリケーションサーバとデータベース間のアクセスを制御するためのファイアウォールです。このファイアウォールが,システムで最も重要な情報を守るための最終防衛ラインになります。
次の項目を設定します。
-
アプリケーションサーバからデータベースサーバに対してのアクセス許可
アプリケーションサーバからデータベースサーバに対する通信は,データベースサーバの通信用ポートだけを許可するように設定します。データベースサーバの通信用ポートは,使用するデータベースの設定に従ってください。データベースサーバからアプリケーションサーバへのコネクション確立が必要な場合があるので注意してください。また,システム構成によっては,DNSなど,そのほかの通信を必要に応じて許可してください。
-
(d) 侵入検知システムの設定
外部ネットワークとアプリケーションサーバ内にあるWebサーバの公開ポートの通信内容を監視するために,次の項目を設定します。
-
通信内容の監視
通信内容に既知の攻撃パターンや,攻撃と疑われるようなパターンが含まれている場合は運用管理者などに警告を通知するように設定します。侵入検知システムとファイアウォールの連携機能を利用して,自動的に疑わしい通信は遮断するように設定することもできます。
-
SSLコネクションの確立部分への攻撃の監視
HTTPSによるアクセスは,通信内容が暗号化されているため,基本的に通信内容を監視できません。この場合は,HTTPSに関する既知の攻撃パターンとして,SSLコネクションの確立部分への攻撃などを監視対象としてください。
-
公開ポート以外のポートへの通信の監視
Web/アプリケーションサーバの公開ポート以外のポートへの通信が外部ネットワークから送信されている場合は,設定ミスなどによってファイアウォールが突破されているおそれがあります。この場合,警告を通知するように設定することをお勧めします。