Nginx と Nginx Plus を使用して DDOS 攻撃に対抗する方法
1. アプリケーション層の DDOS 攻撃の特徴
アプリケーション層 (第 7 層/http 層) の DDOS 攻撃は、通常、トロイの木馬プログラムによって開始されます。ターゲット システムの脆弱性を悪用してより適切に設計できる。たとえば、多数の同時リクエストを処理できないシステムの場合、セッションを維持するために多数の接続を確立し、定期的に少数のデータ パケットを送信するだけで、システムのリソースが枯渇してしまい、処理できなくなる可能性があります。 DDoS の目的を達成するために新しい接続要求を受け入れます。その他の攻撃には、大きなデータ パケットを送信するために大量の接続要求を送信することが含まれます。この攻撃はトロイの木馬プログラムによって開始されるため、攻撃者は迅速に多数の接続を確立し、短期間に大量のリクエストを発行することができます。
以下は DDoS の特別な証拠です。これらの特性を利用して DDoS (含むがこれに限定されない) に対抗できます。
攻撃は、比較的固定された IP から発生することがよくあります。 IP セグメント、つまり各 IP には実際のユーザーよりもはるかに多くの接続とリクエストがあります。 (注: これは、そのようなリクエストすべてが DDoS 攻撃を表すという意味ではありません。NAT を使用する多くのネットワーク アーキテクチャでは、多くのクライアントがゲートウェイの IP アドレスを使用してパブリック ネットワーク リソースにアクセスします。ただし、それでも、そのようなリクエストの数とその数は接続数も ddos 攻撃よりもはるかに少なくなります。)
この攻撃はトロイの木馬によって発行され、その目的はサーバーに過負荷をかけることであるため、接続の頻度は要求は普通の人よりもはるかに高くなります。
- #user-agent は通常、非標準の値です。
- referer は、攻撃に簡単に関連付けられる値である場合があります
2. nginx と nginx plus を使用して ddos 攻撃に対抗する
1. リクエスト速度の制限
limit_req_zone $binary_remote_addr zone=one:10m rate=30r/m; server { ... location /login.html { limit_req zone=one; ... } }
2. 接続数を制限する
limit_conn_zone $binary_remote_addr zone=addr:10m; server { ... location /store/ { limit_conn addr 10; ... } }
3. 遅い接続を閉じる
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; ... }
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 に指示します。必要なのはバックエンドへの更新リクエストのみであり、キャッシュが有効である間、オブジェクトに対するクライアント リクエストはバックエンド サーバーにアクセスする必要はありません。ファイルに対する頻繁なリクエストによって攻撃が実行される場合、キャッシュによってバックエンド サーバーへのリクエストの数が大幅に削減されます。
proxy_cache_key ` 命令定义的键值通常包含一些内嵌的变量(默认的键值 $scheme$proxy_host$request_uri 包含了三个变量)。如果键值包含 `$query_string` 变量,当攻击的请求字符串是随机的时候就会给 nginx 代理过重的缓存负担,因此我们建议一般情况下不要包含 `$query_string` 变量。
7. 屏蔽特定的请求
可以设置 nginx、nginx plus 屏蔽一些类型的请求:
针对特定 url 的请求
针对不是常见的 user-agent 的请求
针对 referer 头中包含可以联想到攻击的值的请求
针对其他请求头中包含可以联想到攻击的值的请求
比如,如果你判定攻击是针对一个特定的 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 サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









nginxが開始されるかどうかを確認する方法:1。コマンドラインを使用します:SystemCTLステータスnginx(Linux/unix)、netstat -ano | FindStr 80(Windows); 2。ポート80が開いているかどうかを確認します。 3.システムログのnginx起動メッセージを確認します。 4. Nagios、Zabbix、Icingaなどのサードパーティツールを使用します。

Windowsでnginxを構成する方法は? nginxをインストールし、仮想ホスト構成を作成します。メイン構成ファイルを変更し、仮想ホスト構成を含めます。 nginxを起動またはリロードします。構成をテストし、Webサイトを表示します。 SSLを選択的に有効にし、SSL証明書を構成します。ファイアウォールを選択的に設定して、ポート80および443のトラフィックを許可します。

Linuxでは、次のコマンドを使用して、nginxが起動されるかどうかを確認します。SystemCTLステータスNGINXコマンド出力に基づいて、「アクティブ:アクティブ(実行)」が表示された場合、NGINXが開始されます。 「アクティブ:非アクティブ(dead)」が表示されると、nginxが停止します。

Linuxでnginxを開始する手順:nginxがインストールされているかどうかを確認します。 systemctlを使用して、nginxを開始してnginxサービスを開始します。 SystemCTLを使用して、NGINXがシステムスタートアップでNGINXの自動起動を有効にすることができます。 SystemCTLステータスNGINXを使用して、スタートアップが成功していることを確認します。 Webブラウザのhttp:// localhostにアクセスして、デフォルトのウェルカムページを表示します。

NGINXサーバーを起動するには、異なるオペレーティングシステムに従って異なる手順が必要です。Linux/UNIXシステム:NGINXパッケージをインストールします(たとえば、APT-GetまたはYumを使用)。 SystemCtlを使用して、NGINXサービスを開始します(たとえば、Sudo SystemCtl Start NGinx)。 Windowsシステム:Windowsバイナリファイルをダウンロードしてインストールします。 nginx.exe実行可能ファイルを使用してnginxを開始します(たとえば、nginx.exe -c conf \ nginx.conf)。どのオペレーティングシステムを使用しても、サーバーIPにアクセスできます

Nginx 403禁止エラーを修正する方法は?ファイルまたはディレクトリの許可を確認します。 2。HTACCESSファイルを確認します。 3. nginx構成ファイルを確認します。 4。nginxを再起動します。他の考えられる原因には、ファイアウォールルール、Selinux設定、またはアプリケーションの問題が含まれます。

質問への回答:304変更されていないエラーは、ブラウザがクライアントリクエストの最新リソースバージョンをキャッシュしたことを示しています。解決策:1。ブラウザのキャッシュをクリアします。 2.ブラウザキャッシュを無効にします。 3.クライアントキャッシュを許可するようにnginxを構成します。 4.ファイル許可を確認します。 5.ファイルハッシュを確認します。 6. CDNまたは逆プロキシキャッシュを無効にします。 7。nginxを再起動します。

サーバーには、要求されたリソースにアクセスする許可がなく、NGINX 403エラーが発生します。ソリューションには以下が含まれます。ファイル許可を確認します。 .htaccess構成を確認してください。 nginx構成を確認してください。 SELINUXアクセス許可を構成します。ファイアウォールルールを確認してください。ブラウザの問題、サーバーの障害、その他の可能なエラーなど、他の原因をトラブルシューティングします。
