コンテンツにスキップ

CPU高使用率のトラブルシューティング

Wallarmが推奨するCPU使用率は約10-15%です。これは、フィルタリングノードが通常の10倍のトラフィックスパイクに対応できることを意味します。Wallarmノードが期待より多くのCPUを消費し、CPU使用率を下げる必要がある場合は、このガイドをご利用ください。

最も長いリクエスト処理時間を明らかにし、主要なCPU消費要因を特定するために、拡張ロギングを有効にすることで処理時間を監視してください。

WallarmによるCPU負荷を下げるために、以下の対策を実施できます:

  • NGINX構成にlimit_reqを追加するか、ノード4.6以降ではWallarm独自のレートリミティング機能を使用できます。ブルートフォース攻撃やその他の攻撃の場合、これがCPU負荷を下げる最良の方法である可能性があります。

    例:limit_reqを使用する構成
    http {
      map $request_uri $binary_remote_addr_map {
        ~^/get $binary_remote_addr;
        ~^/post $binary_remote_addr;
        ~^/wp-login.php $binary_remote_addr;
      }
      limit_req_zone $binary_remote_addr_map zone=urls:10m rate=3r/s;
      limit_req_zone $binary_remote_addr$request_uri zone=allurl:10m rate=5r/s;
    
      limit_req_status 444;
    
      server {
        location {
          limit_req zone=urls nodelay;
          limit_req zone=allurl burst=30;
        }
      }
    }        
    
  • NGINXおよびTarantoolに適切なメモリが割り当てられていることを確認します。

  • 任意のフィルトレーションモードにおいて、これらのリクエストから攻撃サインを検索することなく即座にdenylistに含まれるIPからのリクエストをブロックするonwallarm_acl_access_phaseディレクティブが設定されていることを確認します。このディレクティブを有効にするとともに、誤ってAllowlistに追加されたIPや、誤ってDenylistに追加されていない対象を見つけるために、WallarmのIPリストを確認してください。

    ただし、この方法でCPU使用率を下げると、検索エンジンからのリクエストをスキップする結果になる可能性があります。しかしながら、この問題はNGINX構成におけるmapモジュールの活用によっても解決可能です。

    例:検索エンジン問題を解決するmapモジュールを使用する構成
    http {
      wallarm_acl_access_phase on;
      map $http_user_agent $wallarm_mode{
          default monitoring;
          ~*(google|bing|yandex|msnbot) off;
      }
      server {
        server_name mos.ru;
        wallarm_mode $wallarm_mode;
      }
    }
    
  • ノードバージョン4.4以降デフォルトで有効になっているlibdetectionwallarm_enable_libdetection offによって無効化します。libdetectionを使用するとCPU消費が5-10%増加します。ただし、libdetectionを無効化するとSQLi攻撃検出の誤検知が増加する可能性があることを考慮する必要があります。

  • 検知された攻撃の解析中に、Wallarmがリクエストの特定要素に対して誤ってルール内のパーサーまたはNGINX構成内のパーサーを使用していることが判明した場合、対象に適用されないパーサーは無効化してください。ただし、一般的にパーサーを無効化することは推奨されません。

  • リクエスト処理時間を短縮します。ただし、これにより正当なリクエストがサーバーに届かなくなる可能性があることに注意してください。

  • 可能性のあるDDoSの標的を解析し、利用可能な保護対策の1つを適用してください。