各システムの保護資産へのアクセスについては以下のセキュリティポリシーを設定してセキュリティ対策を実施する必要があります。何らかの原因でポリシーに違反した場合には不正アクセスの可能性があります。本製品では、「いつ」「どこで」「だれが」「なにを」「どうした」という情報が監査ログに蓄積されるため、万が一不正アクセスが発生してしまった場合でも迅速に追跡調査が行えます。
| セキュリティポリシー |
---|---|
いつ | アクセスできる時間帯を曜日ごとなどに定める |
どこで | アクセスに用いるPCや端末をネットワークのアドレスや端末番号などで制限する |
だれが | 使える人だけにIDを発行し、パスワードで本人であることを確認する |
なにを | IDごとにアクセスできる情報を限定する |
どうした | IDごとに照会、更新、追加、削除などのうち、どれができるかを限定する |
InterstageとSymfowareが連携し、Symfowareの監査ログを確認するだけで、だれがどこのWebサーバに侵入して不正アクセスしたかを特定できます。
アプリケーションを修正しなくても各サービス(Webサービス、Servletサービスなど)にアクセスした時の情報が自動的に各監査ログに出力されます。このため、業務アプリケーションへの不正アクセスが発覚した場合に、不正アクセス経路の迅速な特定が可能となります。この時に採取される監査ログをアクセスログと呼びます。
ここでは、以下について説明します。
注意
IJServerは、以下の製品で利用できます。
Interstage Application Server Enterprise Edition
Interstage Application Server Standard-J Edition
アクセスログとして採取される情報
アクセスログとしては、以下の情報が採取されます。
Interstage シングル・サインオン
いつ |
|
どこで |
|
だれが |
|
なにを |
|
どうした |
|
Interstage HTTP Server
いつ |
|
どこで |
|
だれが |
|
なにを |
|
どうした |
|
Interstage ディレクトリサービス
いつ |
|
どこで |
|
だれが |
|
なにを |
|
どうした |
|
注意
Interstage ディレクトリサービスは、以下の製品に同梱されています。
Interstage Application Server Enterprise Edition
Interstage Application Server Standard-J Edition
Symfowareと連携した場合
Symfoware(Symfoware Server Lite Editionを除く)と連携した場合には、Symfowareの監査ログに以下の情報が採取されます。
IJServer名には、SymfowareにアクセスしたIJServerの名前が設定されます。
WebサーバのIPアドレス(またはホスト名)
WebサーバのリクエストID
Web認証ユーザ名
IJServer名
WebサーバのリクエストID
Interstage HTTP Serverでは送信されたリクエストに対して識別子を割り当てて、そのリクエストの呼び出し先に識別子を伝播します。この識別子をWebサーバのリクエストIDと呼びます。同一のリクエストIDが出力されたアクセスログを対応付けることにより、簡単に不正アクセス経路の追跡ができます。
WebサーバのリクエストIDは以下のように作成されており、一意性が保証されます。
112ビット(32ビットIPアドレス、32ビットpid、32ビットタイムスタンプ、16ビットカウンタの4つの組)を アルファベット(A~Z、a~z、0~9、@、-)を用いてMIMEのbase64符号化と同様の方法により符号化し、 24バイトの文字列を生成して作成
注意
Interstage HTTP Server以外のWebサーバを使用した場合にはリクエストIDは伝播されません。
Webサーバの定義
リクエストIDを付与させるためには、Interstage HTTP Serverの環境定義ファイル(httpd.conf)に以下の定義を追加したあと、Webサーバを再起動してください。環境定義ファイル(httpd.conf)の詳細については、「Interstage HTTP Server 運用ガイド」を参照してください。
LoadModule unique_id_module "C:/Interstage/F3FMihs/modules/mod_unique_id.so"
LoadModule unique_id_module "/opt/FJSVihs/modules/mod_unique_id.so"
Symfoware監査ログに出力されるWebサーバ接続情報/IJServer名
Webサーバ/アプリケーションサーバ/データベースサーバの3階層システムでは、一般的にアプリケーションサーバ上のアプリケーションではデータベースへ接続するためのユーザIDが1つのIDに固定されて使われています。(不特定多数のWebサーバログインユーザに対して、データベースの接続ユーザは特定ユーザとなるのが一般的であるためです。)このため、データベースの監査ログに出力されるCONNECTしたユーザ名だけでは「だれが」の情報が不十分です。
本製品ではSymfowareと連携して、Webサーバ接続情報を自動的にSymfowareの監査ログに出力することができます。発行されたSQL文などのデータベースアクセス情報とともにWebサーバ接続情報が監査ログに出力されるため、監査ログを参照することで「だれが」アクセスしたかを特定することが可能となります。また、データベースにアクセスしたIJServer名が出力されることから、どのIJServerからデータベースのデータを操作したかを特定することも可能です。
InterstageとSymfowareが連携して採取される情報
InterstageとSymfowareが連携して出力される情報は以下です。
採取される情報 | Symfowareの監査ログとの対応 |
---|---|
WebサーバのIPアドレス(またはホスト名) | CLIENT_INF |
WebサーバのリクエストID | |
Web認証ユーザ名 | |
IJServer名 | MODULE_INF |
CLIENT_INFには以下の書式で情報が設定されます。斜体文字の部分は可変情報です。
i=RequestID,u=UserID,h=HostName
RequestID :WebサーバのリクエストID
UserID :Web認証ユーザ名
HostName :WebサーバのIPアドレス(またはホスト名)
注意
CLIENT_INFの最大長は64Byteです。UserIDもしくはHostNameの長さにより、64Byteを超えた場合にはh=HostNameの部分がハイフン「-」で出力されます。ハイフンが出力された場合には、ユーザ名についても切り捨てが発生した可能性があります。Webサーバのログを確認してリクエストIDに該当するユーザ名/ホスト名を確認してください。
上記よりユーザ名には20Byte以下を使用することを推奨します。
例
出力例
i=TzJ4HAqDyX8AABMMBcoAAAAw,u=peter,h=192.168.0.2
上記情報はIJServer上でJ2EEのJNDI機能でlookupしたJDBCのデータソースに対して、アプリケーションがgetConnectionを実行したタイミングで自動的に設定されます。Symfowareが用意する以下のプロシジャルーチンをInterstageが自動的に実行してWebサーバ接続情報を設定し、getConnectionで取得したコネクションに対して要求を実行するとWebサーバ接続情報とともに監査ログが出力されます。
RDBII_SYSTEM.RDBII_CLIENT_INF_PROC[?]
RDBII_SYSTEM.RDBII_MODULE_INF_PROC[?,?]
MODULE_INFのアクション名(上記プロシジャルーチンの第2パラメタ)には何も設定されません。
また、Web認証ユーザ名は、以下の機能を使用して認証を行った場合のみ自動的に監査ログに出力されます。
Webサーバの「ユーザ認証(基本認証)」機能
Webアプリケーションのユーザ認証機能
シングル・サインオンの「パスワード認証」機能
シングル・サインオンの「証明書認証」機能
CORBAアプリケーションなどからデータベースにアクセスする場合にはSymfowareが用意するプロシジャルーチンを直接実行してWebサーバ接続情報を設定することも可能です。すでにプロシジャルーチンでWebサーバ接続情報が設定されている状態で、プロシジャルーチンを実行した場合には設定されている情報は上書きされます。
不正アクセス追跡方法
データベース(Symfoware)への不正アクセスが確認された場合、以下のように追跡できます。
Webサーバ/Webクライアントの追跡
Symfowareの監査ログに出力される「Web認証ユーザ名」により、不正アクセスを行ったユーザ名を特定できます。
Symfowareの監査ログに出力される「WebサーバのIPアドレス(またはホスト名)」により不正ユーザが侵入したWebサーバを特定できます。
2)によりWebサーバが特定できれば、Webサーバのアクセスログから不正アクセスしたWebクライアントを特定できます。
注意
Webクライアントがプロキシサーバを経由してWebサーバにアクセスしている場合には、Webクライアントの特定はできません。
アプリケーションサーバの追跡
Symfowareの監査ログに以下が出力されます。以下の情報から不正ユーザが侵入したアプリケーションサーバを特定することが可能です。
Symfowareの監査ログの項目 | 出力内容 |
---|---|
アプリケーション/RDBコマンドのプロセスID | IJServerプロセスのプロセスID |
アプリケーション/RDBコマンドを実行したマシンのホスト名/IPアドレス | IJServerを運用するマシンのホスト名またはIPアドレス |
モジュール名 | IJServer名 |
不正アクセス経路の追跡
WebサーバのリクエストIDをアプリケーションサーバが伝播して各監査ログに出力するため、リクエストIDを元に各監査ログを対応付けて、どのように不審者がデータベースにアクセスしたかを追跡することも可能です。不審者がどのように侵入したかを確認することで、システムの脆弱性の存在を早期に確認することが可能となり、適切なセキュリティ対策を実施することができます。
また、監査ログを対応付けることにより、各種アクセスログの情報から不正ユーザがその他不正行為を行っていないかを確認することも可能です。
Interstage シングル・サインオンの追跡
以下の手順により、Interstage シングル・サインオンで認証を行った不審者がサインオンからサインオフまでに行った証跡を調べることができます。
Symfowareの監査ログに出力される「WebサーバのリクエストID」を特定します。
Interstage シングル・サインオンの業務サーバのアクセスログで、1.のリクエストのレコードを特定します。
2.のレコードに記載されている「セションID」を特定します。
Interstage シングル・サインオンの認証サーバ、およびリポジトリサーバのアクセスログ、およびセション管理ログで、3.の「セションID」のレコードを特定します。
4.のレコードから、サインオン操作からサインオフ操作までに行った行為を追跡することができます。
Interstage シングル・サインオンの業務サーバのアクセスログで、3.の「セションID」のレコードを特定します。
6.のレコードから、そのユーザがアクセスした全ての「WebサーバのリクエストID」を特定します。
7.の全ての「WebサーバのリクエストID」を元に、不審者が業務システムで行った行為を追跡することができます。
設定方法
Symfoware監査ログにWebサーバ接続情報/IJServer名を出力する場合、以下の設定が必要です。
JDBCデータソース定義の設定
SymfowareのJDBCデータソースを定義する時に、「監査ログへのWebサーバ接続情報出力」を「出力する」に設定してください。
Symfowareの監査ログデータベースのセットアップ
Symfowareの監査ログデータベースをセットアップして、監査ログを採取するように設定してください。詳細はSymfowareのマニュアルを参照してください。
また、Interstageの各種サービスのアクセスログを取得する場合、以下のマニュアルを参照してください。
Interstage シングル・サインオン
「メッセージ集」の「シングル・サインオンが出力するログメッセージ」を参照してください。
Interstage HTTP Server
「Interstage HTTP Server 運用ガイド」の「アクセスログ」を参照してください。
Interstage ディレクトリサービス
「ディレクトリサービス運用ガイド」の「リポジトリの運用監視」を参照してください。
注意
Interstage ディレクトリサービスは、以下の製品に同梱されています。
Interstage Application Server Enterprise Edition
Interstage Application Server Standard-J Edition