WAF
WAF(Web アプリケーションファイアウォール) は、従来のファイアウォールや IDS/ADS では防御しきれなかった攻撃の検知・防御が可能となります。
ファイアウォールは、主に不要なサービス(サービスポート)へのアクセスを制限して、不正なアクセスの防御を行います。
また IDS/ADS では不正なアクセスを検知するとアクセス元の通信を遮断します。
しかし、Web サイトなど、公開されているサービス(HTTP や HTTPS)はファイアウォールでは制限されない形となるため、Web アプリケーションに脆弱性があると攻撃の脅威となります。
WAF ではファイアウォールや IDS/ADS では検知できない攻撃を検出することができます。
例えば、データベースを不正に操作する「SQL インジェクション」のパラメーターが含まれたアクセスがあった場合、WAFであればその通信を遮断するといった対策をとることができます。
重要
WAF は標準機能であり、主契約サーバー/マルチドメインそれぞれでご利用いただけます。
CPI がご提供する WAF には、攻撃検出時のアラートメール通知機能はございません。
WAFのON/OFF方法
WAF 機能を有効化(ON)、もしくは無効化(OFF)する方法をご説明します。
WAF 機能の ON/OFF 方法
1 コントロールパネルにて【Web】>【公開サイト】>【WAF】とクリックします
対象がテストサイト領域の場合には、【Web】>【テストサイト】>【WAF】とクリックします。
2 「設定状況」の【ON/OFF】をクリックして切り替えます
- ボタンをクリックしてから切り替え処理が完了するまでは、数分程度お時間がかかります。
重要
公開サイト/テストサイト共に、初期設定は「ON/有効」になっています。
POINT
WAF を有効にすることにより、ウェブサイトに影響が出る場合があります。
その場合、 WAF を無効にしてウェブサイトが正常化となるかをご確認ください。
- WAF 無効化により正常化となるようでしたら、 WAF の検出ログの確認方法、特定シグネチャの除外方法をご参照のうえ、 WAF を有効にした状態でもウェブサイトの表示、動作ができる設定をお試しください。
WAFの検出ログの確認方法
WAF の検出ログの確認・ダウンロード方法、またログの見方についてご説明します。
WAF の検出ログの確認方法
1 コントロールパネルにて【Web】>【公開サイト】>【WAF】とクリックします
2 「ログ詳細」の【表示】をクリックします
3 画面左上のプルダウンメニューから対象期間(本日、今月、先月)を選択します
4 検知している場合は、詳細が表示されます
| 日時 | クライアントから接続された時刻 |
|---|---|
| 動作 | MONITOR:監視(ログには残りますが、リクエストは拒否しません) BLOCK:拒否(リクエストを拒否し、検出メッセージをクライアントに応答します) |
| クライアントホスト | クライアントの IP アドレス |
| メソッド | HTTP の要求メソッド( GET、POST 等) |
| URL | 接続先 URL |
| 検出シグネチャ | シグネチャ名 |
WAFの検出ログのダウンロード方法
1 FTP アカウントを作成し、ウェブサーバーの “/log” ディレクトリに FTP 接続します
- ご利用いただく FTP アカウントのログインディレクトリは、”/” または “/log” になっている必要があります。
2 必要とする WAF のログを探し、お使いの PC へダウンロードします
“/log” ディレクトリ配下の「waf-detect.log」が当日分、「waf-detect.log.yyyymm」が一か月分のログファイルとなります。
- WAF のログは 3 ヶ月前まで保存されています。それより過去のログは自動で削除されますので、必要な場合はお客さまにてダウンロードして保存してください。
重要
ログの保存ディレクトリ “/log” やログファイルの名前を変更(リネーム)した場合、 WAF が正常に機能しなくなりますのでご注意ください。
コントロールパネルから WAF のログをダウンロードする方法
1 コントロールパネルにて【Web】>【公開サイト】>【WAF】>【表示】とクリックします
2 画面左上のプルダウンメニューから対象期間(本日、今月、先月)を選択します
3 ログ情報が表示されたら【CSV 出力】をクリックします
4 お使いの PC 内に「waf-log.csv」というファイルがダウンロードされます
一般的には「ダウンロード」フォルダに格納されますが、設定等にも依存しますので、格納先はお客さま側でお調べください。
この操作を行うと、画面に表示されている対象期間内のログを CSV ファイルとしてコントロールパネルからダウンロードすることができます。
ただし、必要とする期間が対象期間(本日、今月、先月)以外である場合、この方法はお使いいただけません。予めご了承ください。
WAF のログの見方
お客さま領域の “/log” 配下に保存されている WAF のログは以下のフォーマットにて記録されています。
ログフォーマット
検出状況が1行ずつ記録されます。
以下の各項目がスペースで区切られています。
• 時刻
クライアントから接続された時刻を表します。
- 仕様上、エポックタイム (1970/01/01 00:00:00(UTC)) からの秒数をミリ秒単位で表示します。
• 接続時間
クライアントとの接続時間をミリ秒単位で表します。
• クライアントホスト
クライアント(接続元)の IP アドレスです。
• 処理結果
常に TCP_MISS/000 となります。
• ファイルサイズ
転送したファイルのサイズ(単位はバイト)です。
(クライアントからサーバーに送られてくるデータサイズ)
• 要求メソッド
HTTP の要求メソッド (GET, POST 等) を表します。
• URL
接続先の URL を表します。
• ユーザ名
常に “-” となります。
• hierarchy code
“DIRECT/接続先 IPアドレス” を表します。
• Content-Type
送受信するファイルの Content-Type を表します。
利用できない場合は “-” となります。
• 検出情報
DETECT-STAT:[検査結果]:[検出名]::[検出文字列]:[検出文字列(全体)]:
| 検出結果 | WAF (攻撃検出) |
|---|---|
| 検出名 | 攻撃検出名称 – シグネチャ検査: RULE_SIG/[検出箇所]/[名前]/[シグネチャファイル]/[シグネチャ ID]/[シグネチャ名] – URL デコードエラー: RULE_URLDECODE/[検出箇所]/[名前] – パラメータ数の上限値の制限: RULE_PARAMS_NUM/[パラメータ数の上限値] ・[検出箇所]は以下のいずれかとなります。 PART_PARAM_NAME|[種別] ⇒ パラメータ変数の名前 PART_PARAM_VALUE|[種別] ⇒ パラメータ変数の値 PART_URL ⇒ URL PART_PATH ⇒ パス名 PART_METHOD ⇒ メソッド PART_REQHEAD ⇒ 要求ヘッダ PART_CLIENT_ADDR ⇒ クライアントアドレス PART_SERVER_ADDR ⇒ サーバーアドレス PART_POST_FILENAME ⇒ 送信ファイル名 (filename 変数で指定される名前) ・[名前]は、パラメータ変数、ヘッダフィールド名を表示します。 ・[シグネチャファイル]は、 OFFICIAL/CUSTOM のいずれかで表記されます。 ・[種別]は、 PART_GET_PARAM(クエリストリング)、PART_REQBODY (要求本文)、PART_COOKIE (クッキー)のいずれかです。 |
| 検出文字列 | 検出した文字 (シグネチャ検査で検出した場合) |
| 検出文字列(全体) | 検出した箇所の文字列全体 (パラメータ、要求ヘッダで検出した場合) 290 バイトまで記録されます。 |
• 動作
ACTION:[動作]:
| 動作 | ・MONITOR ⇒ 監視 (ログには残りますが、リクエストは拒否しません) ・BLOCK ⇒ 拒否 (リクエストを拒否し、検出メッセージをクライアントに応答します) |
|---|
• 判定情報
JUDGE:[判定]:[監視 URL の設定]:
| 判定 | MONITOR ⇒ 監視 (ログには残りますが、リクエストは拒否しません)BLOCK ⇒ 拒否 (リクエストを拒否し、検出メッセージをクライアントに応答します) |
|---|---|
| 監視URLの設定 | 0 ⇒ 固定となります |
• 検索キー
SEARCH-KEY:[検索キー]:
| 検索キー | 時刻 (エポックタイム) .apache コネクション ID で表します。 |
|---|
通信を遮断した際の表示画面
WAF で通信の遮断をした際の画面についてご説明します。
通信を遮断した際にはブラウザに以下の画面が表示されます。
WAF が有効な状態で “WAF-TEST-SIGNATURE” を含む 以下の URL にアクセスすると WAF で通信の遮断をした状況がご確認いただけます。
| Web サーバー名※ | サイト | URL |
|---|---|---|
| hbw****.secure.ne.jp | 公開サイト | http://「IP アドレス」/WAF-TEST-SIGNATURE http://「ドメイン名」/WAF-TEST-SIGNATURE |
| テストサイト | http://「テストドメイン名」/WAF-TEST-SIGNATURE | |
| hbv****.secure.ne.jp hcv1***secure.ne.jp hcv2***secure.ne.jp |
公開サイト | http://「プレビュードメイン名」/WAF-TEST-SIGNATURE http://「ドメイン名」/WAF-TEST-SIGNATURE |
| テストサイト | http://「テストドメイン名」/WAF-TEST-SIGNATURE |
- サーバーの種類で入力する内容が異なります。ご利用中の Web サーバー名をご確認ください。
ご利用の Web サーバー名や、「IP アドレス」、「テストサイトドメイン名」、「プレビュードメイン名」の確認方法はこちらでご案内しています。
特定シグネチャの除外方法
以下の書式で .htaccess ファイルに記述のうえ、ドキュメントルート配下に設置していただくことで、特定のシグネチャを除外することができます。
- すでに .htaccess ファイルが設置されている場合は、既存の .htaccess ファイルに追記してください。
以下は、例として「signature1」と「signature2」の二つのシグネチャを除外した場合の書式です。
<IfModule siteguard_module> SiteGuard_User_ExcludeSig signature1,signature2 </IfModule>
- 上記の「signature1」と「signature2」の箇所には「シグネチャ名」が入ります。
シグネチャ名については、「WAF のログについて」で確認方法をご案内します。
親ディレクトリと子ディレクトリの関係
親ディレクトリで設定した除外シグネチャは、子ディレクトリに継承されます。
ただし、子ディレクトリにおいても除外設定を行った場合は、親ディレクトリの除外設定は継承されません。
(親ディレクトリ)
<IfModule siteguard_module> SiteGuard_User_ExcludeSig signature1,signature2 </IfModule>
(子ディレクトリ)
<IfModule siteguard_module> SiteGuard_User_ExcludeSig signature3 </IfModule>
上記の場合、子ディレクトリでは signature3 のみが除外設定されます。
親ディレクトリの除外設定の継承を解除する方法
<IfModule siteguard_module> SiteGuard_User_ExcludeSig clear </IfModule>
上記の設定を子ディレクトリにすると、親ディレクトリ(上位にあるすべて)の除外設定は継承されません。
子ディレクトリを含む下層ディレクトリは除外設定無しの状態になります。
除外設定方応用編
1 検知された攻撃については、コントロールパネルのWAFのログ表示でご確認いただけます
ウェブコントロールパネルの【Web】 >【公開サイト】 >【WAF】 >【表示】
2 WAF の除外設定はウェブサーバーに .htaccess を設置して除外設定を行います
記述は下記の通りです。
特定のシグネチャを指定して除外
SiteGuard_User_ExcludeSig [ シグネチャ ID|シグネチャ名|urldecode|all|clear ]
.htaccess 記述例)
<IfModule siteguard_module> SiteGuard_User_ExcludeSig xss-tag-1,xss-tag-filter </IfModule> urldecode:URL デコードエラーによる検出を除外 all:すべてのシグネチャと URL デコードエラーによる検出を除外 clear:上位階層設定を解除
特定ファイルの除外
<Files ~ "filename.php$"> SiteGuard_User_ExcludeSig [ シグネチャ ID|シグネチャ名|urldecode|all|clear ] </Files>
この場合、設置した階層以下の filename.php が除外されます。
.htaccess 記述例)
<Files ~ "sample.php$"> SiteGuard_User_ExcludeSig all </Files>
クエリを指定した除外
SiteGuard_User_ExcludeSig_With_ParamName [ シグネチャ ID|シグネチャ名|urldecode|all|clear] [パラメータ名 ]
.htaccess 記述例)
SiteGuard_User_ExcludeSig_With_ParamName all xss
記述例の「all xss」 は、xss パラメータに対してすべて(all)を許可しています。
すべてを許可しない場合は [ シグネチャ ID|シグネチャ名|urldecode|all|clear ] を指定することができます。
シグネチャを指定する場合は SiteGuard_User_ExcludeSig_With_ParamName xss-tag-1 xss となります。
IPアドレスを指定した除外方法
<IfModule siteguard_module> SiteGuard_User_ExcludeSig ip(IP アドレス) </IfModule>
■接続元 IP アドレス「192.168.0.1」からのアクセスを除外する場合
.htaccess 記述例)
<IfModule siteguard_module> SiteGuard_User_ExcludeSig ip(192.168.0.1) </IfModule>
IP アドレスが複数ある場合は、 1 行ずつ IP アドレスを記述してください。
■接続元 IP アドレス「192.168.0.1」「192.168.0.2」「192.168.0.3」からのアクセスを除外する場合
.htaccess 記述例)
<IfModule siteguard_module> SiteGuard_User_ExcludeSig ip(192.168.0.1) SiteGuard_User_ExcludeSig ip(192.168.0.2) SiteGuard_User_ExcludeSig ip(192.168.0.3) </IfModule>
IP アドレスが複数ある場合は、 1 行ずつ IP アドレスを記述してください。
■接続元 IP アドレス「192.168.0.1」「192.168.0.2」「192.168.0.3」からのアクセスを除外するが、”/usr/home/ウェブコントロールパネル ID/html/ディレクトリ名/test” では除外しない場合
この場合、.htaccess を 2 ファイルご用意いただく必要があります。
.htaccess(1つ目) 記述例)
<IfModule siteguard_module> SiteGuard_User_ExcludeSig ip(192.168.0.1) SiteGuard_User_ExcludeSig ip(192.168.0.2) SiteGuard_User_ExcludeSig ip(192.168.0.3) </IfModule>
この .htaccess は “/usr/home/ウェブコントロールパネル” に設置します。
.htaccess(2つ目) 記述例)
<IfModule siteguard_module> SiteGuard_User_ExcludeSig clear </IfModule>
この .htaccess は “/usr/home/ウェブコントロールパネル ID/html/ディレクトリ名/test” に設置します。
