WAF(Web アプリケーションファイアウォール)
Web サイトの改ざんやデータベース情報の不正入手など Web アプリケーションの脆弱性を狙うサイバー攻撃から Web サイトを防御するソフトウェアまたはハードウェアです。
CPI では EGセキュアソリューションズ株式会社が提供するソフトウェアタイプの SiteGuard Server Edition を採用しております。
- 弊社が提供する WAF には攻撃検出時のアラートメール通知機能はございません。
WAF は従来のファイアウォールや IDS/ADS では防御しきれなかった攻撃の検知・防御が可能となります。
ファイアウォールは、主に不要なサービス(サービスポート)へのアクセスを制限し、不正なアクセスの防御を行っております。
また IDS/ADS では不正なアクセスを検知するとアクセス元の通信を遮断します。
しかし Web サイトなど、公開されているサービス(HTTP や HTTPS)はファイアウォールでは制限されない形となるため Web アプリケーションに脆弱性があると攻撃の脅威となります。
WAF ではファイアウォールや IDS/ADS では検知できない攻撃を検出することができます。 例として、データベースを不正に操作する「SQL インジェクション」のパラメーターが含まれたアクセスがあった場合、その通信を遮断するといった対策をとることができます。
重要
・WAF(Web アプリケーションファイアウォール)の有償オプションサービスです。
ご利用に際しては、マイページからお申し込みをお願いいたします。
・サーバーのご契約途中からでもお申込みいただけます。
主契約ドメイン、バーチャルドメインそれぞれでご利用いただけます。
・共用 SSL のアクセス用 URL への通信に対しても、 WAF(Web アプリケーションファイアウォール)は動作いたします。
WAF 機能の ON/OFF 方法
1 コントロールパネルの【制作ツール】>【WAF】をクリックします。
2 「WAF の設定状況」の「有効」「無効にする」をクリックすることで切り替えられます。
初期設定は「無効」になっています。
3 「有効」にすると以下のように表示が切り替わります。
POINT
「サブドメイン」の「有効/無効」は、親ドメイン(契約ドメインまたはバーチャルドメイン)の「有効/無効」の設定に準じます。サブドメイン単位での「有効/無効」の設定は出来かねます。ご了承ください。
WAF の検出ログの確認方法
1 コントロールパネルの【制作ツール】>【WAF】をクリックします。
2 「対象期間」を選択し、「ログを表示する」ボタンをクリックします。
3 検知している場合は、詳細が表示されます。
| 日時 | クライアントから接続された時刻 |
|---|---|
| 動作 |
MONITOR:監視(ログには残りますが、リクエストは拒否しません) BLOCK:拒否(リクエストを拒否し、検出メッセージをクライアントに応答します) |
| クライアントホスト | クライアントの IP アドレス |
| メソッド | HTTP の要求メソッド(GET, POST 等) |
| URL | 接続先 URL |
| 検出シグネチャ | シグネチャ名 |
WAF のログのダウンロード方法
1 FTPアカウントの設定で FTP アカウントを作成します。
- FTP アカウントのログインディレクトリは「/」または「/log」になっている必要があります。
2 「/log」ディレクトリ配下の「waf-detect.log」が当日分、「waf-detect.log.yyyymm」が1 ヶ月分のログファイルとなります。
- WAF のログは3ヶ月前まで保存されています。それより過去のログは自動で削除されますので、必要な場合はお客様にてダウンロードして保存してください。
重要
ログの保存ディレクトリ「/log」やログファイルの名前を変更(リネーム)した場合、 WAF が正常に機能しなくなりますのでご注意ください。
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 で表します |
|---|
通信を遮断した際の表示画面
通信を遮断した際にはブラウザに以下の画面が表示されます。
POINT
WAF が有効な状態で “WAF-TEST-SIGNATURE” を含む 以下の URL にアクセスするとブロックが発動しますので、事前にご確認いただけます。
http:// IP アドレス/WAF-TEST-SIGNATURE
http://ドメイン/WAF-TEST-SIGNATURE
- ドメインでテストされる場合は、該当ドメインが CPI サーバーに向いている必要があります。
- 「サブドメイン追加設定」で設定したドメインは、 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】よりログを確認することができます。
2 WAF の除外設定は Web サーバーに .htaccess を設置し除外設定を行います。 記述は下記の通りです。
『特定のシグネチャを指定して除外』
[ シグネチャ 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 ]
設置した階層以下の filename.php が除外されます。
【.htaccess 記述例】
<Files ~ "sample.php$">SiteGuard_User_ExcludeSig all
</Files>
『クエリを指定した除外』
[ シグネチャ ID|シグネチャ名|urldecode|all|clear] [パラメータ名 ]
【.htaccess 記述例】
例の「all xss」は、キー(xss)に対してすべてのパラメータ(all)を許可しています。実際にどのようなパラメータを受け取るかが分かっている場合は、 all を param に変更ください。
『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 アドレス「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 記述例】
<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/ユーザー ID/html/ディレクトリ名/testに .htaccess を設置)
<IfModule siteguard_module>SiteGuard_User_ExcludeSig clear
</IfModule>
