Nginx + PHP-FPM は、16 進数の http 動詞/メソッドを使用した疑わしい侵入テスト要求の後にクラッシュし始めます。

Nginx + PHP-FPM は、16 進数の http 動詞/メソッドを使用した疑わしい侵入テスト要求の後にクラッシュし始めます。

迷惑な侵入テスト担当者が私のアプリケーションのセキュリティホールを見つけようとするたびに、私のサーバーはクラッシュします。エラーログには次のように表示されます:

17:48:48 +0200] "\x16\x03\x01\x00M\x01\x00\x00I\x03\x03\xDBJA\xC5\xB17\xF6\xDA \xD4\xEEEg0\xE0\xF2\xF2\xC9S\xE4\xF9v}\x1E\x00\xC8\xC3d\x 80h;= \x1F\xD2\xAF?\x88\x8A\xA2\xCF\x16G\x99\x1D\x91" 400 173 "-" "-"

サーバーは通常の nginx + php-fpm サーバーのように構成されています。ポート 80 は 443 にリダイレクトされ、SSL は正しく構成されています。

次の行も追加しました:

if ($request_method !~ ^(GET|HEAD|POST|OPTIONS|DELETE|PUT|PATCH)$) { return 405; }

(両方のサーバー構成)

これは、400 を返す唯一の「ペネトレーションテスト」リクエストでもあります。他のすべてのリクエストは、301 または 404 になります。nginx の SSL セクションが正しく構成されていないという同様の問題が見つかりました。構成を確認しましたが、問題ないようです。

同様の構成を持つ別のサーバーと、nginx -> apache_mpm_prefork_fpm 構成を持つサーバーでも同じ問題が発生します。

これが何なのか、またサーバーをクラッシュから保護するにはどうすればよいか、何かアイデアはありますか。このような侵入テスト要求を再現する方法 (Postman で試しましたが、異なる結果が得られました)。

ありがとう。

編集

そのログを再現する方法がわかりました: https://servername:80。

しかし、この種のリクエストをブロックする方法がわかりません。$scheme で試してみましたが、リクエストは暗号化されています。設定に ssl を追加してみましたが、何も変わりませんでした。侵入テスト/エクスプロイト サイトがポート 80 に https リクエストを送信しようとするのには理由があるはずです。

関連情報