Web アプリケーションの開発に伴い、Nginx は多くの Web 開発者や管理者にとって最適なサーバーになりました。トランスポート プロトコルを効率的に処理し、安全なサービスを提供します。しかし、最近、Web アプリケーションに脅威をもたらす HTTP/2 脆弱性と呼ばれるセキュリティ上の脆弱性が発見されました。この種の脆弱性を防ぐために Nginx を使用するにはどうすればよいでしょうか?以下で一緒に調べてみましょう。
HTTP/2 脆弱性の概要
まず、HTTP/2 脆弱性とは何なのかを理解しましょう。実際、この脆弱性は、特定の HTTP/2 実装が暗黙的な長さフィールドを持つ DATA フレームを適切に処理しないことが原因で、その結果、サービス妨害攻撃が発生します。攻撃者はこの脆弱性を悪用して、被害者のサーバーに悪意のあるパケットを送信し、サーバーをクラッシュさせる可能性があります。この脆弱性は、Apache や Nginx などの現在の HTTP/2 サーバーの一部にすでに存在しています。
Nginx はどのようにして HTTP/2 の脆弱性を防ぐのでしょうか?
Nginx は、最新バージョンで HTTP/2 の脆弱性の問題を解決しました。 Nginx 1.13.10 以降を使用している場合は、すでに安全です。ただし、これより前のバージョンの Nginx をまだ使用している場合は、攻撃に対する脆弱性を避けるために、すぐにアップグレードすることをお勧めします。
Nginx バージョンのアップグレード
Nginx バージョンをアップグレードするには、まず Nginx 構成ファイルと関連ファイルをバックアップし、それらを復元できることを確認する必要があります。次に、最新バージョンの Nginx バイナリをダウンロードする必要があります。バイナリは公式 Web サイトまたは Nginx リポジトリからダウンロードできます。
たとえば、最新の Nginx バイナリをローカル ホストにダウンロードできます:
$ wget https://nginx.org/packages/mainline/ubuntu/pool/nginx/n/nginx /nginx_1.19.1-1~xenial_amd64.deb
依存関係の問題の解決
新しい Nginx バイナリをインストールする前に、いくつかの依存関係の問題を解決する必要がある場合があります。 Nginx バイナリをインストールするには、OpenSSL や PCRE などの依存関係をインストールする必要があります。次のコマンドを使用して、これらの依存関係の問題を解決できます。
$ sudo apt-get update
$ sudo apt-get install libpcre3-dev zlib1g-dev libssl-dev
Nginx の新しいバージョンをインストールします
インストール後依存関係を修正したため、最新バージョンの Nginx をインストールできるようになりました。
$ sudo dpkg -i nginx_1.19.1-1~xenial_amd64.deb
HTTP/2 を有効にする
Nginx の新しいバージョンが正常にインストールされたら、HTTP/2 を有効にする必要があります。 HTTP2 HTTP/2 の脆弱性を回避します。 Nginx 構成ファイルを変更することで HTTP/2 を有効にできます。 Nginx 構成ファイルを開き、次の行を見つけます。
listen 443 ssl;
この行の後に次の行を追加します
http2;
最終行は次のようになります:
listen 443 ssl http2;
設定ファイルを保存して閉じ、Nginx サーバーを再起動します。
ファイアウォール
Nginx バージョンをアップグレードして HTTP/2 を有効にすることに加えて、サーバーのセキュリティを向上させるためにファイアウォールの使用も検討する必要があります。ファイアウォールは、不要な受信トラフィックをフィルタリングし、安全なトラフィックのみが Web サーバーに到達することを許可します。ファイアウォールを使用すると、外部ネットワークからのアクセスを制限し、信頼された IP アドレスのみが Web サーバーにアクセスできるようにすることができます。
結論
上記は、Nginx を使用して HTTP/2 の脆弱性を防ぐ方法に関するいくつかの方法です。 Nginx のバージョンをアップグレードし、HTTP/2 を有効にし、ファイアウォールを使用して Web サーバーを保護することが重要であることに注意してください。これらのセキュリティのベスト プラクティスに従うことで、Web 攻撃の脅威に対抗し、Web アプリケーションを安全に実行し続けることができます。
以上がNginx を使用して HTTP/2 の脆弱性を防ぐ方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。