Nginx は、インターネットおよびエンタープライズ レベルのアプリケーションで広く使用されている高性能 Web サーバーです。 Nginx は、優れたパフォーマンスと信頼性を提供することに加えて、いくつかの強力なセキュリティ機能も備えています。この記事では、Nginx の実践的な Web セキュリティの攻撃と防御を掘り下げ、さまざまな攻撃から Web アプリケーションを保護する方法を紹介します。
SSL/TLS は、Web アプリケーションを保護するために不可欠な暗号化通信プロトコルです。 SSL/TLS を使用すると、すべての Web 通信を暗号化できるため、機密データをハッカーの盗難や改ざんから保護できます。 Nginx で SSL/TLS を有効にするには、SSL/TLS 証明書をインストールする必要があります。この証明書は、信頼された認証局 (CA) によって署名される必要があります。以下は、SSL/TLS を有効にするための簡単な Nginx 構成です:
server { listen 443 ssl; server_name mywebsite.com; ssl_certificate /path/to/cert.crt; ssl_certificate_key /path/to/cert.key; location / { # Your web application logic... } }
上記の構成では、listen 443 ssl;
ディレクティブは、標準の 443 ポートを使用して SSL/TLS を有効にするように Nginx に指示します。 。 ssl_certificate
および ssl_certificate_key
ディレクティブは、SSL/TLS 証明書と秘密キーのファイル パスを指定します。
HTTP2 は、従来の HTTP 1.1 よりも高速な Web ページの読み込み速度と優れたパフォーマンスを提供できる新しいネットワーク プロトコルです。 HTTP2 を使用すると、サーバーから複数のファイルやリソースを同時に取得でき、テキスト形式ではなくバイナリ形式を使用できるため、通信が高速になります。同時に、HTTP2 は、複数のファイルを一度にクライアントに転送できるサーバー プッシュなど、より優れたセキュリティも提供し、ラウンドトリップ時間を短縮します。 Nginx で HTTP2 を有効にするには、次の設定を使用できます。
server { listen 443 ssl http2; server_name mywebsite.com; ssl_certificate /path/to/cert.crt; ssl_certificate_key /path/to/cert.key; location / { # Your web application logic... } }
上記の設定では、listen
の に
http2 オプションを追加しました。ディレクティブ ssl
オプションを使用して HTTP2 を有効にします。
SQL インジェクションは非常に一般的な攻撃手法であり、ハッカーは悪意のあるコードを挿入してデータベースにアクセスし、機密情報を盗んだり、データの整合性を破壊したりする可能性があります。 Nginx では、次の構成を使用して SQL インジェクション攻撃を防ぐことができます。
location / { # Your web application logic... # Block SQL injection attacks if ($args ~ "(<|%3C).*script.*(>|%3E)" ) { return 403; } }
上記の構成では、正規表現を使用してリクエストのパラメーターにスクリプトが含まれているかどうかを確認しました。スクリプトが原因の場合は、403 エラーが返され、リクエストは拒否されます。
クロスサイト リクエスト フォージェリ (CSRF) は、ハッカーがユーザーをだまして実行させるために使用できる非常に一般的な攻撃方法です。彼らが知らないものは、特定の状況下で悪意のある動作を実行します。 CSRF 攻撃を防ぐには、次のコードを Nginx 構成に追加します。
location / { # Your web application logic... # Block CSRF attacks if ($http_referer !~ "^https?://mywebsite.com") { return 403; } }
上記の構成では、正規表現を使用して、リクエストの Referer
ヘッダーが一致するかどうかを確認しました。独自の Web サイトのドメイン名と一致します。一致するものがない場合、403 エラーが返され、リクエストは拒否されます。
分散型サービス拒否 (DDoS) 攻撃は非常に一般的な攻撃方法であり、ハッカーは大量のコンピューティング リソースを使用して多数の攻撃をシミュレートします。ネットワーク トラフィックの増加により、ターゲット Web サーバーがクラッシュします。 Nginx では、次の構成を通じて DDoS 攻撃を防ぐことができます。
http { # Define blacklist zone geo $blacklist { default 0; # Add IP address to blacklist if over 100 connections per IP # in the last 10 seconds limit_conn_zone $binary_remote_addr zone=blacklist:10m; limit_conn blacklist 100; } server { listen 80 default_server; server_name mywebsite.com; # Add IP addresses to whitelist allow 192.168.1.1/24; deny all; # Block blacklisted IP addresses if ($blacklist = 1) { return 403; } location / { # Your web application logic... } } }
上記の構成では、Nginx の limit_conn_zone
モジュールと limit_conn
モジュールを使用して、それぞれの数を制限しました。 IP アドレスへの同時接続。また、特定の IP アドレス範囲を許可し、IP アドレスがホワイトリストになく、接続制限を超えた場合にのみアクセスをブロックするホワイトリストも追加しました。
概要
Nginx には、Web アプリケーションをさまざまな攻撃から保護するために使用できる強力な Web セキュリティ機能が多数あります。この記事では、次の重要なセキュリティ対策を紹介します。
Referer
ヘッダーをチェックして不正なリクエストを拒否することで、CSRF 攻撃を防止します。 limit_conn_zone
モジュールと limit_conn
モジュールを使用して IP アドレスごとの同時接続数を制限し、ホワイトリストを使用して特定の IP アドレスへのアクセスを許可します。 。 上記のセキュリティ対策を使用することで、Web アプリケーションのセキュリティを保護し、さまざまな攻撃から保護することができます。
以上がNginx Web セキュリティの攻撃と防御の実践の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。