NginxでDDoS攻撃を防ぐ方法
分散型サービス拒否攻撃または「DDoS」攻撃は、不正なデジタル通信戦術を通じてサーバーのリソースを隔離します。これらのタイプの攻撃は、コンピューターの世界で組織化された襲撃です。数多くの厄介なアンチライクアクションが組み合わさって、ベテランのサーバーをそのトラックで停止させるのに十分な恐ろしい脅威を生み出します。何よりも悪いことに、疑いを持たないサーバーに対してそのようなゲリラWeb戦争を行う複数の手段があります。幸いなことに、サーバーは反撃するように構成できます。
Unixマシンで非常に人気のあるサーバーシステムであるNginxには、DDoS攻撃の効果を大幅に制限するのに十分な機能が組み込まれています。
Nginx搭載サーバーでこのような脅威を処理するためのいくつかの効果的なオプションは次のとおりです。
構成ファイルのバックアップ
設定を変更する前に、サーバーの構成をすばやくバックアップしてください。これには次のコマンドが機能します:
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.backup-original
完了したら、次に進む準備ができています。
トラフィックの確認
サーバーのトラフィックを監視することで、セキュリティを最適化し、将来的に追加の戦術を実装することが容易になります。 Nginxには、このために特別に作成されたモジュールがあります。
ステータスページの設定
Nginxには通常、「スタブステータス」(http_stub_status_module)という名前のモジュールが付属しており、この種の機能をサーバー環境に簡単に統合できます。まず、次のコマンドを使用して確認します。
nginx -V
または、上記をgrepにパイプして、より速く見つけることができます:
nginx -V 2>&1 | grep -o with-http_stub_status_module
出力が上記の出力のようになっている場合は、問題ありません。それ以外の場合は、モジュールを含めてNginxインストールを再インストールまたは再コンパイルする必要があります。
確認できるステータスページの設定は簡単ですが、安全を確保するために、アクセスを最小限(マシン)に制限する必要もあります。 「/etc/nginx/nginx.conf」にあるサーバーのメイン構成ファイルを開くことから始めます。
それを開き、次のコードを「httpディレクティブ」に追加してモジュールをアクティブ化し、「localhost」、「/ status_page」、「127.0.0.1」の代わりに独自の情報を使用します。
server { listen 80; listen [::]:80; server_name localhost; ## # Status Page Settings ## location /status_page { stub_status on; allow 127.0.0.1; allow ::1; deny all; } }
注 :このファイルを変更するには、sudo権限が必要です。
次に、構成をテストします:
sudo nginx -t
すべてが順調な場合は、サーバーにリロード信号を送信します:
sudo systemctl reload nginx
ステータスページにアクセスするには、server_nameの場所にアクセスし、続いてWebブラウザで「/ status_page」にアクセスするか、curlなどのコマンドラインツールを使用します。 (これは、ブラウザのキャッシュが自動的に更新されない場合に役立ちます。)次に、例のページにアクセスするためのcurlコマンドを示します。
curl localhost/status_page
ブラウザでは、上記は次の画像のようになります。
アクセスログを確認する
上記で設定したステータスページを確認するときに異常なトラフィックに気付いた場合は、サーバーのアクセスログを確認することをお勧めします。これは「/var/log/nginx/access.log」にあります。ログには、使用されたHTTPメソッド、アクセス試行の日時、ユーザーエージェント、およびアクセスされたページが一覧表示されます。
接続の制限
DDoS攻撃を阻止するために試す価値のある多くの有用な戦術の中で、最も単純で最も効果的なものの1つは、着信トラフィックレートの制限です。
理想的には、悪意のあるボットが人間のクライアントに対して妥当な速度を維持しながら、非人間的な速度でサーバーを圧倒するのを防ぐのに十分なだけアクセスを制限する必要があります。 Nginxでは、これはlimit_req_zone
で実現できます。 およびlimit_req
ディレクティブ。次のコードは、サーバーが表示するように構成されている任意の場所で使用するためのメモリとレートの制約を設定します。
limit_req_zone $binary_remote_addr zone=speedbump:10m rate=10r/s;
「ゾーン」は、ユーザー要求が格納されるメモリ内のスペースの名前とサイズ(この場合はメガバイト単位)を指定します。 「rate」は、Nginxが毎秒受け入れるリクエストの総数(この例では10)を確立します。このコードをルールとして考え、次のコードをそのルールの使用として考えてください。
limit_req zone=speedbump burst=20;
上記のコードは、実際には、制限ルールを実装するだけではありません。また、最大20のリクエストの小さなキューを追加して、通常よりも少し速く表示される正当な接続をソフトに処理し、ルールとキューの両方を超えると、クライアントに503エラーが発生します。 nginx.confでの両方のディレクティブは次のようになります:
IPアドレスのブラックリストへの登録
サーバーのDDoSingであるIPアドレスを取得できる場合は、それをブラックリストに登録して、このIPアドレスから発信された接続をすべてドロップすることができます。
サーバーディレクティブに次のコードを追加します。
location / { deny 123.123.123.0/28; # ... }
特定のファイルへのリクエストをブロックする
DDoS攻撃がサーバー上の特定のファイルを標的にしている場合(たとえば、WordPressのxmlrpc.phpファイル(これはほとんどのWordPressサーバーで非常に標的にされているファイルです))、DDoS攻撃へのすべての要求をブロックできます。次のコードをサーバーディレクティブに追加します:
location /xmlrpc.php { deny all; }
上記の手順に従うと、ほとんどのDDoS攻撃を制限できるようになります。配置できる追加のセキュリティオプションについては、Nginxのドキュメントを確認してください。
-
USB 攻撃を防ぐ方法
このデジタル時代では、サイバー犯罪者による攻撃やデータ侵害の事例が日常的に発生しています。そして、彼らはすぐには消えません。悪意のあるプログラミングの専門知識を使用するハッカーは、私たちのデバイスに侵入する新しい方法を見つけています。隔日で、サイバー犯罪の専門家がプライベート システムや企業ネットワークに侵入してプライバシーを妨害する方法についての新しい話を耳にします。 では、どうすれば USB 攻撃を防ぐことができるのでしょうか? ハッカーが最初に攻撃を計画する他のすべての方法の中で、USB フラッシュ ドライブは脅威に対して最も脆弱です。ファイルを保存または転送するための頼りになるス
-
今日の DDoS 攻撃の進化
DDoS (分散型サービス拒否) は、複数のボットネット システムが単一のシステムを標的にしてフラッディングし、その運用を妨害する攻撃です。これは、攻撃者が Web サイト上のサービスを停止しようとする試みです。アプリケーション、ネットワーク、サービス、デバイス、サーバー、さらにはソフトウェア内の特定のトランザクションなど、あらゆるサービスへのアクセスを停止することで管理できます。 DoS 攻撃では、悪意のあるデータまたは要求を送信しているのは 1 つのシステムです。 DDoS 攻撃は複数のシステムから発生します。 サイバー犯罪者は、サービスに対する要求をあふれさせてシステムを混乱させま