ModSecurity Web アプリケーション ファイアウォールの有効化
悪意のあるリモート クライアントが OneClick サーバ(Tomcat)にアクセスすることを防ぐため、および HTTP トラフィックを完全にログに記録するため、ModSecurity Web アプリケーション ファイアウォール(WAF)を有効化する必要があります。ModSecurity はリバース プロキシ手法を使用して CA Spectrum 環境で展開されます。「httpd.conf」ファイルを編集し、このセクションで示されている設定を実施する場合、Tomcat のリバース プロキシとして専用の Apache サーバを使用し、オープン ソースの ModSecurity モジュールを追加することで、この手法を実現します。この実装によって、適切な web アプリケーション ファイアウォールが得られます。OneClick サーバを Windows にインストールすると、$SPECROOT ディレクトリに「apache」フォルダが作成されます。このフォルダには、以下のアイテムが含まれています。
casp1032jp
悪意のあるリモート クライアントが OneClick サーバ(Tomcat)にアクセスすることを防ぐため、および HTTP トラフィックを完全にログに記録するため、ModSecurity Web アプリケーション ファイアウォール(WAF)を有効化する必要があります。ModSecurity はリバース プロキシ手法を使用して CA Spectrum 環境で展開されます。「httpd.conf」ファイルを編集し、このセクションで示されている設定を実施する場合、Tomcat のリバース プロキシとして専用の Apache サーバを使用し、オープン ソースの ModSecurity モジュールを追加することで、この手法を実現します。この実装によって、適切な web アプリケーション ファイアウォールが得られます。OneClick サーバを Windows にインストールすると、$SPECROOT ディレクトリに「apache」フォルダが作成されます。このフォルダには、以下のアイテムが含まれています。
- Apache サーバのインストールおよび起動に必要な Apache HTTP サーバ 2.4.35 パッケージ。注:CA Spectrum 10.3.1 リリースでは、Apache HTTP が 2.4.12 から 2.4.35 にアップグレードされました。CA Spectrum 10.3.1 にアップグレードした後、ModSecurity ファイアウォールを再度有効化する必要があります。既存の設定については、$SPECROOT/apache ディレクトリにある「conf.old」で参照できます。
- リバース プロキシとして Apache サーバを実行するために必要なオープン ソースの ModSecurity 2.9 パッケージ。
- ファイアウォール機能のための、オープン ソースの ModSecurity コア ルール セット 2.2.9 パッケージ。
Linux に OneClick サーバをインストールすると、$SPECROOT ディレクトリに ModSecurity 2.9 および 2.2.9 コア ルール セット付きの事前構築済みの Apache サーバ 2.4.35 が作成されます。
- 以下の 2 つの Apache セットアップのいずれかのみで ModSecurity を有効化できます。
- OneClick ホスト上での CA Spectrum 環境の Apache セットアップ。
- OneClick ホスト上での既存の Apache セットアップ。
- OneClick ホストの外部で実行されている Apache セットアップでの ModSecurity の有効化はサポートされていません。
このページには、以下のトピックが含まれます。
4
ModSecurity の仕組み
ModSecurity がリバース プロキシ展開で有効な場合、以下のファイアウォール アーキテクチャが有効になります。
- Apache サーバは、OneClick サーバとクライアント間に立つように設計されている HTTP ルータになります。
- クライアントは、Apache サーバにのみ接続します。
- Apache は、Tomcat からクライアントに要求を転送および取得します。
- クライアントの Tomcat サーバへのアクセスは無効になります。
このアーキテクチャは、「$SPECROOT\apache\conf」にある「httpd.conf」ファイルの設定で、以下の属性およびディレクティブを設定することで構成されます。
Listen 80<VirtualHost *:80>ProxyPreserveHost On ProxyPass /spectrum http://localhost:8081/ ProxyPassReverse /spectrum http://localhost:8081/</VirtualHost>For this example, assume that the tomcat server was listening at port 80. To enable ModSecurity,Tomcat server port is assigned to the Apache server. A free port 8081 is assigned to the Tomcatserver by adding port 8081 in the server.xml file that is located at "$SPECROOT\tomcat\conf".
「httpd.conf」ファイルを編集し、例に示すように設定すると、Apache サーバは、以下のように Tomcat サーバのプロキシとして動作します。
- Tomcat ポート 80 は、Apache サーバに割り当てられます。
- Apache サーバでは、OneClick url にマップされている仮想ホストになります。その結果、url 「http://<hostname><:80>/spectrum」のクライアント要求は Apache サーバに接続します。
- ディレクティブProxyPassは、Apache サーバに、すべてのクライアント要求を現在 8081 でリスンしている Tomcat サーバに渡すように指示します。
- ディレクティブProxyPassReverseは、Tomcat の応答の HTTP ヘッダを書き換えて、クライアントが Apache から来たように見せかけます。
CA Spectrum 環境では、「configApacheModsec.sh」スクリプトを使用して ModSecurity を有効化します。このスクリプトは、「$SPECROOT\apache\bin」に配置されています。以下の機能を実行することにより、ModSecurity を有効化します。
- Tomcat サーバのポートを Apache サーバに割り当てることができ、別の空きポートを Tomcat サーバに割り当てることができます。
- 「server.xml」ファイルで、Tomcat サーバに新しく割り当てられるポートを更新します。
- これらのポート割り当てに基づいて、「httpd.conf」ファイルを設定します。
- ModSecurity と共に Apache サービスをインストールして起動します。
Tomcat サーバ ポートが Apache サーバに割り当てられている場合、クライアントは既存の OneClick url を使用して Apache サーバに接続することができます。そうでない場合、空きポートを Apache サーバに割り当てる必要があります。この場合、クライアントは、その url 内で Apache サーバに新しく割り当てられたポートを使用している場合のみ、OneClick url を使用して Apache サーバに接続することができます。Apache サーバに新しく割り当てられたポートを含む、更新された OneClick url をクライアントに指定する必要があります。クライアントが既存の OneClick url を使用するかどうかに基づき、以下の 2 つの方法のいずれかを使用して、ModSecurity を有効化することができます。
注:
ModSecurity を有効化すると、ブランディング(ロゴ、画像)を含む、OneClick コンソールのデフォルトのカスタマイズ オプションは無効になります。デフォルト以外の場所からリソースをロードするように ModSecurity を設定するには、「ModSecurity Web アプリケーション ファイアウォールの有効化」を参照してください。Apache に Tomcat ポートを使用して ModSecurity を有効化する
デフォルトでは、Apache はポート 8080 でリスンします。既存の tomcat ポートを Apache に割り当てると、クライアントはポート番号を変更することなく、既存の url を使用することができます。この場合、Tomcat サーバには別のポートが割り当てられ、外部クライアントに対しては無効化されます。内部クライアントとは、OneClick サーバ ホスト自体からアクセスするクライアントです。以下の手順では、既存の Tomcat ポートが 80 であると仮定します。
以下の手順に従います。
- Windows の場合、「services.msc」プログラムを起動するか、コマンド プロンプトで以下のコマンドを実行して、「SpectrumTomcat」サービスを停止します。$SPECROOT\NT-Tools\SRE\bin\bash.exe "$SPECROOT\\tomcat\\bin\\stopTomcat.sh"Linux の場合、bash プロンプトで以下のコマンドを実行($SPECROOT\tomcat\binから)して、SpectrumTomcat サービスを停止します。./stopTomcat.sh「SpectrumTomcat」サービスが停止し、Tomcat ポート 80 が空き、Apache サーバに割り当てられます。
- Linux の場合、bash プロンプトで以下のコマンドを実行($SPECROOT\apache\binから)して、ModSecurity を有効化します。./configApacheModsec.sh enableWindows の場合、コマンド プロンプトで以下のコマンドを実行し、ModSecurity を有効化します。$SPECROOT\NT-Tools\SRE\bin\bash.exe "$SPECROOT\\apache\\bin\\configApacheModsec.sh" "enable"tomcat を SSL モードで動作しているどうかを確認するプロンプトが表示されます。Tomcat が SSL モードで動作している場合、「ModSecurity Web アプリケーション ファイアウォールの有効化」の手順を実行します。このスクリプトでは、以下のメッセージが表示され、ModSecurity は有効になりません。SSL モードのスクリーンショットWindowsLinux非 SSL モードのスクリーンショットWindowsTomcat を非 SSL モードで実行している場合、スクリプトでは、tomcat ポートを Apache に割り当てるかどうかを選択するプロンプトが表示されます。Linux
- 「y」キーを押し、Enter キーを押します。ポート 80 が Apache に割り当てられます。スクリプトでは、Tomcat 用の空きポートを入力するプロンプトが表示されます。
- Tomcat 用の新しいポートを入力し、Enter キーを押します。たとえば、8081 を入力します。スクリプトは、httpd.conf ファイルの以下の設定を適用します。Listen 80<VirtualHost *:80>ProxyPreserveHost OnProxyPass /spectrum http://localhost:8081/spectrum ProxyPassReverse /spectrum http://localhost:8081/spectrum</VirtualHost>コマンド プロンプトに「Apache サービスを開始します」というメッセージが表示されます。
- Linux の場合、bash プロンプトで以下のコマンドを実行して、「SpectrumTomcat」サービスを起動します。./startTomcat.shWindows の場合、「ervices.mcs」プログラムを起動するか、コマンド プロンプトで以下のコマンドを実行して、SpectrumTomcat サービスを開始します。$SPECROOT\NT-Tools\SRE\bin\bash.exe "$SPECROOT\\tomcat\\bin\\startTomcat.sh
- Linux の場合、bash プロンプトで以下のコマンドを実行して、Apache サービスが開始されたことを確認します。
- Windows の場合、「Services.msc」プログラムを起動して、Apache サービスが開始されたことを確認します。
クライアントが既存の url 「http://<hostname:80>/spectrum」を使用している場合、Apache サーバに接続され、そこから応答を取得します。外部クライアントに対して Tomcat ポート 8081 を無効化するため、「$SPECROOT\tomcat\conf」にある server.xml ファイルにループバック アドレスが追加されます。
Apache に空きポートを使用して ModSecurity を有効化する
Apache に既存の tomcat ポートを割り当てない場合、クライアントは Apache サーバに新しく割り当てられたポートを付けた url を使用する必要があります。この場合も、既存の tomcat ポートは外部のクライアントに対して無効です。以下の手順では、既存の Tomcat ポートが 80 であると仮定します。
以下の手順に従います。
- Linux の場合、bash プロンプトで以下のコマンドを実行($SPECROOT\apache\binから)して、ModSecurity を有効化します。./configApacheModsec.sh enableWindows の場合、コマンド プロンプトで以下のコマンドを実行し、ModSecurity を有効化します。$SPECROOT\NT-Tools\SRE\bin\bash.exe "$SPECROOT\\apache\\bin\\configApacheModsec.sh" "enable"tomcat を SSL モードで動作しているどうかを確認するプロンプトが表示されます。Tomcat が SSL モードで動作している場合、「ModSecurity Web アプリケーション ファイアウォールの有効化」の手順を実行します。このスクリプトでは、以下のメッセージが表示され、ModSecurity は有効になりません。SSL モードのスクリーンショットWindows
Linux
非 SSL モードのスクリーンショットTomcat を非 SSL モードで実行している場合、スクリプトでは、以下の画像のように、tomcat ポートを Apache に割り当てるかどうかを選択するプロンプトが表示されます。WindowsLinux
- 「n」キーを押し、Enter キーを押します。スクリプトでは、上記の画像のように、Apache サーバ用の空きポートを入力するプロンプトが表示されます。この例では、8080 が Apache サーバに割り当てられます。スクリプトは、「httpd.conf」ファイルの以下の設定を適用します。Listen 8080<VirtualHost *:8080>ProxyPreserveHost OnProxyPass /spectrum http://localhost:8080/spectrum ProxyPassReverse /spectrum http://localhost:8080/spectrum</VirtualHost>コマンド プロンプトに「Apache サービスを開始します」というメッセージが表示されます。注: CA PC 統合が有効で、apache が非 SSL モードで実行中の場合、統合を動作させるため、httpd-ssl.conf または httpd.conf ファイルに以下のスクリプトを適用できます。設定した実際の tomcat ポートで 8443 を置き換えることができます。ProxyPass /axis2 https://localhost:8443/axis2ProxyPassReverse /axis2 https://localhost:8443/axis2
- Linux の場合、bash プロンプトで以下のコマンドを実行して、Apache サービスが開始されたことを確認します。
- Windows の場合、「Services.msc」プログラムを起動して、Apache サービスが開始されたことを確認します。
クライアントが既存の url 「http://<hostname:80>/spectrum」を使用している場合、Apache サーバに接続できません。クライアントは更新された url 「http://<hostname:8082>/spectrum」を使用して、Apache サーバに接続し、そこから応答を取得する必要があります。外部クライアントに対して Tomcat ポート 80 を無効化するため、「$SPECROOT\tomcat\conf」にある server.xml ファイルにループバック アドレスが追加されます。
ModSecurity を使用してクリックジャック攻撃を防ぐ
クリックジャッキング(ユーザ インターフェース偽装攻撃)は、正当なクリック可能コンテンツにハイパーリンクを隠すことで、web サイト ユーザのアクティビティを操作するための悪意ある行為であり、それによって、ユーザは自身が認識していないアクションを実行することになります。 これは、さまざまなブラウザおよびプラットフォームにわたる脆弱性であるブラウザ セキュリティ問題です。クリックジャックは、表示されているボタンをクリックすると別の機能が実行されるような、ユーザの知らない間に実行することができる埋め込みコードまたはスクリプトの形式を取ります。
X-Frame-Options によるクリックジャックの防御
ブラウザが <frame> または <iframe> のページのレンダリングを許可する必要があるかどうかを示す X-Frame-Options HTTP 応答ヘッダを使用することができます。
クリックジャック攻撃から CA Spectrum を保護するため、以下の手順を実施して「httpd.conf」ファイルを更新します。
- テキスト エディタで「$SPECROOT\apache\conf\httpd.conf」ファイルを開きます。
- 以下の X-Frame-Options 応答ヘッダを追加し、ファイルを保存します。Header always append X-FRAME-OPTIONS "SAMEORIGIN"
- Apache サーバを再起動します。
ModSecurity を使用したキャッシュ制御
ModSecutiy を使用すると、「httpd.conf」ファイルの mod_headers を定義することによって、キャッシュを制御できます。これにより、サーバが、ブラウザおよびその他の中間キャッシュが個々の応答にキャッシュされる方法と期間を制御することができます。
以下の手順に従います。
- テキスト エディタで「$SPECROOT\apache\conf\httpd.conf」ファイルを開きます。
- 以下の設定を追加し、ファイルを保存します。<IfModule mod_headers.c> Header set Cache-Control "no-cache, no-store, must-revalidate,max-age=0" Header set Pragma "no-cache" Header set Expires 0 </IfModule>
- Apache サーバを再起動します。
上記のキャッシュ設定で「httpd.conf」ファイルを更新した後、Spectrum からのすべてのコールがキャッシュで制御されていることを確認することができます。キャッシュ制御ディレクティブは、応答ヘッダに表示されます。
ModSecurity の無効化
Linux の場合、bash プロンプトで以下のコマンドを実行(
$SPECROOT\apache\bin
から)して、ModSecurity を無効化します。
Windows の場合、以下の構文でコマンド プロンプトを使用して、ModSecurity を無効化します。
C:\win32app\Spectrum\NT-Tools\SRE\bin\bash.exe "C:\\win32app\\Spectrum\\apache\\bin\\configApacheModsec.sh" "disable"
Apache サーバに Tomcat ポートを使用して ModSecurity を有効化した場合、このスクリプトでは、以下の変更を実施して ModSecurity を無効化します。
- Apache サーバは停止、アンインストールされ、「httpd.conf」ファイルに適用されている設定は適用されなくなります。
- ポート 80 は Tomcat サーバに割り当てられ、ポート 8080 は Apache サーバに割り当てられます。
- ループバック アドレスが削除され、ポート 80 が server.xml ファイルに追加されます。その結果、外部クライアントはポート 80 を使用して、Tomcat サーバに直接アクセスできます。
Apache サーバにデフォルト ポートを使用して ModSecurity を有効化した場合、このスクリプトでは、以下の変更を実施して ModSecurity を無効化します。
- Apache サーバは停止、アンインストールされ、「httpd.conf」ファイルに適用されている設定は適用されなくなります。
- ループバック アドレスが server.xml ファイルから削除されます。この場合、server.xml ファイルに既存のポート番号(つまりこの例では 80)を追加する必要があります。
最後に、コマンド プロンプトで以下のメッセージが表示されます。
Apache Service is unregistered Successfully
SSL モードでの ModSecurity の有効化
ModSecurity を SSL モードで有効化するには、まず Apache サーバを SSL モードで動作するように設定します。SSL モードで Apache を実行するため、以下の設定タスクが実行されます。
- 「$SPECROOT\apache\conf\extra\httpd-ssl.conf」ファイルを編集し、仮想ホスト設定(Apache SSL ポート、proxypass および proxypassreverse ディレクティブの設定)を設定して、OneClick url を Apache SSL ポートにマップします。
- httpd.conf ファイルの「#Include conf/extra/httpd-ssl.conf」ディレクティブのコメント化を解除し、Apache サーバが起動時に SSL モードで実行されるようにします。
- SSL ログを記録するため、「$SPECROOT\apache\conf\extra\httpd-ssl.conf」ファイルでログ ファイルのパスを設定します。
- SSL 証明書ファイル(server.crt および server.key)のパスを設定し、「openssl」コマンドを使用してこれらのファイルを生成します。
これらの設定を実行した後に、Apache サービスを手動でインストールして起動し、SSL モードで ModSecurity を有効化します。
- ModSecurity を SSL モードで有効化するために「configApacheModsec.sh」スクリプトを使わないでください。
- ModSecurity を SSL モードで有効にするには、Tomcat サーバも SSL モードで実行する必要があります。Tomcat サーバが非 SSL モードで実行されている場合、そのモードを無効化し、SSL モードを有効にします。Tomcat を SSL モードに設定するには、「OneClick のセキュア ソケット レイヤ用の設定」セクションの手順に従います。
ModSecurity を SSL モードで有効化するには、以下の手順に従います。
- 「httpd-ssl.conf」ファイルと「httpd.conf」ファイルを読み取り専用モードから書き込みモードに変更します。注:手順 2 に進む前に、以下の属性を検索し、「httpd.conf」ファイルでコメント化/非表示にして、複数のホスト設定が作成されるのを防ぎます。Listen 80<VirtualHost *:80>ProxyPreserveHost OnProxyPass /spectrum http://localhost:8081/ProxyPassReverse /spectrum http://localhost:8081/</VirtualHost>
- 「<VirtualHost _default_:443>」タグを検索し、「httpd-ssl.conf」で「<VirtualHost *:443>」に変更します。以下の例に示すように、<VirtualHost *:443> タグと </VirtualHost> タグの間に以下の仮想ホスト設定を追加します。<VirtualHost *:443>ProxyPreserveHost on SSLEngine on SSLProxyEngine on SSLProxyVerify none SSLProxyCheckPeerCN off SSLProxyCheckPeerName off SSLProxyCheckPeerExpire off ProxyPass /spectrum https://localhost:8443/spectrum ProxyPassReverse /spectrum https://localhost:8443/spectrum </VirtualHost>*This configuration indicates that ModSecurity on httpd (Apache Web Server) is running in SSL mode on port TCP/443 and Tomcat is also running in SSL mode on port TCP/8443 locally.注: CA PC 統合が有効で、apache が SSL モードで実行中の場合、統合を動作させるため、httpd-ssl.conf または httpd.conf ファイルに以下のスクリプトを適用できます。設定した実際の tomcat ポートで 8443 を置き換えることができます。ProxyPass /axis2 https://localhost:8443/axis2ProxyPassReverse /axis2 https://localhost:8443/axis2
- 「httpd.conf」ファイルを以下のように編集します。
- 「httpd.conf」ファイルの「Include conf/extra/httpd-ssl.conf」ディレクティブの前の「#」記号を削除して、「httpd.conf」ファイルに「httpd-ssl.conf」ファイルをインクルードします。
- 「httpd.conf」ファイルの「LoadModule ssl_module modules/mod_ssl.so」ディレクティブの前の「#」記号を削除して、「httpd.conf」ファイルにモジュール「mod_ssl.so」をロードします。
- デフォルト パス(<$SPECROOT>)を ServerRoot の絶対パス(C:/win32app/Spectrum)に置き換えます。
- 「httpd-ssl.conf」ファイルの DocumentRoot、Errorlog、および TransferLog のデフォルト パス(<$SPECROOT>)を絶対パス(C:/win32app/Spectrum)に置き換えます。
- Windows 上で以下のコマンドを実行し、「server.crt」ファイルと「server.key」ファイルを生成します。$SPECROOT\NT-Tools\SRE\bin\bash.exe "$SPECROOT\\apache\\conf\\openssl req -newkey rsa:1024 -keyout server.key -nodes -x509 -out server.crt"Linux 上で以下のコマンドを実行し、「server.crt」ファイルと「server.key」ファイルを生成します。$SPECROOT\Apache\conf>openssl req -newkey rsa:1024 -keyout server.key -nodes -x509 -out server.crt以下の詳細を入力するためのプロンプトが表示されます。
- 国名を(2 文字のコード) [XX] 形式で入力し、Enter キーを押します。
- 州または県名を入力し、Enter キーを押します。
- 市区町村名を入力し、Enter キーを押します。
- 組織名を入力し、Enter キーを押します
- 組織単位名を入力し、Enter キーを押します。
- 共通名を以下の形式で入力し、Enter キーを押します。<host_name>@domain.com
- 電子メール アドレスを以下の形式で入力します。id@domain.com入力した情報が正しいかどうかを確認するプロンプトが表示されます。
- 「yes」を入力し、Enter キーを押します。
- httpd-ssl.conf ファイルに以下の編集を行い、server.crt および server.key 証明書ファイルのパスを更新します。
- 「SSLCertificateFile "c:/Apache24/conf/server.crt"」行を検索し、パスを「$SPECROOT/apache/conf/server.crt」に更新します。
- 「SSLCertificateKeyFile "c:/Apache24/conf/server.key"」行を検索し、パスを「$SPECROOT/apache/conf/server.key」に更新します。
- Linux の場合、bash プロンプトで以下のコマンドを実行して、ModSecurity を SSL モードで有効化します。#./httpd -d /$SPECROOT/apache -k start
- Windows の場合、Spectrum ユーザではなく管理者ユーザとして、bash プロンプトで以下のコマンドを実行し、ModSecurity を SSL モードで有効化します。C:\$SPECROOT\apache\bin>httpd.exe -k installC:\$SPECROOT\apache\bin>httpd.exe -k startModSecurity は、デフォルトの SSL ポート 443 で実行されている Apache サーバで有効です。これで、クライアントは Apache サーバへの接続に、「https://<hostname><:443>/spectrum」 url の使用が必要になりました。 外部のクライアントから直接 tomcat にアクセスできないように、外部のクライアントについて既存の Tomcat ポート(SSL)を無効にするのには、以下の手順を実行します。
- server.xml ファイルで「<!-- Define a SSL Coyote HTTP/1.1 Connector on port 443 -->」セグメントを検索します。
- 次の <Connector /> タグ セグメントに「address=127.0.0.1」を追加します。
- Linux の場合、bash プロンプトで「./httpd -d /$SPECROOT/apache -k stop」コマンドを実行して、ModSecurity を SSL モードで無効化します。
- Windows の場合、bash プロンプトで「httpd.exe -k stop」コマンドを実行して、ModSecurity を SSL モードで無効化します。
- Windows の場合、bash プロンプトで「httpd.exe -k uninstall」コマンドを実行して、Apache サーバをアンインストールします。
ModSecurity を無効にしたら、「httpd-ssl.conf」および「httpd.conf」ファイルを書き込みモードから読み取り専用モードに変更します。
サードパーティ SSL 証明書ファイルのインポート
サード パーティ組織の SSL 証明書をインポートすることもできます。サード パーティ SSL 証明書の要求が発生すると、その特定のサードパーティ組織が以下のファイルを提供します。
- server.crt(サーバ証明書)
- server.key(秘密鍵)
これらのファイルへのアクセスを root ユーザのみに制限します。
以下の手順に従います。
- サードパーティから「server.crt」および「server.key」ファイルをダウンロードし、Apache サーバ ホストのファイル システムに保存します。
- httpd.conf ファイルで以下の行を検索し、この行の「#」文字を削除して「mod_ssl.so」モジュールをロードします。#LoadModule ssl_module modules/mod_ssl.soファイルを保存します。
- httpd-ssl.conf ファイルで以下の行を検索し、SSLCertificateFile "c:/Apache24/conf/server.crt" ステートメントの既存のパスを削除します。# Server Certificate: # Point SSLCertificateFile at a PEM encoded certificate. If # the certificate is encrypted, then you will be prompted for a # pass phrase. Note that a kill -HUP will prompt again. Keep # in mind that if you have both an RSA and a DSA certificate you # can configure both in parallel (to also allow the use of DSA # ciphers, etc.) # Some ECC cipher suites (http://www.ietf.org/rfc/rfc4492.txt) # require an ECC certificate which can also be configured in # parallel. SSLCertificateFile "c:/Apache24/conf/server.crt" #SSLCertificateFile "c:/Apache24/conf/server-dsa.crt" #SSLCertificateFile "c:/Apache24/conf/server-ecc.crt"以下の構文を使用して、ダウンロードした「server.crt」ファイルへの絶対パスを指定します。SSLCertificateFile "<absolute path to the downloaded server.crt>"
- httpd-ssl.conf ファイルで以下の行を検索し、SSLCertificateKeyFile "c:/Apache24/conf/server.key" ステートメントの既存のパスを削除します。# Server Private Key: # If the key is not combined with the certificate, use this # directive to point at the key file. Keep in mind that if # you've both a RSA and a DSA private key you can configure # both in parallel (to also allow the use of DSA ciphers, etc.) # ECC keys, when in use, can also be configured in parallel SSLCertificateKeyFile "c:/Apache24/conf/server.key" #SSLCertificateKeyFile "c:/Apache24/conf/server-dsa.key" #SSLCertificateKeyFile "c:/Apache24/conf/server-ecc.key"以下の構文を使用して、ダウンロードした「server.key」ファイルへの絶対パスを指定します。SSLCertificateFile "<absolute path to the downloaded server.key>"ファイルを保存します。
- httpd.conf ファイルで以下の行を検索し、この行の「#」文字を削除して「httpd-ssl.conf」ファイルをインクルードします。#Include conf/extra/httpd-ssl.confファイルを保存します。
- Apache サーバを再起動します。
既存の Apache セットアップで ModSecurity を有効化する方法
Apache サービスが、OneClick サーバ ホスト上ですでに実行されている場合、ModSecurity を有効化するには、以下の手順に従います。
- Apache サービスを停止します。
- ModSecurity を有効化に必要な以下のフォルダにアクセスし、既存の Apache セットアップにコピーします。$SPECROOT\apache\modsecurity-crs$SPECROOT\apache\modules
- 「$SPECROOT\apache\conf\httpd.conf」ファイルで「Dynamic Shared Object (DSO) Support」セグメントを検索します。
- 既存の httpd.conf ファイルの「LoadModule」ディレクティブと「$SPECROOT\apache\conf\httpd.conf」ファイル内に存在する「LoadModule」ディレクティブを比較します。「LoadModule」ディレクティブには、機能を有効にするモジュールが含まれています。ModSecurity を有効化するには、既存の「httpd.conf」ファイルに ModSecurity モジュールを含める必要があります。
- CA Spectrum 環境の「httpd.conf」に存在する「LoadModule」ディレクティブをコピーし、既存の「httpd.conf」ファイルに貼り付けます。
- ModSecurity を有効化する方法の詳細については、以下のトピックを参照してください。
- 「ModSecurity Web アプリケーション ファイアウォールの有効化」を参照してください。
- 「ModSecurity Web アプリケーション ファイアウォールの有効化」を参照してください。
- 「ModSecurity Web アプリケーション ファイアウォールの有効化」を参照してください。
- これらのトピックで説明されるように httpd.conf ファイルを設定し、Apache サービスを開始します。
ModSecurity が悪意のあるクライアントをブロックする方法
「httpd.conf」ファイルには、「$SPECROOT\apache\modsecurity crs\base_rules」にある ModSecurity コア ルール セット設定ファイル(ベース ルール)が含まれていますいます。コア ルール セットのしきい値およびこれらのベース ルールのパラメータは「$SPECROOT\apache\modsecurity-crs\」にある「modsecurity_crs_10_setup.conf」ファイルで設定されています。「httpd.conf」ファイルには、このコア ルール セット設定ファイルおよびすべてのベース ルールが含まれます。これらのベース ルールによって、Apache サーバに強固なファイアウォール機能が提供されます。以下の表に、各ベース ルールおよび対応するファイアウォール機能を示します。
ModSecurity ベース ルール | ファイアウォール機能 |
modsecurity_crs_20_protocol_violations.conf | 一部プロトコル違反は、HTTP 攻撃では一般的です。 HTTP 要求を検証すると、多くのアプリケーション レイヤの攻撃が排除されます。 このルール ファイルの目的は、 クライアントがサーバと通信するための方法を記述する HTTP RFC 要件を適用することです。 無効な URI を特定します。 |
modsecurity_crs_21_protocol_anomalies.conf | すべての HTTP web 要求には、Host、User-Agent、および Accept ヘッダが含まれます。正当な HTTP リクエストでは、これらのヘッダが存在し、空ではありません。 このルールは、これらのヘッダが存在するかどうか、また、それらが空ではないかどうかをチェックします。ヘッダが空の場合、このような共通ヘッダのない HTTP 要求はブロックされます。 |
modsecurity_crs_23_request_limits.conf | このルールは、HTTP 要求の引数の数および引数の長さの制限を定義します。たとえば、引数を 400 個持つ HTTP 要求は疑わしい可能性があります。 このルールでは、長さを定義できます。この長さに違反している HTTP 要求はブロックされます。 |
modsecurity_crs_30_http_policy.conf | このルール セットは、クライアントによる HTTP の使用の制限を設定します。広範な HTTP プロトコルを必要とする要求はごくわずかです。多くの HTTP 攻撃では、このような有効だがまれな HTTP 使用パターンを不正に利用します。このルールによって、このようなパターンと使用を制限することができます。 |
modsecurity_crs_35_bad_robots.conf | 不正なロボットの検出は、クライアントによって簡単に制御される要素のチェックに基づいています。そのため、強力な攻撃は、 これらのチェックをバイパスすることができます。したがって、不正なロボットの検出は、標的型攻撃に対するセキュリティ メカニズムではなく、迷惑の 軽減とみなされます。このルールは、web サイトへのランダムな攻撃のほとんどを排除します。 たとえば、セキュリティ スキャナによるサーバ スキャンを防ぐことができます。 |
modsecurity_crs_40_generic_attacks.conf | このルールは、OS コマンド インジェクション攻撃を含む HTTP 要求をチェックします。これらのルールは、「curl」、「wget」、および「cc」などの OS コマンドへのアクセス試行を検出します。これらのコマンドはインジェクション攻撃に使用され、対象の web アプリケーションをハッカー サイトに接続させ、ボットネットに参加するためのツールなど、悪意あるツールをダウンロード、コンパイル、およびインストールします。 |
modsecurity_crs_41_sql_injection_attacks.conf | このルールは、SQL インジェクション攻撃を含む HTTP 要求をブロックします。 |
modsecurity_crs_41_xss_attacks.conf | このルールは、不明および悪意のある web 要求からのクロス サイト スクリプティング攻撃をブロックします。これらのスクリプト攻撃がブロックされていない場合、悪意のあるスクリプトは、ブラウザが保持する cookie、セッション トークン、またはその他の秘密情報にアクセスすることができます。 |
modsecurity_crs_42_tight_security.conf | このルールは、HTTP リクエスト内のパス トラバーサル攻撃を検出し、このような http 要求をブロックします。 |
modsecurity_crs_45_trojans.conf | このルールは、サーバ上にすでにインストールされている既知のトロイの木馬へのアクセスを検出します。トロイの木馬のアップロードは、アンチ ウイルス ルールの一部であり、ファイルをアップロードするときに、外部のアンチ ウイルス プログラムを使用します。トロイの木馬のアクセスの検出は、実際のトロイの木馬のアップロードがハッキングではなく有効な方法で行われている可能性があるホスティング環境で特に重要です。トロイの木馬の検出は、クライアントによって制御される要素のチェックに基づいています。 |
modsecurity_crs_47_common_exceptions.conf | このルールは、例外メカニズムとして使用され、一般的な誤検出を排除します。 |
modsecurity_crs_49_inbound_blocking.conf | このルールでは、10 ファイルの設定ファイルで指定される異常スコア設定に基づいて、悪意ある要求へのアクセスを拒否またはリダイレクトします。 |
modsecurity_crs_50_outbound.conf | |
modsecurity_crs_59_outbound_blocking.conf | このルールは、全体的な異常スコア、およびこれらのしきい値違反に対して設定されたアクションをチェックし、アウトバウンド データの漏洩を防ぎます。 |
modsecurity_crs_60_correlation.conf | このルールは、クライアントに対して応答が送信された後の事後処理に使用されます(ログ記録フェーズ)。このルールの目的は、イベントのインバウンドおよびアウトバウンドの相関を提供し、トランザクションの成果または結果として、よりインテリジェントな表示を提供すること、すなわち攻撃が成功したかどうかを確認することです。 |
特定の ModSecurity ベース ルールを無効化することはできません。
ModSecurity ログ
ModSecurity が有効な場合は、以下のタイプのログ ファイルが生成されます。
インストール ログ
スクリプトを使用して最初に ModSecurity を有効化したときに「install.log」が作成されます。インストール ログは、以下のタイプの情報を記録します。
- Apache サーバのドメイン名、ServerName、ServerAdmin、および ServerRoot 詳細。
- ServerSslPort の値。
- Apache がインストールされているポート番号。
- Apache サーバにロードされているすべての設定ファイルの名前と場所。
エラー ログ
Apache でエラーまたは悪意ある試行が発生したときに、「error.log」ファイルが生成されます。すべてのエラー ログ(Apache エラー ログ + ModSecurity エラー ログ)がこのファイルに出力されます。これは、すべての Apache エラー ログ、警告、致命的なエラー、および ModSecurity エラー ログがこのログ ファイルにあることを意味しています。
監査ログ
「audit.log」ファイルには、ModSecurity で検出されたすべての HTTP クライアント侵入に関する詳細情報が含まれています。ModSecurity が悪意のあるイベントを検出し、イベントがエラー ログ ファイルに記録されていることが検出された場合、同じイベントに関する監査ログエントリがこのログ ファイルに記録されます。これには、攻撃またはイベントに関するクライアント ヘッダおよびデータ ペイロードを含む実際のクライアント リクエストが含まれているため、システムが収集する最も有用な情報です。
デバッグ ログ
「debug.log」ファイルには、デバッグに役立つすべての ModSecurity エラーと例外がログに記録されます。
Windows での CA Spectrum のアンインストール中、アンインストーラは、「Services.msc」プログラムを使用して Apache のサービスを停止した場合のみ、「apache」フォルダを削除します。
OneClick コンソール カスタマイズを有効化するように Apache ModSecurity 設定を変更する
Apache ModSecurity ファイアウォールを設定すると、CA Spectrum OneClick コンソールにブランディング、カスタム ロゴ、およびカスタム画像が表示されません。
以下の設定を使用すると、Apache ModSecurity ファイアウォールがカスタム ファイルを読み込み、OneClick コンソールにブランディング、カスタム ロゴ、およびカスタム画像を表示できます。設定は OneClick Web サーバで実行する必要があります。
以下の手順に従います。
- Apache サービスを停止します。
- 「$SPECROOT\apache\conf」にある「httpd.conf」ファイルを開きます(「https/ssl」が有効な場合は、./extra/httpd-ssl.conf を開きます)。 ./apache/conf/httpd.conf./apache/conf/extra/httpd-ssl.conf
- 以下のように、[ProxyPass]および[ProxyPassReverse]エントリを変更します。..<VirtualHost _default_:443>ProxyPreserveHost OnSSLEngine onSSLProxyEngine onSSLProxyVerify noneSSLProxyCheckPeerCN offSSLProxyCheckPeerName offSSLProxyCheckPeerExpire off# disable default#ProxyPass / https://localhost:8080/#ProxyPassReverse / https://localhost:8080/# enable local entriesProxyPass/spectrumhttps://localhost:8080/spectrumProxyPass/spectrum/commonhttps://localhost:8080/spectrum/commonProxyPass/customimageshttps://localhost:8080/customimagesProxyPass/customimages/maps https://localhost:8080/customimages/mapsProxyPassReverse/spectrumhttps://localhost:8080/spectrumProxyPassReverse/customimages/ https://localhost:8080/customimagesProxyPassReverse/spectrum/commonhttps://localhost:8080/spectrum/commonProxyPassReverse/customimageshttps://localhost:8080/customimagesProxyPassReverse/customimages/maps https://localhost:8080/customimages/maps..
- Apache サーバを再起動します。