優れたソフトウェアと実用的なチュートリアル
WordPressウェブサイトを構築する前に、設定してください Nginxのセキュリティルール
Nginxのセキュリティルール 建物が建っているワードプレスウェブサイトを構築する前に、まず設定を行う必要があります。現在、WordPressは最も人気のあるウェブサイト構築プログラムです。ネットワーク市場シェアの30%以上を占めており、セキュリティ上の脅威の標的となることも少なくありません。Nginxのセキュリティルールは非常に重要です。そのため、WordPressウェブサイトの所有者にとって、ウェブサイトのセキュリティを強化するために、Nginxのセキュリティルールを設定することが最善策です。
WordPressはApacheまたはNginxのどちらでも実行できます。本日は、WordPressのセキュリティを強化するためのNginxルールをいくつかご紹介します。
XXXサフィックスを持つファイルのダウンロードを禁止する
データベースなどの機密ファイルがパッケージ化されてダウンロードされるのを防ぐために、Web サイトでダウンロードを禁止するファイル拡張子を設定します。
場所 ~ \.(zip|rar|sql|bak|gz|7z)$ { return 444; }
URL に敏感な文字ジャンプ
キーワードを含む URL アクセス リンクは、常に Web サイトのホームページにジャンプするか、404 ページを指します。
#url にはホームページに直接ジャンプするテストが含まれています if ($request_uri ~* test=) { return 301 https://uzbox.com; } #url には次のキーワードが含まれています。ホームページにジャンプします if ($request_uri ~* "(\.gz)|(")|(\.tar)|(admin)|(\.zip)|(\.sql)|(\.asp)|(\.rar)|(function)|($_GET)|(eval)|(\?php)|(config)|(\')|(\.bak)") { return 301 https://uzbox.com;
悪質なクローラーを防ぐ
スパムスパイダークローラーをブロックするためのnginx設定。以下のブロックルールにスパムクローラーの名前を追加できます。
以下は参考用のクローラー名の一部です。
qihoobot|Censys|Baiduspider|Googlebot|Googlebot-Mobile|Googlebot-Image|Mediapartners-Google|Adsbot-Google|Feedfetcher-Google|Yahoo! Slurp|Yahoo! Slurp China|YoudaoBot|Sosospider|Sogou スパイダー|Sogou ウェブ スパイダー|MSNBot|ia_archiver|Tomato Bot|FeedDemon|JikeSpider|Indy Library|Alexa ツールバー|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL コントロール|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|YisouSpider|Scrapy|HttpClient|MJ12bot|heritrix|EasouSpider|LinkpadBot|Ezooms
if ($http_user_agent ~* (SemrushBot|python|MJ12bot|AhrefsBot|AhrefsBot|hubspot|opensiteexplorer|leiki|webmeup)) { 404 を返します; }
ブラウザ以外からのウェブサイトへのアクセスをブロックする
#ブラウザ以外のアクセスを禁止するif ($http_user_agent ~ ^$) { return 404; }
Nginx と PHP のバージョンを非表示にする
NginxとPHPのバージョンを公開しないことをお勧めします。特定のNginxまたはPHPのバージョンに脆弱性があり、攻撃者がサーバー上で対応する脆弱なバージョンを発見した場合、非常に危険な状況になる可能性があります。以下のルールにより、NginxとPHPのバージョンを非表示にすることができます。
# nginx バージョンを非表示にします。server_tokens をオフ; # PHP バージョンを非表示にします fastcgi_hide_header X-Powered-By; proxy_hide_header X-Powered-By;
セキュリティヘッダー
セキュリティヘッダーはブラウザの動作を指示することで、セキュリティをさらに強化します。例えば、X-Frame-Optionsはウェブサイトがiframeに埋め込まれるのを防ぎます。Strict-Transport-SecurityはブラウザにHTTPSを使用してサイトを読み込む。
add_header X-Frame-Options SAMEORIGIN; add_header Strict-Transport-Security "max-age=31536000"; add_header X-Content-Type-Options nosniff; add_header
サブディレクトリへのアクセスをブロックする
ウェブサイトが /blog などのサブディレクトリで実行される場合は、/blog 以外のサブディレクトリへのアクセスを制限する必要があります。
場所 ~ ^/(?!(blog)/?) { すべて拒否; access_log オフ; log_not_found オフ; }
XMLRPCへのアクセス制限
WordPressのXMLRPCエンドポイント(ルートディレクトリのxmlrpc.phpファイル)は、外部アプリケーションがWordPressデータにアクセスできるようにするために使用されます。例えば、投稿の追加、作成、削除などが可能です。しかし、XMLRPCは攻撃者がこれらの操作を無許可で実行できる一般的な攻撃ベクトルでもあります。そのため、以下に示すように、信頼できる承認済みIPからのXMLRPCリクエストを許可するのが最善です。
場所 ~* /xmlrpc.php$ { 172.0.1.1 を許可; すべて拒否; }
上記を追加すると、ブラウザで xmlrpc.php にアクセスしたときに 403 エラー応答コードが表示されます。
リクエストの種類を制限する
ほとんどの場合、Web サイトは次の 2 種類のリクエストのみを実行します。
- GET – ウェブサイトからデータを取得する
- POST – ウェブサイトにデータを送信します
したがって、当社の Web サイトにこれら 2 種類のリクエストのみを実行できるようにすることも、セキュリティを強化する方法の 1 つです。
if ($リクエストメソッド !~ ^(GET|POST)$) { return 444; }
PHPファイルへの直接アクセスを無効にする
誰にも気付かれずに、ハッカーは PHP ファイルをサーバーにアップロードし、悪意のあるファイルにアクセスして特定のアクションを実行することで、Web サイトにバックドアを作成する可能性があります。PHPファイルへの直接アクセスは禁止されるべきである:
場所 ~* /(?:uploads|files|wp-content|wp-includes|akismet)/.*.php$ { すべて拒否; access_log オフ; log_not_found オフ; }
特定の機密ファイルへのアクセスを無効にする
PHPファイルと同様に、.htaccess、.user.ini、.gitなど、ドットで始まるファイルには機密情報が含まれている可能性があります。セキュリティを強化するために、これらのファイルへの直接アクセスを無効にする。
場所 ~ /\.(svn|git)/* { すべて拒否; アクセスログオフ; ログが見つかりませんオフ; } 場所 ~ /\.ht { すべて拒否; アクセスログオフ; ログが見つかりませんオフ; } 場所 ~ /\.user.ini { すべて拒否; アクセスログオフ; ログが見つかりませんオフ; }
スパムコメントを減らす
スパムコメントはウェブサイトに損害を与えないかもしれませんが、データベースにスパムを追加し、広告として機能します。スパムコンテンツを減らす、Akismet などのスパム対策プラグインとともに、次のルールを Nginx 構成に追加できます。
$comment_flagged を 0 に設定; $comment_request_method を 0 に設定; $comment_request_uri を 0 に設定; $comment_referrer を 1 に設定; if ($request_method ~ "POST"){ $comment_request_method を 1 に設定; } if ($request_uri ~ "/wp-comments-post\.php$"){ $comment_request_method を 1 に設定; } if ($http_referer !~ "^https?://(([^/]+\.)?site\.com|jetpack\.wordpress\.com/jetpack-comment)(/|$)"){ $comment_referrer を 0 に設定; } $comment_flaggedを「${comment_request_method}${comment_request_uri}${comment_referrer}」に設定し、$comment_flagged = "111"の場合{403を返す}
リクエストの制限
WordPress のログイン ページ wp-login.php は、ブルート フォース攻撃の一般的なエンドポイントです。攻撃者はユーザー名とパスワードの組み合わせを一括して送信することでログインを試みます。パスワードを解読できない場合もありますが、サーバーリソースを大量に消費し、ウェブサイトにアクセスできなくなる可能性があります。。
これを実現するには、ページが処理できる1秒あたりのリクエスト数を制限するルールを適用します。ここでは1秒あたり2リクエストに制限を設定します当該数を超えたリクエストはブロックされます。
limit_req_zone $binary_remote_addr zone=WPRATELIMIT:10m rate=2r/s; location ~ \wp-login.php$ { limit_req zone=WPRATELIMIT; }
ディレクトリリストを無効にする
最後に、攻撃者がディレクトリ内の内容を知ることができないように、ディレクトリ リストを無効にする必要があります。
自動インデックスオフ;
要約する
ウェブサイトのセキュリティはすでにSEO最適化ウェブサイトのセキュリティ対策は非常に重要です。ウェブサイトがハッキングされると、ウェブサイトが開けなくなったり、アクセス速度が低下したり、ブラックリンクが表示されてフリーズしたりする可能性があります。これらの問題が発生すると、検索エンジンのブラックリストに登録される可能性があります。ウェブサイトのセキュリティ対策に関する基本的な知識を習得することは非常に重要です。
最近、検索数が多すぎます。