IPv6 の普及に伴い、IPv6 のセキュリティを考慮する必要がある Web サイトが増えています。高性能 Web サーバーである Nginx も、Web サイトの安全な動作を確保するために IPv6 セキュリティ設定を必要としています。この記事では、管理者がWebサイトのセキュリティをより良く守るためのNginxのIPv6セキュリティ設定方法と注意点を紹介します。
まず、Nginx で IPv6 サポートを有効にすることが非常に重要です。 Nginx が正しい IPv6 オプションでコンパイルされていることを確認してください。コンパイル時に、必ず --with-ipv6 オプションを使用して IPv6 サポートを有効にしてください。 Nginx をコンパイルした後、次のコマンドを使用して、IPv6 が適切に動作しているかどうかを確認できます。
$ curl -g -6 http://[::1]/ -I
このコマンドは、IPv6 アドレスを使用してローカル ホストにアクセスし、HTTP ヘッダー情報を表示します。正しく動作すると、次のような出力が表示されます。
... Server: nginx/1.17.3 ...
IPv6 を使用する場合、IPv6 アドレスを使用して、 Nginx のリスニング ポートとサーバー名。 IPv4 とは異なり、IPv6 アドレスは区切り文字としてコロン (:) を使用するため、ウェイター名を角括弧 ([]) で囲む必要があります。例:
listen [::]:80; server_name [::]:example.com;
さらに、IPv6 アドレスを使用する場合は、構成ファイルに不整合やエラーがないことを確認する必要があります。次のコマンドを実行して、Nginx 構成にエラーがあるかどうかを確認できます。
$ sudo nginx -t
攻撃者は多数の IPv6 アドレスを使用する可能性があるためNginx における DoS 攻撃を防ぐことは非常に重要です。これを行うには、Nginx 構成で次の設定を行うことができます。
limit_conn_zone $binary_remote_addr zone=addr:10m; limit_conn addr 20;
この設定では、各 IPv6 アドレスが 10 分間に最大 20 の接続に制限されます。
IPv6 を使用する場合は、ファイアウォールが適切に構成されていることを確認する必要があります。攻撃を防ぐために、サーバーで ip6tables を使用することをお勧めします。一般的な ip6tables ルールをいくつか示します。
-A INPUT -s 2001:db8::1 -j DROP -A INPUT -s 2001:db8:1::/64 -j ACCEPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT -A INPUT -j DROP
ルールの最初の行は、単一の IPv6 アドレスからのすべての接続を拒否します。ルールの 2 行目では、2001:db8:1::/64 ネットワーク内のすべてのアドレスからの接続が許可されます。 3 番目のルールでは、ポート 80 への HTTP 接続が許可されます。最後のルールは他のすべての接続をブロックします。
IPv6 アドレスは長いことが多いため、DNS クエリが必要になる場合があります。応答時間を短縮し、セキュリティを強化するために、IPv6 名の代わりに IPv6 アドレスを使用できます。例:
server { listen [2001:db8::1]:80; server_name example.com; }
この例では、最小限の応答時間とセキュリティを確保するために、ホスト名を使用する代わりに特定の IPv6 アドレスが使用されます。
つまり、以上がNginxにおけるIPv6セキュリティの設定方法と注意点です。 IPv6 を使用する場合は、セキュリティの問題を考慮し、Web サイトとサーバーを攻撃から保護するために Nginx に必要な設定を行う必要があります。この記事があなたのインスピレーションとなり、セキュリティ設定に関するガイダンスになれば幸いです。
以上がNginx の IPv6 セキュリティ設定の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。