90

apacheで堅牢なレート制限(リクエスト|バイト/ IP /ユニット時間)を実装するために利用できる技術やモジュールは何ですか?

4

7 に答える 7

54

最高の

  • mod_evasive(DoSエクスポージャーの削減に重点を置いています)
  • mod_cband(「通常の」帯域幅制御に最適)

残りは

于 2008-09-25T06:09:42.997 に答える
23

このブログ投稿で述べたように、 mod_securityを使用して 1 秒あたりのレート制限を実装することは可能のようです。

構成は次のようなものです。

SecRuleEngine On

<LocationMatch "^/somepath">
  SecAction initcol:ip=%{REMOTE_ADDR},pass,nolog
  SecAction "phase:5,deprecatevar:ip.somepathcounter=1/1,pass,nolog"
  SecRule IP:SOMEPATHCOUNTER "@gt 60" "phase:2,pause:300,deny,status:509,setenv:RATELIMITED,skip:1,nolog"
  SecAction "phase:2,pass,setvar:ip.somepathcounter=+1,nolog"
  Header always set Retry-After "10" env=RATELIMITED
</LocationMatch>

ErrorDocument 509 "Rate Limit Exceeded"
于 2013-12-03T16:24:31.157 に答える
13

Web アプリケーション ファイアウォールを含む多くの方法がありますが、Apache mod を使用する場合に最も簡単に実装できます。

私がお勧めしたいそのような mod の 1 つがmod_qosです。これは、特定の DOS、ブルートフォース、スローロリス タイプの攻撃に対して非常に効果的な無料のモジュールです。これにより、サーバーの負荷がかなり軽減されます。

とてもパワフルです。

mod_qosモジュールの現在のリリースでは、以下を管理するための制御メカニズムが実装されています。

  • ロケーション/リソース (URL) または仮想ホストへの同時要求の最大数。

  • URL への 1 秒あたりの最大許容リクエスト数や 1 秒あたりのダウンロードキロバイトの最大/最小数などの帯域幅の制限。

  • 1 秒あたりのリクエスト イベントの数を制限します (特別なリクエスト条件)。

  • 定義された期間内のリクエスト イベントの数を制限します。
  • また、制限なしまたは制限なしで Web サーバーにアクセスする可能性のある非常に重要な人物 (VIP) を検出することもできます。
  • 許可されていない操作を拒否するための一般的な要求行とヘッダー フィルター。

  • リクエスト本文データの制限とフィルタリング (mod_parp が必要)。

  • 個々のクライアント (IP) の要求イベントの数を制限します。

  • TCP 接続レベルの制限。たとえば、単一の IP ソース アドレスまたは動的キープアライブ制御から許可される接続の最大数。

  • サーバーが空き TCP 接続を使い果たした場合、既知の IP アドレスを優先します。

これは、何に使用できるかのサンプル構成です。ニーズに合わせて何百もの構成が可能です。コントロールの詳細については、サイトをご覧ください。

Sample configuration:
# minimum request rate (bytes/sec at request reading):
QS_SrvRequestRate                                 120

# limits the connections for this virtual host:
QS_SrvMaxConn                                     800

# allows keep-alive support till the server reaches 600 connections:
QS_SrvMaxConnClose                                600

# allows max 50 connections from a single ip address:
QS_SrvMaxConnPerIP                                 50

# disables connection restrictions for certain clients:
QS_SrvMaxConnExcludeIP                    172.18.3.32
QS_SrvMaxConnExcludeIP                    192.168.10.

http://opensource.adnovum.ch/mod_qos/

于 2015-02-13T15:01:09.403 に答える
7

Apache 2.4 には、mod_ratelimitという新しいストック モジュールがあります。モデム速度をエミュレートするには、mod_dialupを使用できます。mod_ratelimit をすべてに使用できなかった理由はわかりませんが。

于 2013-07-16T16:51:51.883 に答える
6

残念ながら、mod_evasiveprefork 以外の構成で使用すると期待どおりに動作しません (最近の apache セットアップは主に MPM です)。

于 2013-12-20T15:51:54.550 に答える
3

もう 1 つのオプション - mod_qos

構成は簡単ではありませんが、強力です。

http://opensource.adnovum.ch/mod_qos/

于 2013-08-08T11:24:02.303 に答える