検索
ホームページ運用・保守NginxNginx と Nginx Plus を使用して DDOS 攻撃に対抗する方法

1. アプリケーション層の DDOS 攻撃の特徴

アプリケーション層 (第 7 層/http 層) の DDOS 攻撃は、通常、トロイの木馬プログラムによって開始されます。ターゲット システムの脆弱性を悪用してより適切に設計できる。たとえば、多数の同時リクエストを処理できないシステムの場合、セッションを維持するために多数の接続を確立し、定期的に少数のデータ パケットを送信するだけで、システムのリソースが枯渇してしまい、処理できなくなる可能性があります。 DDoS の目的を達成するために新しい接続要求を受け入れます。その他の攻撃には、大きなデータ パケットを送信するために大量の接続要求を送信することが含まれます。この攻撃はトロイの木馬プログラムによって開始されるため、攻撃者は迅速に多数の接続を確立し、短期間に大量のリクエストを発行することができます。

以下は DDoS の特別な証拠です。これらの特性を利用して DDoS (含むがこれに限定されない) に対抗できます。

  1. 攻撃は、比較的固定された IP から発生することがよくあります。 IP セグメント、つまり各 IP には実際のユーザーよりもはるかに多くの接続とリクエストがあります。 (注: これは、そのようなリクエストすべてが DDoS 攻撃を表すという意味ではありません。NAT を使用する多くのネットワーク アーキテクチャでは、多くのクライアントがゲートウェイの IP アドレスを使用してパブリック ネットワーク リソースにアクセスします。ただし、それでも、そのようなリクエストの数とその数は接続数も ddos​​ 攻撃よりもはるかに少なくなります。)

  2. この攻撃はトロイの木馬によって発行され、その目的はサーバーに過負荷をかけることであるため、接続の頻度は要求は普通の人よりもはるかに高くなります。

  3. #user-agent は通常、非標準の値です。

  4. referer は、攻撃に簡単に関連付けられる値である場合があります

2. nginx と nginx plus を使用して ddos​​ 攻撃に対抗する

上記の ddos​​ 攻撃の特徴と組み合わせることで、nginx と nginx plus nginx plus には、DDoS 攻撃を効果的に防御するために、入口のアクセス トラフィックを調整し、リバース プロキシからバックエンド サーバーへのトラフィックを制御することで、DDoS 攻撃に抵抗するという目的を達成できます。

1. リクエスト速度の制限

nginx および nginx plus の接続リクエストを実際のユーザーリクエストの妥当な範囲内に設定します。たとえば、通常のユーザーが 2 秒ごとにログイン ページをリクエストできると思われる場合は、クライアント IP からのリクエストを 2 秒ごとに受信するように nginx を設定できます (1 分あたり 30 リクエストにほぼ相当)。

limit_req_zone $binary_remote_addr zone=one:10m rate=30r/m; 
server { 
... 
location /login.html { 
limit_req zone=one; 
... 
} 
}

`limit_req_zone` コマンドは、リクエスト ステータスの特定のキー値 (上記の例ではクライアント IP ($binary_remote_addr)) を保存するために one という名前の共有メモリ ゾーンを設定します。 location ブロックの `limit_req` は、1 つの共有メモリ領域を参照することによって /login.html へのアクセスを制限します。

2. 接続数を制限する

nginx および nginx plus の接続数を、実際のユーザー リクエストの妥当な範囲内に設定します。たとえば、クライアント IP ごとに /store への接続を 10 個まで設定できます。

limit_conn_zone $binary_remote_addr zone=addr:10m; 
server { 
... 
location /store/ { 
limit_conn addr 10; 
... 
} 
}

`limit_conn_zone` コマンドは、特定のキー値 (上記の例ではクライアント IP ($binary_remote_addr)) の状態を保存するために、addr と呼ばれる共有メモリ領域を設定します。 location ブロックの `limit_conn` は、addr 共有メモリ領域を参照することにより、/store/ への最大接続数を 10 に制限します。

3. 遅い接続を閉じる

slowlris などの一部の DDoS 攻撃は、多数の接続を確立し、定期的にデータ パケットを送信することでセッションを維持します。攻撃の目的を達成するために、このサイクルは通常、通常のリクエストよりも低くなります。この場合、低速接続を閉じることで攻撃に抵抗できます。

`client_body_timeout` コマンドはクライアント要求の読み取りのタイムアウトを定義するために使用され、`client_header_timeout` コマンドはクライアント要求ヘッダーの読み取りのタイムアウトを設定するために使用されます。これら 2 つのパラメータのデフォルト値は 60 秒ですが、次のコマンドを使用して 5 秒に設定できます:

server { 
client_body_timeout 5s; 
client_header_timeout 5s; 
... 
}

4. Set ip blacklist
# #攻撃が特定の IP アドレスからのものであると判断された場合は、その IP アドレスをブラックリストに追加することができ、nginx はそのリクエストを受け付けなくなります。たとえば、攻撃が 123.123.123.1 ~ 123.123.123.16 の範囲の IP アドレスから発生していると判断した場合、次のように設定できます。

location / { 
deny 123.123.123.0/28; 
... 
}

または、攻撃が 123.123 から発生していると判断した場合.123.3、123.123.123.5、123.123.123.7 いくつかの IP は次のように設定できます:

location / { 
deny 123.123.123.3; 
deny 123.123.123.5; 
deny 123.123.123.7; 
... 
}

5. IP ホワイトリストを設定します


Web サイトのみの場合特定の IP または IP セグメントへのアクセスを許可します。allow コマンドと Deny コマンドを一緒に使用して、指定した IP アドレスのみに Web サイトへのアクセスを制限できます。次のように、192.168.1.0 セグメントのイントラネット ユーザーのみにアクセスを許可するように設定できます。

location / { 
allow 192.168.1.0/24; 
deny all; 
... 
}

deny コマンドは、allow で指定された IP 範囲を除く他のすべての IP アドレスからのアクセス要求を拒否します。

6. キャッシュを使用してトラフィックのピークを削減する


nginx のキャッシュ機能を有効にし、特定のキャッシュ パラメーターを設定することで、攻撃によるトラフィックを削減できます。同時に、バックエンド サーバーにかかるリクエストの負荷も軽減できます。以下にいくつかの便利な設定を示します:

    proxy_cache_use_stale ` の更新パラメータは、キャッシュされたオブジェクトをいつ更新するかを nginx に指示します。必要なのはバックエンドへの更新リクエストのみであり、キャッシュが有効である間、オブジェクトに対するクライアント リクエストはバックエンド サーバーにアクセスする必要はありません。ファイルに対する頻繁なリクエストによって攻撃が実行される場合、キャッシュによってバックエンド サーバーへのリクエストの数が大幅に削減されます。
  1. proxy_cache_key ` 命令定义的键值通常包含一些内嵌的变量(默认的键值 $scheme$proxy_host$request_uri 包含了三个变量)。如果键值包含 `$query_string` 变量,当攻击的请求字符串是随机的时候就会给 nginx 代理过重的缓存负担,因此我们建议一般情况下不要包含 `$query_string` 变量。

7. 屏蔽特定的请求

可以设置 nginx、nginx plus 屏蔽一些类型的请求:

  1. 针对特定 url 的请求

  2. 针对不是常见的 user-agent 的请求

  3. 针对 referer 头中包含可以联想到攻击的值的请求

  4. 针对其他请求头中包含可以联想到攻击的值的请求

比如,如果你判定攻击是针对一个特定的 url:/foo.php,我们就可以屏蔽到这个页面的请求:

location /foo.php { 
deny all; 
}

或者你判定攻击请求的 user-agent 中包含 foo 或 bar,我们也可以屏蔽这些请求:

location / { 
if ($http_user_agent ~* foo|bar) { 
return 403; 
} 
... 
}

http_name 变量引用一个请求头,上述例子中是 user-agent 头。可以针对其他的 http 头使用类似的方法来识别攻击。

8. 限制到后端服务器的连接数

一个 nginx、nginx plus 实例可以处理比后端服务器多的多的并发请求。在 nginx plus 中,你可以限制到每一个后端服务器的连接数,比如可以设置 nginx plus 与 website upstream 中的每个后端服务器建立的连接数不得超过200个:

upstream website { 
server 192.168.100.1:80 max_conns=200; 
server 192.168.100.2:80 max_conns=200; 
queue 10 timeout=30s; 
}

`max_conns` 参数可以针对每一个后端服务器设置 nginx plus 可以与之建立的最大连接数。`queue` 命令设置了当每个后端服务器都达到最大连接数后的队列大小,`timeout` 参数指定了请求在队列中的保留时间。

9. 处理特定类型的攻击

有一种攻击是发送包含特别大的值的请求头,引起服务器端缓冲区溢出。nginx、nginx plus 针对这种攻击类型的防御,可以参考

[using nginx and nginx plus to protect against cve-2015-1635]
)

10. 优化nginx性能

ddos 攻击通常会带来高的负载压力,可以通过一些调优参数,提高 nginx、nginx plus 处理性能,硬抗 ddos 攻击,详细参考:

[tuning nginx for performance]

三、识别ddos攻击

到目前为止,我们都是集中在如何是用 nginx、nginx plus 来减轻 ddos 攻击带来的影响。如何才能让 nginx、nginx plus 帮助我们识别 ddos 攻击呢?`nginx plus status module` 提供了到后端服务器流量的详细统计,可以用来识别异常的流量。nginx plus 提供一个当前服务状态的仪表盘页面,同时也可以在自定义系统或其他第三方系统中通过 api 的方式获取这些统计信息,并根据历史趋势分析识别非正常的流量进而发出告警。

以上がNginx と Nginx Plus を使用して DDOS 攻撃に対抗する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事は亿速云で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
Nginx vs. Apache:Webサーバーテクノロジーの比較Nginx vs. Apache:Webサーバーテクノロジーの比較May 02, 2025 am 12:08 AM

Nginxは、高い並行性と静的コンテンツの処理に適していますが、Apacheは動的な内容と複雑なURL書き換えに適しています。 1.Nginxは、高い並行性に適したイベント駆動型モデルを採用しています。 2。Apacheは、動的なコンテンツに適したプロセスモデルまたはスレッドモデルを使用します。 3。NGINX構成は簡単ですが、Apache構成は複雑ですが、より柔軟です。

NginxとApache:展開と構成NginxとApache:展開と構成May 01, 2025 am 12:08 AM

NginxとApacheにはそれぞれ独自の利点があり、選択は特定のニーズに依存します。 1.NGINXは、単純な展開を備えた高い並行性に適しており、構成の例には仮想ホストとリバースプロキシが含まれます。 2。Apacheは複雑な構成に適しており、展開も同様に簡単です。構成の例には、仮想ホストとURL書き換えが含まれます。

Nginxユニットの目的:Webアプリケーションの実行Nginxユニットの目的:Webアプリケーションの実行Apr 30, 2025 am 12:06 AM

Nginxunitの目的は、Webアプリケーションの展開と管理を簡素化することです。その利点には、次のものが含まれます。1)Python、PHP、Go、Java、node.jsなどの複数のプログラミング言語をサポートします。 2)動的構成と自動リロード関数を提供します。 3)統一されたAPIを介してアプリケーションライフサイクルを管理します。 4)非同期I/Oモデルを採用して、高い並行性と負荷分散をサポートします。

Nginx:高性能Webサーバーの紹介Nginx:高性能Webサーバーの紹介Apr 29, 2025 am 12:02 AM

Nginxは2002年に開始され、C10Kの問題を解決するためにIgorsysoevによって開発されました。 1.Nginxは、高性能の非同期アーキテクチャであり、高い並行性に適した高性能Webサーバーです。 2。システムのパフォーマンスと信頼性を向上させるために、リバースプロキシ、ロードバランス、キャッシュなどの高度な機能を提供します。 3。最適化手法には、HTTP/2とセキュリティ構成を使用した、ワーカープロセスの数の調整、GZIP圧縮の有効化が含まれます。

Nginx vs. Apache:アーキテクチャを見てくださいNginx vs. Apache:アーキテクチャを見てくださいApr 28, 2025 am 12:13 AM

NginxとApacheの主なアーキテクチャの違いは、Nginxがイベント駆動型の非同期非ブロッキングモデルを採用し、Apacheはプロセスまたはスレッドモデルを使用することです。 1)nginxは、静的な内容と逆プロキシに適したイベントループとI/O多重化メカニズムを介して、高電流接続を効率的に処理します。 2)Apacheは、非常に安定しているがリソース消費量が高いマルチプロセスまたはマルチスレッドモデルを採用しており、リッチモジュールの拡張が必要な​​シナリオに適しています。

Nginx vs. Apache:長所と短所を調べますNginx vs. Apache:長所と短所を調べますApr 27, 2025 am 12:05 AM

Nginxは、高い同時コンテンツと静的コンテンツの処理に適していますが、Apacheは複雑な構成と動的コンテンツに適しています。 1。NGINXは、交通量の多いシナリオに適した同時接続を効率的に処理しますが、動的コンテンツを処理するときは追加の構成が必要です。 2。Apacheは、複雑なニーズに適したリッチモジュールと柔軟な構成を提供しますが、並行性のパフォーマンスが低いです。

NginxとApache:重要な違​​いを理解するNginxとApache:重要な違​​いを理解するApr 26, 2025 am 12:01 AM

NginxとApacheにはそれぞれ独自の利点と欠点があり、選択は特定のニーズに基づいている必要があります。 1.Nginxは、非同期の非ブロッキングアーキテクチャのため、高い並行性シナリオに適しています。 2。Apacheは、モジュラー設計のため、複雑な構成を必要とする低変動シナリオに適しています。

Nginxユニット:主要な機能と機能Nginxユニット:主要な機能と機能Apr 25, 2025 am 12:17 AM

Nginxunitは、複数のプログラミング言語をサポートし、動的構成、ゼロダウンタイム更新、組み込みのロードバランシングなどの機能を提供するオープンソースアプリケーションサーバーです。 1。動的構成:再起動せずに構成を変更できます。 2。多言語サポート:Python、Go、Java、PHPなどと互換性があります。 4。ビルトインロードバランシング:リクエストは、複数のアプリケーションインスタンスに配布できます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、