セキュリティヘッダとは、Webブラウザでのセキュリティ対策を設定するためにWebアプリケーションで使用されるディレクティブです。ブラウザはこれらのディレクティブに基づき、クロスサイトスクリプティングやクリックジャッキングなど、クライアント側の脆弱性を利用するのを困難にすることができます。また、ヘッダを使用すると、有効なTLS通信のみを許可したり、有効な証明書の使用を強制したり、特定のサーバ証明書の使用を強制したりするようにブラウザを設定することもできます。
以降のセクションでは、各種のセキュリティヘッダと、Deep Securityにおける各種ヘッダのサポート状況について詳しく説明します。
カスタマイズ可能なセキュリティヘッダ
環境要件によっては、次のヘッダを有効にして設定することができます。
![]() |
注意プライマリテナントの場合は、Deep Security Managerでカスタマイズ可能なセキュリティヘッダを有効化することや、設定をリセットすることができます。
|
HTTPの厳密なトランスポートセキュリティ (HSTS)
HTTPの厳密なトランスポートセキュリティは、Webアプリケーションと通信する際、常に有効で安全な接続を使用するようにWebブラウザを設定するヘッダです。サーバのTLS証明書が突然期限切れになったり信頼されなくなったりした場合、ブラウザはWebアプリケーションとの接続を行わなくなります。また、ユーザが
http://
で始まるURLを使用してWebアプリケーションにアクセスしようとした場合は、自動的にhttps://
に変更されます。これらのセキュリティ対策は、中間者攻撃に加え、セッションハイジャッキングなどの攻撃を防ぐのに役立ちます。インストール直後のDeep Security Managerコンソールでは、(信頼されていない) 自己署名証明書とHSTSがオフになっています。これは、各組織で、Managerのホスト名と一致する特定の証明書を使用してDeep
Security Webアプリケーションを設定する必要があるためです。この設定は、AWS ELB/ALBなどのTLS終端機能を持つロードバランサを設定することで完了することもできます。
有効なTLS設定が行われると、 [管理]→[システム設定]→[セキュリティ]からHTTP Strict Transport Securityヘッダを有効にできます。
HTTPの厳密なトランスポートセキュリティ (HSTS) を有効化する方法については、カスタマイズ可能なセキュリティヘッダを有効化するを参照してください。
Content Security Policy (CSP)
Content Security Policyには、ブラウザへの読み込みやブラウザでの実行を許可するコンテンツの種類を制限することにより、クロスサイトスクリプティングやクリックハイジャッキングなどのクライアント側攻撃を防止するのに役立つ包括的なディレクティブが含まれています。
CSPを有効にすると、悪影響が生じる場合があります。たとえば、組み込みスクリプトが機能しなくなったり、jQueryなどのサードパーティコンポーネントで必要とされる特定の種類のイメージが読み込まれなくなったりすることがあります。
CSPを有効にする場合は、最初に [Report-only] をオンにしてCSPを実行し、必要なアプリケーション機能で指定したURL関連する違反がレポートされていないか確認することを推奨しています。
Deep Security CSPは[管理]→[システム設定]→[セキュリティ]で設定できます。
Deep Securityで推奨される設定は次のとおりです。
object-src 'self'
default-src 'self'
script-src 'self' 'unsafe-eval' 'unsafe-inline'
frame-src 'self'
frame-ancestors 'self'
style-src 'self' 'unsafe-inline' blob
:form-action 'self'
img-src 'self' data:
report-uri https://your_report_uri.org/DS_CSP_Violation
![]() |
注意初期設定では、[Report-only] チェックボックスがオンになっています。CSPを有効にしても必要なアプリケーション機能に影響しないことを確認できたら、[Report-only] を選択解除してこのポリシーを適用できます。
|
![]() |
警告[script-src] は現在、nonceまたはharsh-algorithmをサポートしていません。クロスサイトスクリプティング (XSS) について懸念がある場合は、侵入防御ルールを有効にする[1000552 - Generic Cross Site Scripting (XSS) Prevention]にしてください。
|
Content Security Policy (CSP) を有効化する方法については、カスタマイズ可能なセキュリティヘッダを有効化するを参照してください。
HTTP公開鍵ピンニング (HPKP)
HPKPヘッダを有効にすると、ブラウザは安全な通信を開始する際に、特定の証明書または特定の認証局のみを信頼するようになります。このヘッダを有効にすると、感染した信頼済み認証局やクライアントに不正にインストールされた信頼済み認証局を利用した攻撃を防止できます。
![]() |
注意HPKPを有効にすると、ヘッダが変更されずに証明書のみが変更された場合に、ブラウザがサーバと接続できなくなる可能性があります。
|
HTTP公開鍵ピンニング (HPKP) を有効化する方法については、カスタマイズ可能なセキュリティヘッダを有効化するを参照してください。
カスタマイズ可能なセキュリティヘッダを有効化する
マルチテナントモードの場合、セキュリティヘッダの設定はプライマリテナントでのみ使用可能です。
-
[管理]→[システム設定]→[セキュリティ] に移動します。
-
HTTPの厳密なトランスポートセキュリティ (HSTS)、Content Security Policy (CSP)、またはHTTP公開鍵ピンニング (HPKP) のディレクティブを対応するフィールドに入力します。
注意
設定を有効にする前にポリシーをテストするには、[Report Only] オプションを選択し、ポリシー違反レポートの内容に問題がないことを確認します。ヒント
各ポリシーのディレクティブを別々の行に入力できます。 -
ページの下部にある[保存]をクリックします。
設定をリセットする
ディレクティブの設定中に問題が発生し、Deep Security Managerで問題を修正できない場合は、ManagerにSSHで接続し、対応するコマンドを実行して設定をリセットします。
HTTPの厳密なトランスポートセキュリティ
dsm_c -action changesetting -name settings.configuration.enableHttpStrictTransportSecurity
-value ""
dsm_c -action changesetting -name settings.configuration.enableHttpStrictTransportSecurity
-value "false"
Content Security Policy (CSP)
dsm_c -action changesetting -name settings.configuration.contentSecurityPolicy -value
""
dsm_c -action changesetting -name settings.configuration.contentSecurityPolicyReportOnly
-value "true"
Public Key Pinning Policy
dsm_c -action changesetting -name settings.configuration.publicKeyPinPolicy -value
""
dsm_c -action changesetting -name settings.configuration.publicKeyPinPolicyReportOnly
-value "true"
強制セキュリティヘッダー
次のヘッダは初期設定で強制的に適用され、変更できません。
Cache-ControlとPragma
これらのヘッダは、ブラウザでのコンテンツのキャッシュ方法を設定します。認証されたアプリケーションから機密情報を含むコンテンツをキャッシュする場合、複数のユーザが使用するマシンにコンテンツがキャッシュされたり、ユーザがアプリケーションからログアウトした後にロック解除されたマシンへ攻撃者がアクセスできる状態になっていたりすると、セキュリティ上の脆弱性につながる恐れがあります。そのため、Deep
Securityでは、
no-cache
およびno-store
の値を強制的に適用することにより、静的でないすべてのコンテンツのキャッシュが無効化されます。X-XSS-Protection
XSS-Protectionヘッダは、ブラウザのクロスサイトスクリプティング (XSS) ヒューリスティックを強制的に有効にしてXSS攻撃を検出します。Deep Securityの初期設定では、このヘッダがブロックモードで強制的に適用されます。そのため、XSS攻撃の可能性がブラウザで検出されると、ページ全体の読み込みがブロックされます。この方法は、潜在的な不正要素を置き換えることによってページを無害化しようとする他の方法よりも安全です。
XSS-Protectionは、あらゆる種類の攻撃に対して有効なわけではなく、XSSフィルタを備えていないブラウザもあります。
X-Frame-Options
このヘッダは、クリックハイジャッキング攻撃の防止に役立ちます。Deep Security Managerでは、このヘッダの
SAMEORIGIN
という値を強制的に適用することにより、同じドメインでホストされているWebアプリケーションへの組み込みのみが許可されます。このヘッダの効果は、CSPのframe-ancestorsディレクティブと同じです。frame-ancestorsディレクティブはX-Frame-Optionsヘッダの値よりも優先されます。
サポートされていないセキュリティヘッダ
次の種類のヘッダはサポートされていません。
X-Content-Type-Options
nosniff
という値を含むこのヘッダを使用すると、MIMEタイプスニフィングからの保護に役立ちます。MIMEタイプスニフィング攻撃は、ブラウザでテキストコンテンツやバイナリコンテンツがHTMLとして解釈される可能性がある特定のシナリオにおいてのみ影響を及ぼします。たとえば、ユーザがxss.html
というアバタファイルを読み込み、Webアプリケーションが画像を提供する際にContent-typeヘッダを設定していない場合、ブラウザはコンテンツタイプの判定を試み、xss.html
をHTMLファイルとして扱う可能性があります。その場合、攻撃者はユーザをxss.html
に誘導してクロスサイトスクリプティング攻撃を実行することが可能になります。このヘッダを有効にするとリダイレクトの動作に悪影響を及ぼすことがあります。Deep Securityでは現在、このヘッダを有効にすることはできませんが、これに関連する攻撃のシナリオがManager
Webアプリケーションとその基本的な機能に影響する可能性は低いと考えられます。