ホームページ  >  記事  >  運用・保守  >  nginxのセキュリティを向上させる方法

nginxのセキュリティを向上させる方法

巴扎黑
巴扎黑オリジナル
2017-08-23 15:47:322202ブラウズ

Nginx は、現在最も人気のある Web サーバーの 1 つです。世界の Web トラフィックの 7% を処理しており、驚くべき速度で成長しています。素晴らしいサーバーなのでぜひ導入したいと思っています。

以下は、Nginx 導入の安全性を確保するのに役立つ一般的なセキュリティの落とし穴と解決策のリストです。

1. 設定ファイルでは「if」を慎重に使用してください。これは書き換えモジュールの一部であり、どこにも使用しないでください。

「if」ステートメントは、オーバーライドモジュール評価ディレクティブの必須部分です。言い換えれば、Nginx の設定は一般に宣言型です。場合によっては、ユーザーの要求により、オーバーライドされていないディレクティブ内で「if」を使用しようとしたため、現在直面している状況が発生しました。ほとんどの場合は正常に動作しますが、上記の内容を参照してください。

唯一の正しい解決策は、オーバーライドされていないディレクティブ内の「if」を完全に無効にすることのようです。これにより既存の設定の多くが変更されるため、まだ完了していません。

2. 各 ~ .php$ リクエストを PHP に転送します。 私たちは先週、この人気のあるコマンドの潜在的なセキュリティ脆弱性の概要を公開しました。ファイル名が hello.php.jpeg であっても、~.php$ の正規パターンに一致してファイルが実行されます。

上記の問題を解決するには、2 つの良い方法があります。混合メソッドを使用して任意のコードを簡単に実行しないようにすることが重要だと思います。

ファイルが見つからない場合は、try_files を使用して (これはすべての動的実行状況で注意する必要があります)、PHP を実行している FCGI プロセスにファイルを転送します。

php.ini ファイルで cgi.fix_pathinfo が 0 (cgi.fix_pathinfo=0) に設定されていることを確認します。これにより、PHP はファイルの完全名を確認します (ファイルの最後に .php が見つからない場合は無視されます)。

不正なファイルに一致する正規表現の問題を修正します。正規表現は、「.php」を含むすべてのファイルを考慮するようになりました。サイトの後に「if」を追加すると、正しいファイルのみが実行されるようになります。 /location ~ .php$ と location ~ ..*/.*.php$ の両方を設定して 403;

3. autoindex モジュールを無効にします。使用している Nginx バージョンでは変更されている可能性があります。そうでない場合は、設定ファイルの location ブロックに autoindex off ステートメントを追加してください。

4. サーバー上の SSI (サーバー側参照) を無効にします。これは、location ブロックに ssi off を追加することで実行できます。

5. サーバーフラグをオフにします。 (デフォルトで) 有効にすると、すべてのエラー ページにサーバーのバージョンと情報が表示されます。この問題を解決するには、server_tokens off ステートメントを Nginx 構成ファイルに追加します。

6. バッファ オーバーフロー攻撃の可能性を制限するために、設定ファイルでカスタム キャッシュを設定します。

client_body_buffer_size 1K;

client_header_buffer_size 1k;

client_max_body_size 1k;

large_client_header_buffers 2 1k;

7. DOS 攻撃を防ぐためにタイムアウトを低く設定します。これらの宣言はすべてメイン構成ファイルに配置できます。

client_body_timeout 10;

client_header_timeout 10;

keepalive_timeout 5 5;

send_timeout 10;

8. DOS 攻撃を防ぐためにユーザー接続の数を制限します。

limit_zone は $binary_remote_addr 5m をスリム化します;

limit_conn は 5 をスリム化します;

9. HTTP 認証の使用を避けてください。 HTTP 認証ではデフォルトで crypt が使用され、そのハッシュは安全ではありません。使用したい場合は、MD5 を使用してください (これは良い選択ではありませんが、負荷の点では crypt よりも優れています)。

10. 最新の Nginx セキュリティ更新情報を入手してください。

以上がnginxのセキュリティを向上させる方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。