コンテンツにスキップ

攻撃の検知とブロックに関するトラブルシューティング

攻撃が表示されない

トラフィックからの攻撃がWallarm Cloudにアップロードされず、その結果Wallarm Console UIに表示されないと疑われる場合は、本記事の手順で問題をデバッグしてください。

問題をデバッグするには、次の手順を順番に実行します。

  1. 以降のデバッグのために悪意あるトラフィックを生成します。

  2. フィルタリングノードの動作モードを確認します。

  3. ログを取得し、Wallarmサポートチームと共有します。

悪意あるトラフィックを生成する

Wallarmモジュールのさらなるデバッグを行うには次のとおりです。

  1. 次の悪意あるトラフィックを送信します:

    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:ヘッダーを追加します。

  2. Wallarm Console → Attacksに攻撃が表示されるまで最長2分待ちます。100件のリクエストすべてが表示される場合、フィルタリングノードは正常に動作しています。

  3. フィルタリングノードがインストールされているサーバーに接続し、ノードのメトリクスを取得します:

    curl http://127.0.0.8/wallarm-status
    

    以降は、wallarm-statusの出力を参照します。

フィルタリングノードの動作モードを確認する

フィルタリングノードの動作モードは次の要領で確認します。

  1. フィルタリングノードのモードoffではないことを確認します。offモードではノードは受信トラフィックを処理しません。

    なお、offモードはwallarm-statusの各種メトリクスが増加しない一般的な原因です。

  2. ノードがNGINXベースの場合は、設定が反映されていることを確認するためにNGINXを再起動します:

    sudo systemctl restart nginx
    
    sudo service nginx restart
    
    sudo systemctl restart nginx
    
    sudo systemctl restart nginx
    
    sudo systemctl restart nginx
    
  3. 攻撃が引き続きWallarm Cloudにアップロードされないことを確認するため、悪意あるトラフィックをもう一度生成します。

ログを取得してWallarmサポートチームと共有する

上記の手順で問題が解決しない場合は、次のとおりノードのログを取得し、Wallarmサポートチームと共有してください。

  1. Wallarmノードがインストールされているサーバーに接続します。

  2. 次のとおりwallarm-statusの出力を取得します:

    curl http://127.0.0.8/wallarm-status
    

    出力をコピーします。

  3. Wallarmの診断スクリプトを実行します:

    /opt/wallarm/collect-info.sh
    

    生成されたログファイルを取得します。

  4. 収集したすべてのデータを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の有無と状態は次のコマンドで確認します:

sestatus

フィルタリングノードを搭載したホストでSELinuxが有効な場合、ノードのインストールまたはアップグレード時に、all-in-oneインストーラーが自動的に設定を行い、ノードの動作を妨げないようにします。

自動設定の後もSeLinuxが原因となり得る問題が続く場合は、次の手順を実施します。

  1. コマンドsetenforce 0を実行してSELinuxを一時的に無効化します。

    SELinuxは次回の再起動まで無効のままです。

  2. 問題が解消したかを確認します。

  3. 支援が必要な場合はお問い合わせの上、Wallarmのテクニカルサポートに支援を依頼します。

    SELinuxの恒久的な無効化は推奨されません

    セキュリティ上の理由から、SELinuxを恒久的に無効化することは推奨されません。

ブロッキングモード(wallarm_mode block)で動作しているのにフィルタリングノードが攻撃をブロックしない

wallarm_modeディレクティブによる設定は、トラフィックのフィルタリングモードを構成する方法のひとつに過ぎません。これらの方法の中には、wallarm_modeディレクティブの値よりも優先順位が高いものがあります。

wallarm_mode blockでブロッキングモードを設定したにもかかわらずWallarmフィルタリングノードが攻撃をブロックしない場合は、他の設定方法でフィルタリングモードが上書きされていないことを確認してください:

フィルタリングモードの設定方法の詳細 →

正常なリクエストなのにユーザーにブロッキングページが表示される

Wallarmの対策にもかかわらず正当なリクエストがブロックされたとユーザーから報告があった場合は、本記事の説明に従ってそのリクエストを確認・評価できます。

正当なリクエストがWallarmにブロックされる問題を解決するには、次の手順に従います。

  1. ユーザーに対し、ブロックされたリクエストに関する情報をスクリーンショットではなくテキストで提供するよう依頼します。次のいずれかを受領します。

    • Wallarmのブロッキングページを設定している場合は、同ページに表示される情報(ユーザーのIPアドレス、リクエストUUID、その他あらかじめ設定した要素を含む場合があります)。

      Wallarmのブロッキングページ

      ブロッキングページの利用

      既定またはカスタマイズしたWallarmのブロッキングページを使用していない場合は、ユーザーから適切な情報を得るために設定することを強く推奨します。サンプルページであっても、ブロックされたリクエストに関する有用な情報を収集し、簡単にコピーできる形で提供することを忘れないでください。さらに、そのページはカスタマイズしたり、完全に作り直して、ユーザーに対して情報量の多いブロックメッセージを返すこともできます。

    • ユーザーのクライアントリクエストおよびレスポンスのコピー。ブラウザのページソースコードやターミナルクライアントの入出力のテキストが適しています。

  2. Wallarm Console → AttacksまたはIncidentsセクションで、ブロックされたリクエストに関連するイベントをsearchします。例えば、search by request IDを実行します:

    attacks incidents request_id:<requestId>
    
  3. 当該イベントを精査し、誤ったブロックか正当なブロックかを判断します。

  4. 誤ったブロックである場合は、以下の対策を単独または組み合わせて適用して解決します。

  5. ユーザーから当初提供された情報が不十分である、または安全に適用できる対策に確信が持てない場合は、詳細をWallarmサポートと共有し、さらなる支援と調査を依頼します。