第7章 セキュリティ監査証跡機能
7.1 アクセスログ
アプリケーションを修正しなくても各サービス(Webサービス、Servletサービスなど)にアクセスした時の情報が自動的に各監査 ログに出力されます。このため、業務アプリケーションへの不正アクセスが発覚した場合に、不正アクセス経路の迅速な特定が 可能となります。この時に採取される監査ログをアクセスログと呼びます。
ここでは、以下について説明します。
・ アクセスログとして採取される情報
・ WebサーバのリクエストID
・ Symfoware監査ログに出力されるWebサーバ接続情報/IJServer名
・ 不正アクセス追跡方法
・ 設定方法
注意
Symfowareの監査ログにWebサーバ接続情報/IJServer名を出力させる連携設定を行った場合、アプリケーションのレスポ
ンスに影響する場合があります。レスポンスへの影響を事前に確認してから運用環境に適用してください。
アクセスログとして採取される情報
アクセスログとしては、以下の情報が採取されます。
Interstage シングル・サインオン
いつ ・ アクセスが行われた日時
どこで ・ アクセスしたクライアントのIPアドレス だれが ・ ユーザ識別情報
なにを ・ アクセス対象 どうした ・ 処理結果(補足情報)
・ SessionID
・ リポジトリサーバのIPアドレス
Interstage HTTP Server
いつ ・ Webクライアントからのアクセス日時
どこで ・ WebクライアントまたはプロキシサーバなどのIPアドレス/ホスト名
・ WebサーバのリクエストID
だれが ・ Webクライアントから返信されるユーザ個人情報
・ Webクライアントから送信されたユーザ名
なにを ・ Webクライアントが要求したリクエスト内容
どうした ・ Webクライアントに返信するコード
・ Webクライアントに転送したデータ量
Interstage ディレクトリサービス
いつ ・ アクセス日時
どこで ・ IPアドレス:ポート番号(ホスト名) だれが ・ バインドDN
なにを ・ プロトコルバージョン
・ サーチベース
・ サーチスコープ
・ 別名参照ルール
・ サイズリミット
・ タイムリミット
・ 属性取得方法
・ 検索フィルタ
・ 比較対象DN
・ 更新DN
・ 新RDN
・ 旧DN削除フラグ
・ 追加DN
・ 削除DN
どうした ・ 要求か応答かの情報
・ 要求や要求に対する結果
・ エラーコード
Symfoware ServerのNativeインタフェースと連携した場合
Symfoware ServerのNativeインタフェース(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 ServerのNativeインタフェースと連携して、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アプリケーションのユーザ認証機能
・ シングル・サインオンの「パスワード認証」機能
・ シングル・サインオンの「証明書認証」機能
J2EEアプリケーションが独自にユーザ認証機能を実装している場合には、「7.4 アプリケーションインタフェース詳細」に記載 したメソッドでユーザIDを設定することによって、Webサーバ接続情報のWeb認証ユーザ名として各プロトコルで情報を伝播し、
各監査ログに情報を出力できます。
CORBAアプリケーションなどからデータベースにアクセスする場合にはSymfowareが用意するプロシジャルーチンを直接 実行してWebサーバ接続情報を設定することも可能です。すでにプロシジャルーチンでWebサーバ接続情報が設定され ている状態で、プロシジャルーチンを実行した場合には設定されている情報は上書きされます。
不正アクセス追跡方法
データベース(Symfoware)への不正アクセスが確認された場合、以下のように追跡できます。
Webサーバ/Webクライアントの追跡
1. Symfowareの監査ログに出力される「Web認証ユーザ名」により、不正アクセスを行ったユーザ名を特定できます。
2. Symfowareの監査ログに出力される「WebサーバのIPアドレス(またはホスト名)」により不正ユーザが侵入したWebサー
バを特定できます。
3. 2)によりWebサーバが特定できれば、Webサーバのアクセスログから不正アクセスしたWebクライアントを特定できます。
注意
Webクライアントがプロキシサーバを経由してWebサーバにアクセスしている場合には、Webクライアントの特定はできません。
アプリケーションサーバの追跡
Symfowareの監査ログに以下が出力されます。以下の情報から不正ユーザが侵入したアプリケーションサーバを特定す
ることが可能です。
Symfowareの監査ログの項目 出力内容
アプリケーション/RDBコマンドのプロセスID IJServerプロセスのプロセスID アプリケーション/RDBコマンドを実行したマシンのホスト
名/IPアドレス
IJServerを運用するマシンのホスト名また はIPアドレス
モジュール名 IJServer名
不正アクセス経路の追跡
WebサーバのリクエストIDをアプリケーションサーバが伝播して各監査ログに出力するため、リクエストIDを元に各監査ログを 対応付けて、どのように不審者がデータベースにアクセスしたかを追跡することも可能です。不審者がどのように侵入したかを 確認することで、システムの脆弱性の存在を早期に確認することが可能となり、適切なセキュリティ対策を実施することが できます。
また、監査ログを対応付けることにより、各種アクセスログの情報から不正ユーザがその他不正行為を行っていないかを確認 することも可能です。
Interstage シングル・サインオンの追跡
以下の手順により、Interstage シングル・サインオンで認証を行った不審者がサインオンからサインオフまでに行った証跡を調 べることができます。
1. Symfowareの監査ログに出力される「WebサーバのリクエストID」を特定します。
2. Interstage シングル・サインオンの業務サーバのアクセスログで、1.のリクエストのレコードを特定します。
3. 2.のレコードに記載されている「セションID」を特定します。
4. Interstage シングル・サインオンの認証サーバ、およびリポジトリサーバのアクセスログ、およびセション管理ログで、3.の
「セションID」のレコードを特定します。
5. 4.のレコードから、サインオン操作からサインオフ操作までに行った行為を追跡することができます。
6. Interstage シングル・サインオンの業務サーバのアクセスログで、3.の「セションID」のレコードを特定します。
7. 6.のレコードから、そのユーザがアクセスした全ての「WebサーバのリクエストID」を特定します。
8. 7.の全ての「WebサーバのリクエストID」を元に、不審者が業務システムで行った行為を追跡することができます。
設定方法
Symfoware監査ログにWebサーバ接続情報/IJServer名を出力する場合、以下の設定が必要です。
・ JDBCデータソース定義の設定
SymfowareのJDBCデータソースを定義する時に、「監査ログへのWebサーバ接続情報出力」を「出力する」に設定し てください。