ホームページ > バックエンド開発 > PHPチュートリアル > Nginx におけるセキュリティ関連の 10 のヒント

Nginx におけるセキュリティ関連の 10 のヒント

WBOY
リリース: 2016-06-13 12:28:27
オリジナル
772 人が閲覧しました

Nginx におけるセキュリティ問題に関する 10 のヒント

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

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

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

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

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

ソース: IfIsEvil

2. 各 ~ .php$ リクエストを PHP に転送します。

この人気のあるコマンドの潜在的なセキュリティ脆弱性の紹介が先週リリースされました。ファイル名が hello.php.jpeg であっても、~.php$ の正規パターンに一致してファイルが実行されます。

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

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

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

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

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

4. サーバー上の SSI (サーバー側参照) を無効にします。これは、location ブロックに ssi off を追加することで実行できます。 (スクリプト アカデミー www.jbxue.com)

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 slimits $binary_remote_addr 5m; limit_conn slimits 5;  
ログイン後にコピー
9. HTTP 認証の使用を避けてください。 HTTP 認証ではデフォルトで crypt が使用され、そのハッシュは安全ではありません。使用したい場合は、MD5 を使用してください (これは良い選択ではありませんが、負荷の点では crypt よりも優れています)。

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

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート