もしあなたが宝塔パネルWordPressサイトを構築している場合、サイトにほとんどトラフィックがないのに頻繁にカードが開かない場合、十中八九、サイトがボットによって悪意を持ってスキャンされています。この記事では、Nginxルールを追加してこれらの悪意のあるリクエストをブロックする方法を説明します。
症状
新しいサーバーにWordPressサイトを1つインストールしただけで、ほとんどトラフィックがないのに、サイトが頻繁にカードが開かず、サーバーモニタリングを確認すると、CPU使用率が上がったり下がったりしているのがわかります。以下の図のようになります。

サイトのログにアクセスすると、同じ時間に同じIPまたは近いIPが、サイト上に存在しないファイルやディレクトリに一度に複数アクセスしているのがわかります。以下の図のようになります。


通常、サイトにこれらの脆弱性が含まれていなければ、すべて404エラーが返され、サーバーのパフォーマンスへの影響は最小限です。
重要なのは、これらのボットは無作法で、通常1秒間に複数回、1分間に数十回から数百回リクエストを送信するため、一般的なWebサイトのサーバーではこのような高頻度のアクセスに耐えられず、CPUリソースが100%使用されてサイトがカード状態になり開かなくなります。
対処方法
これらの問題を解決するには、CloudFlareのファイアウォールやサーバーのfail2banを使用して自動的にブロックすることができますが、これらの設定は初心者には少し複雑です。そのため、より簡単な方法として、サイトのnginx設定ファイルを変更して対応します。
宝塔パネルの管理画面で、サイト、サイト設定をクリックし、サイト設定を選択し、SSL証明書設定の最後に以下のコードを挿入します。
# ==================================================
# 自定义安全拦截:在进入 PHP 处理之前拦截恶意扫描
# ==================================================
# 拦截敏感文件和框架路径
location ~* ^/(\.env|\.git|actuator|telescope|_ignition|horizon) {
return 444;
}
# 禁止在 uploads 目录执行 PHP
location ~* /wp-content/uploads/.*\.php$ {
deny all;
}
# 拦截常见 WebShell
location ~* (alfa|wso|shell|gecko|leaf|cmd)\.php$ {
return 444;
}
# ==================================================
また、xmlrpc.phpファイルも頻繁に攻撃されるため、追加することを検討してもよいでしょう。
# 彻底禁用 xmlrpc.php
location = /xmlrpc.php {
deny all;
}設定を保存し、エラーメッセージが表示されなければ設定は有効です。その後、サーバーのリソース使用状況を確認します。正常であれば、CPUが100%まで急上昇することはほとんどなくなります。
注意:サーバーがボットにスキャンされたり攻撃されたりしていないのにCPU使用率が高い場合、通常はサイト自体に問題があります。例えば、プラグインやテーマの互換性の問題でリソース使用率が高くなっている可能性があります。この場合は、プラグインを無効にしたりテーマを変更したりして、問題の箇所を特定してください。
ルールのカスタマイズ
各サイトで遭遇するスキャン状況は異なるため、上記の設定が必ずしもあなたのサイトで発生しているボットのスキャンディレクトリやファイルに一致するとは限りません(設定にはphpファイルのブロックルールは含まれていません)。
では、独自のルールをカスタマイズするにはどうすればよいでしょうか?
簡単です。サイトのアクセスログをAIに送信して分析してもらい、ルールを設計した後、宝塔のサイト設定ファイルに追加すれば完了です。
どうしても解決できない場合は、Naibaの有料サポートに連絡して、調査とカスタムブロックルールの作成を依頼できます。
WordPressのセキュリティプラグインでこれらのスキャンをブロックできますか?
残念ながら、WordPressのセキュリティプラグインでこれらのスキャンを完全にブロックすることはできません。通常のWebサイトのリクエストフローは次のとおりです。
用户请求
↓
Nginx
↓
PHP
↓
WordPressGET /.env のようなリクエストは、Nginxレベルで直接404エラーとなり、WordPressには到達しません。
一方、存在しないPHPファイルへのリクエストはWordPressに到達しますが、セキュリティプラグインで認識・ブロックできます。ただし、1回のリクエストで一定のPHPリソースを消費するため、複数回のリクエストでリソースが枯渇し、サーバーが遅延する可能性があります。
そのため、Nginxレベルでのブロックは、WordPressのセキュリティプラグインによるブロックよりもはるかに効果的です。
そして、Nginxでブロックしても効果がない場合は、ファイアウォールを追加して自動的にブロックすることを検討する必要があります。一般的に、ほとんどのWebサイトではNginxルールによってサーバーリソースを削減できます。
以上が、Naibaが皆さんに共有する宝塔パネルでのNginxによる悪意のあるリクエストブロックの内容です。不明な点があれば、Naibaの微信(WeChat)に追加してご相談ください。

コメントは終了しました
この記事のコメント機能は終了しています。ご質問がある場合は、他の方法でお問い合わせください。