WebOTXを利用する場合のセキュリティ対策の設定

本章の内容は、日本政府が情報セキュリティ対策のための統一基準を定めた、「政府機関等の情報セキュリティ対策のための統一基準群(平成28年度版)」(http://www.nisc.go.jp/active/general/kijun28.html)の内容に基づいています。

出展:「府省庁対策基準策定のためのガイドライン (平成 28 年度版)」
https://www.nisc.go.jp/active/general/pdf/guide28.pdf

「府省庁対策基準策定のためのガイドライン (平成 28 年度版)」
https://www.nisc.go.jp/active/general/pdf/guide28.pdf) を加工して作成。

1. WebOTX

1.1. 本章の概要

本章では、WebOTXを利用する上で、実施すべきセキュリティ対策について説明します。

1.2. 認証・アクセス制御・権限管理

システムにログインするユーザの認証、アクセス制限、権限管理は、システムのセキュリティを高める上で重要な役割を果たします。 WebOTXに関わる主なユーザとして、OSで管理するユーザ情報、WebOTXの運用管理操作を行うユーザ(運用管理ユーザ)、配備されたアプリケーションにログインするユーザがあります。 本章では、これらのユーザのうち、運用管理ユーザのセキュリティ対策について説明します。

1.2.1. 運用管理ユーザの作成

1.2.1.1. セキュリティ対策指針と提供機能

運用管理ユーザを適切に管理し、不正アクセスを防止するために以下のことを推奨します。

ユーザ管理の詳細については、[ 構築・運用: ドメインの構築 > ユーザ管理 > ユーザ管理の概要 ]を参照してください。

1.2.1.2. 利用手順

WebOTXの運用管理ユーザはFileレルムを認証レルムとして使用する必要があります。 運用管理ユーザの作成・削除方法は、[ドメインの構築 > ユーザ管理 > Fileレルムを利用したユーザ管理 > ユーザ]を参照してください。

パスワードの変更手順は、[ 構築・運用: ドメインの構築 > ユーザ管理 > Fileレルムを利用したユーザ管理 > ユーザ > ユーザの更新 > パスワードの変更]を参照してください。

その他、アプリケーションを使用するためのユーザもWebOTXで管理することができます。アプリケーション向けのユーザは使用する認証レルムにより作成方法、削除方法が異なります。それぞれ以下を参照してユーザを作成・削除してください。

1.2.2. 運用管理ユーザの無効化

1.2.2.1. セキュリティ対策指針と提供機能

ユーザ管理の手段として、ユーザの作成・削除以外に、使用しないユーザを無効化しておくことで、それらのユーザに対する不正ログインを防止することができます。 WebOTXでは、運用管理ユーザを無効化する機能を提供しています。

1.2.2.2. 利用手順

運用管理ユーザの有効化/無効化はcreate-file-userコマンド、またはupdate-file-userコマンドの--enableオプションに、有効化の場合はtrue、無効化の場合はfalseを指定することで切り替えることができます。

[運用管理コマンドを利用する場合]

otxadmin > update-file-user --enable <true/false> --authrealmname admin-realm <運用管理ユーザ名>

また、統合運用管理ツールのユーザ管理画面からも有効化/無効化を切り替えることができます。詳細については、 [構築・運用: ドメインの構築 > ユーザ管理 > Fileレルムを利用したユーザ管理 > ユーザ] を参照してください。

1.2.3. 認証のセキュリティ強度の向上

1.2.3.1. セキュリティ対策指針と提供機能

認証のセキュリティ強度を向上させるための手段として、ユーザのパスワード認証のセキュリティを強化することが考えられます。 WebOTXでは、管理するユーザのパスワード認証のセキュリティを強化するために、以下の機能を提供しています。

1.2.3.2. 利用手順

パスワード認証のセキュリティを強化のための機能の利用手順を説明します。

1.2.4. 認証情報の漏えい対策

1.2.4.1. セキュリティ対策指針と提供機能

認証情報の漏えいを防ぐ手段として、認証情報の暗号化、認証情報へのアクセス制限などが考えられます。 WebOTXでは、運用管理ユーザの認証情報の漏えいを防ぐために、以下の機能を提供しています。

1.2.4.2. 利用手順

パスワードの暗号化については、インストール時の状態ですべてのパスワードが暗号化されており、復号化された状態で通信、保存されることはありません。以下、ロール機能、パスワードの有効期限管理機能の利用方法を説明します。

1.2.5. ロール

1.2.5.1. セキュリティ対策指針と提供機能

ロールとは、ユーザ/グループが持つ役割の事です。個人、またはグループにロールを付与することで、そのユーザまたはグループが実行できる処理を限定したり、アクセスできるデータを制御することができます。 WebOTXでは、運用管理ユーザ向けにロール機能を提供しています。

ロール機能の詳細については、[ロール]を参照してください。

1.2.5.2. 利用手順

ロール機能の利用方法についていくつかの例を挙げて説明します。運用管理ユーザ向けのロールは、運用管理ユーザが所属するグループに付与することで運用管理操作の実行権限を付与します。

例1 設定の閲覧ユーザの作成

運用管理ユーザをlogin以外のグループに所属させないように設定した状態で、ロール機能を有効化すると、設定の閲覧のみ可能な運用管理ユーザを作成することができます。

[運用管理コマンドを利用する場合]

  1. 運用管理ユーザviewer1を作成します。
    otxadmin > create-file-user --authrealmname admin-realm --userpassword xxxxxx viewer1
  2. ロール機能を有効化します。
    otxadmin > set server.admin-service.role-manager.enabled=true
  3. ログアウトします。
    otxadmin > logout 
  4. viewer1ユーザでログインし、運用管理操作を行います。
    otxadmin > login --user viewer1 --password xxxxxx 

上記のようにlogin以外のグループに所属しない運用管理ユーザとして、viewerユーザが既定で用意されています。viewerユーザは無効化されていますので、使用する場合は有効化して利用してください。

例2 アプリケーション配備ユーザの作成

ユーザ管理やドメイン管理など、業務上使用頻度の高いロールはあらかじめ用意されています。 それらのロールに対してはすでに必要なコマンド及び操作が登録されているため、ロール機能を有効化し、グループに対してロールを付与するだけで使用することができます。 ここでは、アプリケーション配備者向けのロールを使用するユーザを作成します。

[運用管理コマンドを利用する場合]

  1. 運用管理ユーザdeployer1を作成します。このときdeployersというグループに所属させます。
    otxadmin > create-file-user --authrealmname admin-realm --groups deployers --userpassword xxxxxx deployer1
  2. ロール機能を有効化します。
    otxadmin > set server.admin-service.role-manager.enabled=true
  3. 運用管理ユーザdeployer1のグループdeployersに対してdeployerロールを付与します。
    otxadmin > add-custom-role-config --role deployer --kind group deployers
  4. ログアウトします。
    otxadmin > logout 
  5. deployer1ユーザでログインし、運用管理操作を行います。
    otxadmin > login --user deployer1 --password xxxxxx 

ロール機能の利用手順の詳細については、[構築・運用: ドメインの構築 > ユーザ管理 > ロール > 設定方法]を参照してください。

1.2.6. 通信の暗号化

1.2.6.1. セキュリティ対策指針と提供機能

インターネット上で送受信されるデータは、盗聴、改ざんを防止するため、通信時に暗号化することが推奨されています。 WebOTXでは、クライアントから運用管理コマンドを実行する際にprotocolオプションにjmxmpを指定した上で、secureオプションをtrueにすることで、ドメインとの通信にSSL/TLSを利用することができます。

1.2.6.2. 利用手順

ドメインとの通信にSSL/TLSを利用するためには以下の設定を行います。

[運用管理コマンドを利用する場合]

  1. 以下のコマンドを実行してJMXMPプロトコルを使用した通信を有効化します。
    otxadmin > set server.admin-service.jmx-connector.system-option.enabled=true
  2. 以下のコマンドを実行してSSLを有効化します。
    otxadmin > set server.admin-service.jmx-connector.system-option.security-enabled=true
  3. ドメインを再起動します。

以上で設定は完了です。

クライアントからSSLを利用してドメインに接続するにはコマンドに--secureオプションでtrueを指定します。loginコマンドの実行例を以下に示します。

otxadmin > login --user admin --password adminadmin --port 6712 --protocol jmxmp --secure=true

1.2.7. アプリケーションのアクセス制御

1.2.7.1. セキュリティ対策指針と提供機能

アプリケーションを経由しての攻撃に対処するために、あらかじめ実行できるプログラムやアクセス可能な領域を限定することで、安全性を強化することができます。

WebOTXでは、各サービスが動作するために必要なセキュリティポリシーをデフォルトで以下のファイルに記述しています。

${INSTANCE_ROOT}/config/server.policy

アプレット (またはセキュリティマネージャの下で動作しているアプリケーション) が、ファイルの読み書きなど、セキュリティ保護された操作を行うためには、その操作を行うためにアクセス権を付与する必要があります。必要に応じてserver.policyファイルに必要な権限を設定するようにしてください。

1.2.7.2. 利用手順

セキュリティポリシー、ポリシーファイルの記述に関する詳細は、Java SDK の 「セキュリティ」 に関する情報を参照してください。

1.3. ログ・情報収集

1.3.1. ログ概要

1.3.1.1. セキュリティ対策指針と提供機能

WebOTXは標準設定で、WebOTXに関する操作の記録や、利用者のアクセス履歴をログファイルに出力しますので、これらを不正侵入や不正操作の検証に利用することができます。 WebOTXがログに出力する情報のうち、セキュリティ上の問題の調査に活用できるものは以下の通りです。

ログについての詳細は、[ 構築・運用 > ログ ] を参照してください。

1.3.1.2. 利用手順

WebOTXが出力するログによるセキュリティ検証を行う場合は、具体的には以下のログを利用してください。

1.3.2. ログ管理

1.3.2.1. セキュリティ対策指針と提供機能

各種ログ出力からセキュリティの問題を調査するためには、ログファイルは適切な情報な出力されており、 なおかつ十分な期間保全されている必要があります。 WebOTXでは、これらの事項を保証するために、以下の機能を提供しています。

1.3.2.2. 利用手順

1.3.3. パフォーマンス情報の取得

1.3.3.1. セキュリティ対策指針と提供機能

システムが攻撃を受けた際、メモリやCPUの使用率、コネクション数が普段とは異なる場合があります。このような変化を監視しておくことで、攻撃にいち早く気付くことができます。 WebOTXには統計レポートという機能があり、一定時間ごとにメモリの使用率、CPUの使用率を含む様々な性能情報を収集し、CSVファイルへ出力することができます。

1.3.3.2. 利用手順

統計レポート機能は以下のコマンドを実行して有効化します。

[運用管理コマンドを利用する場合]

otxadmin > set server.diagnostic-service.statistics-report.enabled=true

統計レポートの詳細な利用方法は、[ 構築・運用 > 診断サービス > 統計レポート ] を参照してください。

1.3.4. 各種情報の収集

1.3.4.1. セキュリティ対策指針と提供機能

WebOTXでは診断サービスという機能を提供しています。診断サービスは、アプリケーションサーバの障害解析に必要な情報を、複雑な手順や設定を行うことなく取得し、 さらに取得した情報を収集して1つのアーカイブファイルにまとめる機能です。 主に以下の情報を、不正侵入や不正操作などの検証に利用できます。

診断サービスで収集可能な情報についての詳細は、 [ 構築・運用 > 診断サービス > 診断サービスの設定 ] を参照してください。

1.3.4.2. 利用手順

診断サービスの利用方法について説明します。
まず、取得したい情報をあらかじめ設定しておく必要があります。

[運用管理コマンドを利用する場合]

例) 運用管理コマンドでシステム情報をtrueに変更
 otxadmin > set server.diagnostic-service.system=true

次のコマンドを入力して、診断を実行します。

例) ドメイン1に対して診断サービスを実行
 otxadmin > generate-diagnostic-report domain1

このコマンド実行によって、情報を収集したzipファイルが作成されます。

診断サービスの利用方法についての詳細は、 [ 構築・運用 > 診断サービスの実行 ] を参照してください。

1.4. 脆弱性・攻撃対策

1.4.1. パッチ適用

1.4.1.1. セキュリティ対策指針と提供機能

セキュリティ脆弱性のWebOTX製品への影響に関しては、製品Webサイトにて重要なお知らせとして順次公開します。 重要なお知らせの[影響のある製品]を確認し、利用している製品・バージョン・対象OSに該当する場合、[対処方法]または[回避方法]を参照して対策を実施してください。 [対処方法]としてパッチ適用が記載されている場合、サポートポータルから利用製品・バージョン・OSのパッチをダウンロードして適用してください。

(注意) 一部を除いてパッチモジュールは製品保守契約を結んでいただいたお客様に限定して提供させていただいています。
まだ契約がお済でないお客様は、保守契約締結の後、ダウンロードをお願いいたします。

1.4.1.2. 利用手順

重要なお知らせの最新情報については下記をご確認ください。
http://jpn.nec.com/webotx/index.html

重要なお知らせの[対処方法]にパッチ適用およびパッチ公開ページへのリンクが記載されている場合、リンク先であるNECサポートポータルにて利用している製品・バージョン・OSに対応するパッチのREADMEとパッチモジュールをダウンロードしてください。パッチの適用方法に関してはREADMEを参照してください。

NECサポートポータル(保守契約者のみ)
https://www.support.nec.co.jp/PSLoginSupportId.aspx

1.5. その他の対策

1.5.1. 内蔵WebサーバでのSSL利用

1.5.1.1. セキュリティ対策指針と提供機能

WebOTXでは、Apache HTTP ServerベースのWebOTX Webサーバとは別にJavaベースの内蔵Webサーバを提供しています。内蔵Webサーバにはクライアントとのやり取りを行うリスナと呼ぶコンポーネントが存在します。既定の状態で「HTTPリスナ1」と「HTTPリスナ2」がありますが、SSL通信を行うリスナは「HTTPリスナ2」です。

内蔵Webサーバ利用時にクライアントとの間の通信でセキュリティを確保するには、SSL通信を行うリスナである「HTTPリスナ2」を有効にし、このHTTPリスナ2に対してクライアントから [https://〜] とアクセスします。

また、HTTPリスナ2の既定のポート番号は443となっていますので、ファイアウォールやプロキシでもしこのポート番号を遮断しているる場合は許可してください。

Caution
内蔵Webサーバを利用したSSL通信を利用する場合は、アプリケーションをエージェントプロセスに配備する必要があります。プロセスグループ上に配備したアプリケーションでSSL通信を行う場合は外部Webサーバをご利用ください。
1.5.1.2. 利用手順

内蔵WebサーバでSSLを利用する場合、セキュリティ上非SSL用のリクエスト受付口(HTTPリスナ1)は不要です。ここではまずその設定を行います。

以上が内蔵WebサーバでSSLを利用する基本的な設定になります。この後、内蔵Webサーバに対してサーバ証明書の設定や必要に応じてクライアント認証の設定、暗号化アルゴリズムの設定などを行います。引き続き [ リファレンス > 設定共通SSL設定 ] を参照してください。


2. Webサーバ

2.1. 本章の概要

本章では、WebOTXで利用するWebサーバに関するセキュリティ対策を説明します。

2.2. 認証・アクセス制御・権限管理

2.2.1. 特定クライアントに対するアクセス制御

2.2.1.1. セキュリティ対策指針と提供機能

WebOTX Webサーバでは、接続元のIPアドレスやネットワークドメイン単位に、アクセスを許可したり禁止したりすることができます。 それによって、公開されている情報の重要度やインターネットからアクセス可能か否か等に応じて、部外者からのアクセスを防いだり、攻撃を防いだりすることを検討する必要があります。

2.2.1.2. 利用手順

Webサーバの定義情報ファイル (httpd.conf) を直接編集して設定を行います。定義例は次の通りです。

例) http://server/webapp 配下に配備されているWebアプリケーションに対して、 yourdomain.com からのアクセスを禁止する場合
<Location /webapp>
  Order Deny,Allow
  Deny from yourdomain.com
   ...
</Location>

設定方法の詳細は、[ 構築・運用 > ドメインの構築 > Webサーバガイド > 運用 > 特定クライアントに対するアクセス制限 ] を参照してください。

2.2.2. 通信状況によるアクセス制御

2.2.2.1. セキュリティ対策指針と提供機能

攻撃等によるサーバリソースの枯渇を防ぐための対策として、WebOTX Webサーバでは、最大同時接続数を指定することが可能です。 最大同時接続数の既定値400を超えるユーザからの接続が見込まれる場合は、そのユーザ数に応じた接続数に変更してください。その際、ブラウザによっては6本程度までの同時接続が行われることをご留意ください。

それ以外の特定クライアントに限定したアクセス数の制限や、帯域制限を行うことも考えられますが、WebOTXではそうした機能を提供しておりません。別途、そのための製品をご利用ください。

2.2.2.2. 利用手順

最大同時接続数の変更方法は、次の通りです。

[運用管理コマンドを利用する場合]

  1. 「最大同時接続数」の値を変更します。
    otxadmin > set server.WebServer.MaxClients=250
  2. 変更反映のため、Webサーバを再起動します。
    otxadmin > invoke server.WebServer.stop
    otxadmin > invoke server.WebServer.start

最大同時接続数の変更に伴って見直すべき他の項目など、詳細は、[ 構築・運用 > ドメインの構築 > Webサーバガイド > 運用 > 最大同時接続数の変更 ] を参照してください。

2.3. ログ・情報収集

2.3.1. ログ

2.3.1.1. セキュリティ対策指針と提供機能

WebOTX Webサーバにおいて、既定で出力するログと、その出力内容は次の表の通りです。

WebOTX Webサーバへのアクセスで問題が発生した場合は、エラーログ (error.log/error_log) ファイルを確認し、問題の原因につながる情報が出力されていないかを確認してください。また、アクセスログ (access.log/access_log/ssl_request.log/ssl_request_log) で、想定外のクライアントからのリクエストが無いかや、想定されたリクエスト数かを定期的に確認することも検討する必要があります。

ログファイル名 出力内容
error.log (Windows)
error_log (UNIX)
サーバ起動/停止、および、サーバ動作に問題が発生した場合に情報を出力します。既定では、WebOTX Webサーバにバンドルする rotatelogs を利用して、ファイルサイズ10Mバイト、世代数3でローテートします。
access.log (Windows)
access_log (UNIX)
HTTP通信時のアクセス情報を出力します。1 行が 1 リクエストに対応しています。既定では、WebOTX Webサーバにバンドルする rotatelogs を利用して、ファイルサイズ10Mバイト、世代数5でローテートします。既定の設定での出力イメージは次の通りです。
127.0.0.1 - - 2017-10-01 10:20:28 "GET /manual/ HTTP/1.1" 200 9743 1656250
左から順に、次の項目を出力します。
(IP アドレス) (リモートログ名) (認証リモートユーザ名) (アクセス日) (アクセス時刻) "(リクエスト行)" (HTTPステータスコード) (送信バイト数) (処理時間[マイクロ秒])
ssl_request.log (Windows)
ssl_request_log (UNIX)
HTTPS通信時のアクセス情報を出力します。1 行が 1 リクエストに対応します。既定では、WebOTX Webサーバにバンドルする rotatelogs を利用して、ファイルサイズ10Mバイト、世代数5でローテートします。既定の設定での出力イメージは次の通りです。
2017-10-01 10:20:28 127.0.0.1 TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 "GET /manual/ HTTP/1.1" 200 9743 15625
左から順に、次の項目を出力します。
(アクセス日) (アクセス時刻) (IP アドレス) (プロトコルバージョン) (暗号スイート) "(リクエスト行)" (HTTPステータスコード) (送信バイト数) (処理時間[マイクロ秒])
mod_jk-24.log Webサーバプラグインモジュールの動作トレースや障害内容を出力します。
2.3.1.2. 利用手順

エラーログのフォーマットは、WebOTX Webサーバの定義情報ファイル (httpd.conf / ssl.conf) の、ErrorLogFormatディレクティブで、また、アクセスログのフォーマットは、LogFormatディレクティブで変更可能です。変更後は、WebOTX Webサーバの再起動を行ってください。

なお、通常、アクセスログは、リクエスト処理が終わったタイミングで、リクエストを受け付けた時刻を出力します。例えば、リクエストの受け付け時刻と、リクエスト処理の終了時刻をミリ秒単位まで両方記録する場合の定義例は次の通りです。

LogFormat "%h %l %u [%{%Y-%m-%d %H:%M:%S}t.%{msec_frac}t] [%{end:%Y-%m-%d %H:%M:%S}t.%{end:msec_frac}t] \"%r\" %>s %b %D" common

定義情報ファイル内の、ログに関するディレクティブ、および、ログフォーマット文字列については、[ リファレンス > 設定 > HTTPサーバ > WebOTX Webサーバ設定方法 > ログ出力 ] を参照してください。

2.3.2. WebOTX Webサーバの統計情報

2.3.2.1. セキュリティ対策指針と提供機能

WebOTX Webサーバでは、mod_status モジュールを利用した統計情報採取機能を提供しています。これにより、運用管理エージェント上で、現在の接続数や、総アクセス数等を、運用管理コマンドや、統合運用管理ツールで参照することが可能です。 これらの情報により、過負荷になっていないか等をご確認ください。

採取可能な情報については、[ リファレンス > MBean > 統計情報一覧 > 採取可能なパフォーマンス情報 > WebServerStats ] を参照してください。

2.3.2.2. 利用手順

運用管理コマンドにより、WebOTX Webサーバの統計情報を採取する手順は次の通りです。

  1. モジュールモニタリングレベルをLOW、または、HIGHに変更します。
    otxadmin > set server.monitoring-service.module-monitoring-levels.web-server=LOW
  2. モジュールモニタリングレベル変更反映のため、Webサーバを再起動します。
    otxadmin > invoke server.WebServer.stop
    otxadmin > invoke server.WebServer.start
  3. 統計情報を採取します。
    otxadmin > get --monitor server.web-server.*

統合運用管理ツール/運用管理コンソールからの情報取得方法等については、[ 構築・運用 > モニタリング > モニタリング情報の採取 ] を参照してください。

2.4. 脆弱性・攻撃対策

2.4.1. 最新パッチ適用について

2.4.1.1. セキュリティ対策指針と提供機能

WebOTX Webサーバで脆弱性が見つかった場合は、その影響有無等の情報を、製品Webサイトで重要なお知らせとして公開し、脆弱性の影響がある場合は、対応するパッチを公開しています。

また、WebOTX Webサーバは、Apache HTTP Server をベースとしており、SSL (HTTPS) 通信を実現する mod_ssl モジュールでは、 OpenSSL のライブラリをリンクしています。 Apache HTTP Server Project、および、OpenSSL Software Foundation から公開される脆弱性に関する情報も有用です。

セキュリティ問題に関する情報は変化していますので、常に最新の情報をご確認頂くよう、ご留意ください。

2.4.1.2. 利用手順

WebOTX Webサーバの脆弱性に関する情報をはじめ、WebOTXに関連する重大な障害や、他製品の障害によるWebOTXへの影響、その他重要なお知らせは、次のページで公開しています。

Apache HTTP Serverと、OpenSSL の脆弱性情報は、次のページで公開されています。

2.5. その他の対策

2.5.1. SSL

2.5.1.1. セキュリティ対策指針と提供機能

クライアントとWebサーバ間の通信における情報漏洩を防ぐために、SSLを利用して通信データを暗号化することが有効です。 WebOTX Webサーバでは、OpenSSLライブラリを利用したmod_sslモジュールを使用して、SSL 3.0、および、TLS 1.0/1.1/1.2/1.3 を利用し、かつ、128Bit以上の暗号化方式をサポートしています。また、SSLクライアント認証機能も利用可能です。

2.5.1.2. 利用手順
SSL通信の有効化

WebOTX Webサーバでは、評価用のサーバ証明書と秘密鍵ファイルを提供していますので、インストール直後でも、評価用のサーバ証明書を利用することにより、 次のコマンドにより、SSL通信機能を有効化して WebOTX Webサーバを再起動することで、SSL通信を利用することができます。

[運用管理コマンドを利用する場合]

otxadmin > set server.WebServer.security-enabled=true

また、SSL通信で利用するサーバ証明書や、秘密鍵等は、WebOTX WebサーバのSSL通信に関する定義情報ファイル (ssl.conf) にて指定します。 関連する主なディレクティブは次の通りです。

ディレクティブ名 説明
SSLCertificateFile サーバ証明書のパスを指定します。通常、サーバ証明書のサブジェクト(Common Name(CN))に設定する値と、WebOTX Webサーバが動作するサーバサイトURL (例: https://www.yourdomain.com/ の場合、www.yourdomain.com) を一致させる必要があります。
SSLCertificateKeyFile 秘密鍵ファイルのパスを指定します。

設定例は次の通りです。

<VirtualHost _default_:443>
    :
ServerName <バーチャルサーバのFQDN/IPアドレス>:443
    :
SSLEngine on
SSLCertificateFile "/opt/WebOTX/WebServer24/conf/ssl.crt/server.crt"
SSLCertificateKeyFile "/opt/WebOTX/WebServer24/conf/ssl.key/server.key"
    :
</VirtualHost>

詳細は、[ 構築・運用 > ドメインの構築 > Webサーバガイド > 運用 > SSL(HTTPS通信) 設定方法 ]、および、[ リファレンス > 設定 > 共通SSL設定 > WebOTX Webサーバを使う場合 ] を参照してください。 なお、サーバ証明書を第三者機関 (認証局) で発行した場合は、認証局の指定に従ってください。その際、Apache HTTP Server 向けの説明を参考にしてください。

また、定義情報ファイル内の、その他のSSL通信に関するディレクティブについては、[ リファレンス > 設定 > HTTPサーバ > WebOTX Webサーバ設定方法 > SSL定義 ] を参照してください。

SSLクライアント認証

SSLクライアント認証を利用する場合は、WebOTX Webサーバの定義情報ファイル (ssl.conf) にて、設定を行います。関連する主なディレクティブは次の通りです。

ディレクティブ名 説明
SSLCACertificateFile クライアント証明書を発行した認証局 (CA) の証明書を指定します。
SSLVerifyClient クライアント側での証明書の提示方式を設定します。次のいずれかを指定します。
none : クライアント認証を要求しない。
optional : クライアント認証を要求する。クライアントから有効な証明書が提示されなくても、処理を続行します。
require : クライアント認証を要求する。クライアントから有効な証明書が提示されない場合、エラーを発生させます。
optional_no_ca : クライアント認証を要求する。クライアントから提示された証明書が検証できなくても、処理を続行します。
SSLVerifyDepth クライアント証明書に署名した認証局の階層の最大数を指定します。

設定例は次の通りです。

<VirtualHost _default_:443>
    :
SSLCACertificateFile "/opt/WebOTX/WebServer24/conf/ssl.crt/ca-bundle.crt"
SSLVerifyClient require
SSLVerifyDepth 3
    :
</VirtualHost>

詳細は、[ リファレンス > 設定 > 共通SSL設定 > WebOTX Webサーバを使う場合 > 双方向認証の場合の手順 ] を参照してください。 なお、クライアント証明書を第三者機関 (認証局) で発行した場合は、認証局の指定に従ってください。その際、Apache HTTP Server 向けの説明を参考にしてください。

2.5.2. 不要機能 (モジュール) の無効化

2.5.2.1. セキュリティ対策指針と提供機能

WebOTX Webサーバの既定の定義情報ファイル (httpd.conf) では、必須の機能、および、一般的に有用な機能を提供するモジュールを、LoadModuleディレクティブにより有効化しています。ただし、システムの構成によっては、利用しないモジュールもあると考えられます。 それらのモジュールを有効なままにしておくことによって、脆弱性の影響を受ける可能性が高まりますので、セキュリティ強化や、無駄なリソースの消費を避けるためにも、できる限り不要な機能は無効化してください。

2.5.2.2. 利用手順

定義情報ファイルにおいて、有効になっている機能 (モジュール) を、無効化するための手順は次の通りです。定義情報ファイルの変更後は、変更を反映するためにWebOTX Webサーバの再起動が必要です。

例) mod_cgid モジュールを無効化する場合
変更前 :
LoadModule cgid_module /opt/WebOTX/WebServer24/modules/mod_cgid.so
変更後 : 行頭に # を付けてコメントアウトします。
#LoadModule cgid_module /opt/WebOTX/WebServer24/modules/mod_cgid.so

2.5.3. ディレクトリインデックスの非表示化

2.5.3.1. セキュリティ対策指針と提供機能

WebOTX Webサーバでは、定義情報ファイル (httpd.conf) 中のDirectoryディレクティブで指定したディレクトリに対して、OptionsディレクティブでIndexesを指定しない場合、ディレクトリインデックス表示機能が「無効」 (ディレクトリ一覧を非表示) になります。

この機能を「有効」にした状態で、http://<host_name>/ にアクセスした場合、DirectoryIndex ディレクティブで指定したファイル (例えば、index.html) が対象ディレクトリに存在しなければ、ディレクトリ内のファイル一覧が表示されます。これにより、ファイルやディレクトリ構成等を暴露することになり、セキュリティ上問題となる可能性があります。

httpd.con中の既存の Options ディレクティブを変更する場合や、新たに Directory ディレクティブを追加する場合は、上記の点にご留意ください。

2.5.3.2. 利用手順

WebOTX Webサーバのディレクトリインデックス表示機能は、対象 Directory ディレクティブ内の Options ディレクティブで Indexes オプションを指定するかどうかによって、有効 / 無効を切替えます。また、+ や - 付きで指定した場合は、親ディレクトリの設定に対してマージされます。+ を付けると追加され、- を付けると削除されます。

なお、Directory ディレクティブ内に、Options ディレクティブの指定が無い場合、ディレクトリインデックス機能は無効となります。

ディレクトリインデックス表示機能を有効にする場合の定義例は、次の通りです。

例) DocumentRootディレクトリへのアクセスでディレクトリインデックスを表示させ、その配下のspecディレクトリでは表示させない場合
<Directory "/opt/WebOTX/domains/domain1/docroot">
  Options Indexes
  …
</Directory>
<Directory "/opt/WebOTX/domains/domain1/docroot/spec">
  Options -Indexes
  …
</Directory>

詳細は、[ リファレンス > 設定 > HTTPサーバ > WebOTX Webサーバ設定方法 > ディレクトリ一覧表示機能の無効化 ] を参照してください。

2.5.4. 公開しないファイルを非公開にする

2.5.4.1. セキュリティ対策指針と提供機能

WebOTX Webサーバには、そのベースとなっている Apache HTTP Server のマニュアルも含まれており、既定の定義情報ファイル (httpd.conf) では、http://<host_name>/manual で、マニュアルへのアクセスが可能となっています。 ただし、システム本番運用開始後は、セキュリティ観点で「不要なページを公開しない」という考え方から、当該マニュアルを非公開、あるいは、公開を制限することを検討してください。

2.5.4.2. 利用手順

Apache HTTP Serverマニュアルを非公開にするには、WebOTX Webサーバの定義情報ファイル (httpd.conf) 内のマニュアルに対するAliasMatchディレクティブをコメントアウトします。変更例は次の通りです。

#AliasMatch ^/manual(?:/(?:ja|da|de|en|es|fr|ko|pt-br|ru|tr|zh-cn))?(/.*)?$ "<WebOTXインストールディレクトリ>/WebServer24/manual$1"

なお、公開を制限する方法については、[ 特定クライアントに対するアクセス制御 ] を参照してください。

また、WebOTX Webサーバの定義情報ファイル (httpd.conf / ssl.conf) において、Directory ディレクティブで定義しているディレクトリに、公開すべきではない、不要なファイルが存在しないことを確認してください。

2.5.5. HTTPレスポンス中のバージョン情報削除

2.5.5.1. セキュリティ対策指針と提供機能

WebOTX Webサーバが生成するエラードキュメントのフッタや、クライアントへのレスポンスの Server ヘッダには、既定では、次のような製品名やバージョンに関する情報が含まれます。

WebOTX_Web_Server/2.4.xx (Win64) OpenSSL/1.x.x Webserver_Plugin/1.2.x.x

Webサーバの正確なバージョン情報が含まれていることで、その脆弱性を狙った有効な攻撃を特定しやすくなります。そのため、バージョン情報を非表示にすることを検討する必要があります。

2.5.5.2. 利用手順

WebOTX Webサーバの設定ファイル (httpd.conf) に、ServerTokens ディレクティブの指定を行うことで、バージョン情報を削除し、製品名のみにすることが可能です。ただし、WebOTX Webサーバの製品名そのものを削除することはできません。

ServerTokens ProductOnly

3. アプリケーション

3.1. 本章の概要

本章では、WebOTX上で動作するアプリケーションに関するセキュリティ対策を説明します。

3.2. 認証・アクセス制御・権限管理

3.2.1. ロール

3.2.1.1. セキュリティ対策指針と提供機能

ロールとは、ユーザ/グループが持つ役割の事です。Webアプリケーションの配備記述子(web.xml, nec-web.xml)でアクセス制限したいURLにロールを割り当ててロールとユーザ/グループのマッピングを指定することで、特定の個人やグループのみにアクセスを限定する事ができます。また、アクセス制限するURLには拡張子指定やディレクトリ配下全てのパターンも指定することができるためアクセス可能領域を細かく限定することが可能です。

3.2.1.2. 利用手順

ロールの定義内容と相関関係は以下のとおりです。

web.xml
web.xml 配備記述子要素 説明
web-app servlet security-role-ref role-name アプリケーションのコード上で使用しているロール名を指定します。本設定とrole-link をマッピングすることによって、コードの実装を変える事無く正しいロールにリンクさせることが可能となります。
role-link アプリケーションのコード上で使用しているロール名にマッピングするロール名を指定します。[web-app > security-role > role-name]に合致するロール名が定義されている必要があります。
security-constraint web-resource-collection web-resource-name アクセス制限設定の名称を定義します。
url-pattern アクセス制限の対象となるURLパターンを指定します。これによって特定のURLについてのアクセス制限が可能となります。web-resource-collection要素配下に複数指定可能です。
http-method アクセス制限の対象となるHTTPメソッド種別を指定します。web-resource-collection要素配下に複数指定可能で、指定が無い場合は全てのメソッドが対象になります。
auth-constraint role-name アクセス制限するURLへのアクセスを許可するロール名を指定します。[web-app > security-role > role-name]に合致するロール名が定義されている必要があります。
security-role role-name Webアプリケーションで利用する全てのロール名を定義します。
nec-web.xml
nec-web.xml 配備記述子要素 説明
nec-web-app security-role-mapping role-name 認証ユーザまたはグループに対応付けるロール名を指定します。[web-app > security-role > role-name]に合致するロール名が定義されている必要があります。
principal-name [role-name] に対応付ける認証ユーザ名を指定します。security-role-mapping 要素配下に複数指定可能です。
group-name [role-name] に対応付ける認証ユーザが所属するグループ名を指定します。security-role-mapping 要素配下に複数指定可能です。

配備記述子の作成方法や設定項目の詳細については [ アプリケーション開発 > Webアプリケーション > プログラミング・開発ガイド > Webアプリケーションのデプロイ > web.xmlデプロイメント記述子 ] をご覧ください。

3.2.2. Webアプリケーションのリソースへのアクセス制御

3.2.2.1. セキュリティ対策指針と提供機能

Webアプリケーションでは、web.xmlの<security-constraint>要素で、Webアプリケーションのリソースへのアクセスを制御できます。
しかし、Servlet 3.0未満の古い仕様に準拠したアプリケーションサーバではこの制御が十分ではなく、<security-constraint>要素で指定していないHTTPメソッドでリソースにアクセスする事が可能です。

これに対処する設定がServlet 3.0仕様で追加されたました。TomcatやWebOTX V9以前のバージョンからWebアプリケーションをV10.11に移行する場合は次に説明します設定を追加してください。

3.2.2.2. 利用手順

例えば次のように定義する事で、/resource配下へGETメソッドでアクセスする際にadminロールによる認証が必要となります。

  <security-constraint>
    <web-resource-collection>
      <web-resource-name>Protected Area</web-resource-name>
      <url-pattern>/resouce/*</url-pattern>
      <http-method>GET</http-method>
    </web-resource-collection>
    
    <auth-constraint>
      <role-name>admin</role-name>
    </auth-constraint>
  </security-constraint>
  

しかし、この設定では<http-method>要素で指定していないPOSTメソッドやPUTメソッドで/resource配下にアクセスすると、認証の必要なくアクセスが可能です。

<http-method>要素で指定したメソッド以外のメソッドでのアクセスを防御するには、次の通り<http-method-omission>要素で拒否したいHTTPメソッドを指定します。<auth-constraint>要素は子要素なしで指定します。

  <security-constraint>
    <web-resource-collection>
      <web-resource-name>Protected Area - Deny methods</web-resource-name>
      <url-pattern>/resouce/*</url-pattern>
      <http-method-omission>POST</http-method-omission>
      <http-method-omission>PUT</http-method-omission>
    </web-resource-collection>
    
    <auth-constraint/>
  </security-constraint>
  

上記設定を行う事で、<http-method>要素で指定したメソッド以外のメソッド(上記の例ではPOSTメソッドとPUTメソッド)でのリソースにアクセスした場合は403エラー(Forbidden)となります。

3.3. ログ・情報収集

3.3.1. 業務アプリケーションからのログ出力

3.3.1.1. セキュリティ対策指針と提供機能

Express、およびStandardのエージェントプロセス上で動作する業務アプリケーションでログを出力する場合、次の方法があります。

いずれの方法も、システムの情報やアプリケーションの稼働情報、お客様が入力した情報などを出力する可能性があり重要な情報となります。これらのファイルの出力場所やアクセス権限については十分配慮してください。

3.3.1.2. 利用手順

WebOTX ASがサポートするServlet/JSPのAPIは次をご覧ください。[ リファレンス > Java EEJavaTM Platform, Enterprise Edition (Java EE) 7 ]

agent.logについては [ 構築・運用 > ログWebOTXのログについてドメインを構成するサービスについて ] をご覧ください。また、プロセスグループのログについては [ プロセスグループ上で動作する業務アプリケーションのログ出力 ] をご覧ください。

ログの出力情報、最大ファイルサイズやログレベル、ローテーションの設定変更については、[ 構築・運用 > ログWebOTXのログ設定一覧 > WebOTX AS ログ設定一覧 ] をご覧ください。


3.3.2. プロセスグループ上で動作する業務アプリケーションのログ出力

3.3.2.1. セキュリティ対策指針と提供機能

Standard のプロセスグループ上で動作するアプリケーションの標準出力や標準エラー出力は、サーバアプリケーショントレースとして出力します。 また、JavaVMが出力する標準出力(GCログ、フルスレッドダンプ、など)は、サーバアプリケーショントレースおよびシステムトレースに出力します。 これらの情報は、アプリケーションの稼働情報を確認する重要な情報となります。さらに攻撃者による不正侵入や不正操作などの検証にも利用できます。

3.3.2.2. 利用手順

プロセスグループのログの利用手順については以下をご確認ください。

また、プロセスグループは多重度を設定することができるため、プロセスグループ上からファイルにログ出力を行う場合は以下を参照してください。

3.4. 脆弱性・攻撃対策

3.4.1. SQL インジェクション脆弱性

3.4.1.1. セキュリティ対策指針と提供機能

SQLインジェクションとは、アプリケーションのセキュリティ上の不備を利用してアプリケーションが想定しないSQL文を実行させることにより、データベースシステムを不正に操作する攻撃手法のことです。

以下は、アプリケーションの入力チェックに不備があり、SQL文として意味を持つ文字をそのまま受け入れてしまう場合の例です。
不正なデータとして、「' OR '1'='1」という文字列が入力されると、作成されるSQL文は「name='user1' AND password=''」と常に真となる 「'1'='1'」のOR条件となり、結果的にpersonテーブルのすべてのレコードが選択されるという、アプリケーションが想定していない結果となってしまいます。

以下で、Webアプリケーションでの対策の例を説明します。

3.4.1.2. 利用手順

WebOTXでは、本脆弱性への対策についての機能を特に提供していません。アプリケーションでの対策を実施してください。

3.4.2. OSコマンドイジェクション脆弱性

3.4.2.1. セキュリティ対策指針と提供機能

OSコマンドインジェクションとは、アプリケーションの入力パラメータにOSのコマンドを挿入することで、アプリケーションに 想定外のOSコマンド実行させ、任意のファイルの読み出し、変更、削除、パスワードの不正取得などを行う攻撃手法です。

以下で、Webアプリケーションでの対策の例を説明します。

3.4.2.2. 利用手順

WebOTXでは、本脆弱性への対策についての機能を特に提供していません。アプリケーションでの対策を実施してください。

3.4.3. ディレクトリトラバーサル脆弱性

3.4.3.1. セキュリティ対策指針と提供機能

ディレクトリトラバーサル攻撃とは、ファイル名やディレクトリ名に相対パス指定を用いることで、 プログラムが意図していないファイルやディレクトリにアクセスする攻撃です。
例えば、ファイル名に「../」など、上位のディレクトリを意味する文字列を用いることにより、 公開を意図していない親ディレクトリにアクセスします。

以下で、Webアプリケーションでの対策の例を説明します。

3.4.3.2. 利用手順

WebOTXでは、本脆弱性への対策についての機能を特に提供していません。アプリケーションでの対策を実施してください。

3.4.4. セッション管理の脆弱性

3.4.4.1. セキュリティ対策指針と提供機能

セッション管理の脆弱性は、セッションIDを盗用されるセッションハイジャック、 第三者の用意したセッションIDを使用させられるセッションフィクセイション(セッションの固定化) といった、悪意ある第三者がセッションIDを用いて利用者になりすます攻撃です。

以下の図はセッションハイジャック、セッションフィクセイションの流れをあらわしたものです。

  1. セッションハイジャック

    利用者がログインして得たセッションIDを盗聴などにより取得します。攻撃者は取得したセッションIDを 用いてWebサイトにアクセスすることで利用者になりすます事が可能になります。

    以下に、セッションハイジャック対策の例を説明します。

  2. セッションフィクセイション

    攻撃者がターゲットWebサイトから有効セッションIDを取得し、何らかの方法で利用者に利用させることで セッションIDと利用者のログイン情報を結びつけさせます。攻撃者はそのセッションID を用いてターゲットWebサイトにアクセスすることで利用者になりすます事が可能になります。

    以下に、セッションフィクセイション対策の例を説明します。

3.4.4.2. 利用手順

3.4.5. アクセス制御欠如と認可処理欠如の脆弱性

3.4.5.1. セキュリティ対策指針と提供機能

Webサイトで非公開とすべき情報を取り扱う場合や、利用者本人にのみデータの変更や編集を許可することを 想定する場合には、アクセス制御が必要です。 しかし、個人情報を閲覧する機能にアクセスするにあたり、他人に知られうる情報の入力だけで個人情報を 閲覧できてしまうのは、アクセス制御機能が欠如していると言えます。

また、複数の利用者の存在を想定する場合には、アクセス制御に加えて、 どの利用者にどの操作を許可するかを制御する認可処理が必要となる場合があります。

以下で、アクセス制御欠如と認可処理欠如それぞれに対する対策の例を説明します。

3.4.5.2. 利用手順

WebOTXでは、本脆弱性への対策についての機能を特に提供していません。アプリケーションでの対策を実施してください。

3.4.6. クロスサイトスクリプティング脆弱性

3.4.6.1. セキュリティ対策指針と提供機能

クロスサイトスクリプティングは、ユーザの入力データを処理するWebアプリケーションや、Webページを操作する JavaScriptに存在する脆弱性を悪用し、ユーザのPC上で不正なスクリプトを実行させる攻撃です。
Webアプリケーションが、ユーザからのリクエストに含まれるスクリプトに相当する文字列を、 当該リクエストへのレスポンスであるWebページ内に実行可能なスクリプトとして出力してしまい、 これによりWebサイトを閲覧したユーザ環境で、出力されたスクリプトが実行されてしまいます。

以下の図は、クロスサイトスクリプティングの脆弱性の有無による動作の違いを説明するものです。 このWebサイトでは、入力したデータがWebアプリケーションによって処理され、そのまま確認画面として表示されます。
脆弱性がないサイトでは、入力したスクリプトが単なる文字列として処理され、そのまま確認画面に表示されます。
その一方で、脆弱性があるサイトでは、入力したスクリプトが実行され、アラートがポップアップ表示されてしまいます。 脆弱性のあるサイトでは入力データのチェックが適切に行われていないため、このようにスクリプトを入力すれば、 クライアント環境で様々な処理が実行できることになります。

このことを応用すれば、以下の図のようにして、悪意のあるWebサイトのリンクをクリックさせ、 最終的にクライアント環境で不正なスクリプトを実行させることで、ターゲットWebサイトでのユーザの ログイン情報などを盗むことが可能になります。

以下で、Webアプリケーションでの対策の例を説明します。

3.4.6.2. 利用手順

WebOTXでは、本脆弱性への対策についての機能を特に提供していません。アプリケーションでの対策を実施してください。

3.4.7. クロスサイトリクエストフォージェリ脆弱性

3.4.7.1. セキュリティ対策指針と提供機能

クロスサイトリクエストフォージェリとは、Webアプリケーションのユーザ認証やセッション管理の不備を突いて、 Webアプリケーションに対する不正な処理要求をサイトの利用者に行わせる手法です。
以下の図のように、ユーザがクロスサイトリクエストフォージェリの脆弱性があるWebサイトにログインした状態で、 悪意のあるWebサイトに仕掛けられたリンクをクリックすることで、ユーザが知らないうちに、Webブラウザが保持している 情報が付与されたリクエスト(以下の図では注文確定情報)が自動送信されてしまいます。 罠にかかったユーザがログインしたセッションで攻撃が行われるので、ユーザの権限で可能な範囲の操作が攻撃者に実行させられてしまいます。

以下で、Webアプリケーションでの対策の例を説明します。

3.4.7.2. 利用手順

WebOTXでは、本脆弱性への対策についての機能を特に提供していません。アプリケーションでの対策を実施してください。

3.4.8. クリックジャッキング脆弱性

3.4.8.1. セキュリティ対策指針と提供機能

クリックジャッキングは、複数のWebページを重ね合わせてレイヤとして表示する機能と、重ね合わせたレイヤを 透明にできるというWebブラウザの機能を利用したものです。
フレーム機能を用いて、透過指定した標的サイトを 攻撃用のWebサイト(攻撃者サイト)の上に重ね合わせます。ユーザは攻撃者サイトに対して操作を行っているつもりが、 その操作は実際には標的サイトに対して行われており、ユーザが意図しない設定変更などが実行されます。

クリックジャッキングは,Webページの重ね合わせや透明化といった正当な機能を利用したものであるため、 現時点では根本的な対策はないといえます。
対処療法的な対策として、重ね合わせたWebサイトの透明化の禁止や、重ね合わせたWebサイト上でのクリックの無効化が考えられますが、 Webサイトの使用性を低下させてしまいます。
また、新たな対策として、標的となりうるWebサイトに「外部サイトのフレームからの表示を拒否する」という意味のHTTPレスポンスヘッダ X-FRAME-OPTIONSを指定するという方法があります。ただし、古いバーションのブラウザはX-FRAME-OPTIONに対応していないことが あるので、注意が必要です。

3.4.8.2. 利用手順

WebOTXでは、本脆弱性への対策についての機能を特に提供していません。アプリケーションでの対策を実施してください。

3.4.9. メールヘッダインジェクション脆弱性

3.4.9.1. セキュリティ対策指針と提供機能

メールヘッダインジェクションとは、ユーザがフォームに入力したデータをもとにメールを送信するWebアプリケーションにおいて、 不正なメールヘッダを混入させることにより、意図しないアドレスに迷惑メールを送信するなど、メール送信機能を悪用した攻撃手法です。
例えば、次のような仕様のメール送信アプリケーションを想定します。

Toアドレス:   to@aa.bb (固定)
Fromアドレス: フォームから入力

ここで、Fromアドレスに入力する文字列によっては、次のようなメールヘッダが作成され、 意図しないアドレス(user@xx.yy)にまでメールが送信されてしまう可能性があります。

To:   to@aa.bb
From: from@ss.tt
Bcc:  user@xx.yy

メールヘッダインジェクションへの対策としては、次のようなものがあります。

3.4.9.2. 利用手順

WebOTXでは、本脆弱性への対策についての機能を特に提供していません。アプリケーションでの対策を実施してください。

3.4.10. HTTP ヘッダインジェクション脆弱性

3.4.10.1. セキュリティ対策指針と提供機能

HTTPヘッダインジェクションとは、HTTPを使って通信するシステムにおいて、動的にHTTPヘッダを生成する機能の不備を突いてヘッダ行を挿入することで不正な動作を行なわせる攻撃手法のことです。

例えば、リクエストパラメータに次の画面へのURLが含まれるような場合(http://{host}/{AP}/{Servlet}?url={url})、悪意のある者がURL部分を改ざんしてリクエストパラメータに「url={url}改行コード{別のヘッダ}」のようにコードを仕込まれたとします。HTTPヘッダにおいて改行コードはヘッダの区切りとなります。このため、この場合意図しない{別のヘッダ}をHTTPレスポンスヘッダに設定されてしまう可能性があります。もしSet-Cookieヘッダを仕込まれた場合、セッション固定攻撃に利用される可能性があります。

また、HTTPにおいて改行コードが2つ連続した場合、それは空行を意味しHTTPヘッダとHTTPボディの区切りとして機能します。先ほどの例で「url={url}改行コード改行コード{悪意のあるこーど(Scriptなど)}」のようなコードを仕込まれた場合、ブラウザは悪意のあるコードを実行してしまう危険性があります。これは、クロスサイトスクリプティング等の別の脆弱性につながる可能性があります。

3.4.10.2. 利用手順

WebOTXでは、本脆弱性への対策についての機能を特に提供していません。上記のようにリクエストに含まれるヘッダの内容をレスポンスに設定するようなアプリケーションは、アプリケーションの処理において改行コード(CRLF)やHTMLの文法上特殊な意味を持つ文字("<" ">" "&" """ など)を"%0D%0A" "&lt;" "&gt;" "&amp;" "&quot;" などの無害な文字にサニタイジングしてください。


3.4.11. レースコンディション脆弱性

3.4.11.1. セキュリティ対策指針と提供機能

ウェブアプリケーションの機能を複数の利用者が同時に利用したときに、予定外の処理結果が生じる場合があります。このような欠陥は一般に「レースコンディション脆弱性」と呼ばれます。レースコンディション脆弱性によってセキュリティ上の防御が緩む瞬間があるアプリケーションがあった場合,この欠陥により、利用者の秘密にすべき情報が第三者に閲覧される被害が生じる可能性があります。この被害は、攻撃者がいなくても偶然に発生する場合もあれば、 攻撃者が大量のアクセスをすることで意図的に引き起こされる場合もあります。

この脆弱性を排除するには、ソースコードレビューによってレースコンディションが起きえない構造にプログラムが記述されていることを確認する方法や、大量のアクセスを同時に発生させて異常が発生しないことを十分に確認するテストを行うなどの対策方法が考えられます。

3.4.11.2. 利用手順

WebOTXでは、本脆弱性への対策についての機能を特に提供していません。アプリケーションでの対策を実施してください。

3.5. その他の対策

3.5.1. SSL

3.5.1.1. セキュリティ対策指針と提供機能

アプリケーションからWebOTX外部のサービス(Webサービス、メールサービス、ネーミングサービス等)を利用する場合は、SSLを利用したセキュアなプロトコル(HTTPS, POP3s, IMAP4s, SMTPs, LDAPS等)を用いてサービスにアクセスする事で通信内容の機密性と完全性が保障されます。
アプリケーションからSSLを利用する場合には、利用するサービスのサーバが利用するサーバ証明書またはそのルート証明書をドメインのトラストストアにインポートする必要があります。

3.5.1.2. 利用手順

利用するサービスにアクセスするための証明書を取得してインポートします。
多くのルート証明書はJDKのトラストストアファイルに含まれているため、基本的にはそれを利用します。
もし、ルート証明書がJDKに含まれていないような場合は、CA(認証局)のサイトからダウンロードしてドメインのトラストストアにインポートするか、サーバ証明書をインポートする方法もあります。

Caution
ルート証明書のインポート作業はドメイン停止後に実施してください。