攻撃の検知とブロックに関するトラブルシューティング¶
攻撃が表示されない¶
トラフィックからの攻撃がWallarm Cloudにアップロードされず、その結果Wallarm Console UIに表示されないと疑われる場合は、本記事の手順で問題をデバッグしてください。
問題をデバッグするには、次の手順を順番に実行します。
-
以降のデバッグのために悪意あるトラフィックを生成します。
-
フィルタリングノードの動作モードを確認します。
-
ログを取得し、Wallarmサポートチームと共有します。
悪意あるトラフィックを生成する
Wallarmモジュールのさらなるデバッグを行うには次のとおりです。
-
次の悪意あるトラフィックを送信します:
for i in `seq 100`; do curl "http://<FILTERING_NODE_IP>/?wallarm_test_xxxx=union+select+$i"; sleep 1; done
チェックしたいフィルタリングノードのIPアドレスで
<FILTERING_NODE_IP>
を置き換えます。必要に応じて、コマンドにHost:
ヘッダーを追加します。 -
Wallarm Console → Attacksに攻撃が表示されるまで最長2分待ちます。100件のリクエストすべてが表示される場合、フィルタリングノードは正常に動作しています。
-
フィルタリングノードがインストールされているサーバーに接続し、ノードのメトリクスを取得します:
以降は、
wallarm-status
の出力を参照します。
フィルタリングノードの動作モードを確認する
フィルタリングノードの動作モードは次の要領で確認します。
-
フィルタリングノードのモードが
off
ではないことを確認します。off
モードではノードは受信トラフィックを処理しません。なお、
off
モードはwallarm-status
の各種メトリクスが増加しない一般的な原因です。 -
ノードがNGINXベースの場合は、設定が反映されていることを確認するためにNGINXを再起動します:
-
攻撃が引き続きWallarm Cloudにアップロードされないことを確認するため、悪意あるトラフィックをもう一度生成します。
ログを取得してWallarmサポートチームと共有する
上記の手順で問題が解決しない場合は、次のとおりノードのログを取得し、Wallarmサポートチームと共有してください。
-
Wallarmノードがインストールされているサーバーに接続します。
-
次のとおり
wallarm-status
の出力を取得します:出力をコピーします。
-
Wallarmの診断スクリプトを実行します:
生成されたログファイルを取得します。
-
収集したすべてのデータをWallarmサポートチームへ送付して調査を依頼します。
フィルタリングノードのRPSおよびAPSの値がWallarm Cloudへエクスポートされない¶
フィルタリングノードのRPS(1秒あたりのリクエスト数)およびAPS(1秒あたりの攻撃数)の情報がWallarm Cloudへエクスポートされない場合、原因としてSELinuxが考えられます。
SELinuxはRedHat系Linuxディストリビューション(例: CentOSやAmazon Linux 2.0.2021x以下)ではデフォルトでインストールおよび有効化されています。SELinuxはDebianやUbuntuなど他のLinuxディストリビューションにもインストールできます。
SELinuxの有無と状態は次のコマンドで確認します:
フィルタリングノードを搭載したホストでSELinuxが有効な場合、ノードのインストールまたはアップグレード時に、all-in-oneインストーラーが自動的に設定を行い、ノードの動作を妨げないようにします。
自動設定の後もSeLinuxが原因となり得る問題が続く場合は、次の手順を実施します。
-
コマンド
setenforce 0
を実行してSELinuxを一時的に無効化します。SELinuxは次回の再起動まで無効のままです。
-
問題が解消したかを確認します。
-
支援が必要な場合はお問い合わせの上、Wallarmのテクニカルサポートに支援を依頼します。
SELinuxの恒久的な無効化は推奨されません
セキュリティ上の理由から、SELinuxを恒久的に無効化することは推奨されません。
ブロッキングモード(wallarm_mode block
)で動作しているのにフィルタリングノードが攻撃をブロックしない¶
wallarm_mode
ディレクティブによる設定は、トラフィックのフィルタリングモードを構成する方法のひとつに過ぎません。これらの方法の中には、wallarm_mode
ディレクティブの値よりも優先順位が高いものがあります。
wallarm_mode block
でブロッキングモードを設定したにもかかわらずWallarmフィルタリングノードが攻撃をブロックしない場合は、他の設定方法でフィルタリングモードが上書きされていないことを確認してください:
正常なリクエストなのにユーザーにブロッキングページが表示される¶
Wallarmの対策にもかかわらず正当なリクエストがブロックされたとユーザーから報告があった場合は、本記事の説明に従ってそのリクエストを確認・評価できます。
正当なリクエストがWallarmにブロックされる問題を解決するには、次の手順に従います。
-
ユーザーに対し、ブロックされたリクエストに関する情報をスクリーンショットではなくテキストで提供するよう依頼します。次のいずれかを受領します。
-
Wallarmのブロッキングページを設定している場合は、同ページに表示される情報(ユーザーのIPアドレス、リクエストUUID、その他あらかじめ設定した要素を含む場合があります)。
ブロッキングページの利用
既定またはカスタマイズしたWallarmのブロッキングページを使用していない場合は、ユーザーから適切な情報を得るために設定することを強く推奨します。サンプルページであっても、ブロックされたリクエストに関する有用な情報を収集し、簡単にコピーできる形で提供することを忘れないでください。さらに、そのページはカスタマイズしたり、完全に作り直して、ユーザーに対して情報量の多いブロックメッセージを返すこともできます。
-
ユーザーのクライアントリクエストおよびレスポンスのコピー。ブラウザのページソースコードやターミナルクライアントの入出力のテキストが適しています。
-
-
Wallarm Console → AttacksまたはIncidentsセクションで、ブロックされたリクエストに関連するイベントをsearchします。例えば、search by request IDを実行します:
-
当該イベントを精査し、誤ったブロックか正当なブロックかを判断します。
-
誤ったブロックである場合は、以下の対策を単独または組み合わせて適用して解決します。
-
ユーザーから当初提供された情報が不十分である、または安全に適用できる対策に確信が持てない場合は、詳細をWallarmサポートと共有し、さらなる支援と調査を依頼します。