2023.4.9|WordPress

WordPress(ワードプレス)で「wp-admin.php」「wp-login.php」への攻撃を防ぐアクセス制御方法

Webサイトを公開してセキュリティ対策問題を後回しにしているWebデザイナーさんや企業の方も少なくありません。
WordPress(ワードプレス)などのCMSツールを利用してのウェブ改ざんは増加しています。WordPress(ワードプレス)などのCMSツールのみならずWebサイトへの不正アクセスは、どんなにセキュリティ対策を行っても起こりうる問題です。

WordPress(ワードプレス)の利用率は世界的にも40%程度とも言われております。
専門的な知識がなくてもサイトの管理や運営を行なえる事から最も人気があるのがWordPress(ワードプレス)ですが、WordPress(ワードプレス)の様な動的に動くWebサイトやプラグインを導入できるCMSツールには、脆弱性問題はつきものです。
サーバーが不正アクセスを受けると、サーバーから侵入しプログラムへさらにバックドアを仕掛けられる例が非常に多いため、対処としては必ずサーバー内部データをすべてリセットし、コンテンツを新たにアップロードしなおす必要があります。

ホームページが改ざんされると、ホームページ内の情報を不正入手される恐れや訪問者をフィッシングサイトやスパムサイトへの誘導を行うコードを配置される恐れもあり、ホームページを作り直す必要や、全てのファイル・ソースコードをチェックする必要があります。
このようなサーバーに侵入する不正アクセスの入口は沢山ありますが、WordPress(ワードプレス)で構築しているホームページに最も攻撃を受けやすいファイルがあります。

今回は、WordPress(ワードプレス)で「wp-admin.php」「wp-login.php」への攻撃を防ぐアクセス制御方法を解説します。

脆弱性と不正アクセスによる被害

WordPress(ワードプレス)の脆弱性とは、セキュリティ上の欠陥を表します。プログラムのエラーやバグが弱点となり、外部から攻撃を受けやすくなるのです。
WordPress(ワードプレス)の脆弱性を狙うサイバー攻撃は、1日に5,000万件超も観測されていてます。

WordPress(ワードプレス)で構築されているWebサイトの脆弱性を標的とされる理由のひとつとして、古いソフトウェアにはセキュリティ上の脆弱性が見つかっていることがあり、攻撃者が不正アクセスをする際の起点となってしまうからです。
WordPress(ワードプレス)ソフトウェアやプラグインを最新版にアップデートしておくことが最も基本の対策です。

【脆弱性(ぜいじゃくせい)とは】
脆弱性(ぜいじゃくせい)とは、コンピュータのOSやソフトウェアにおいて、プログラムの不具合や設計上のミスが原因となって発生した情報セキュリティ上の欠陥のことを言います。脆弱性は、セキュリティホールとも呼ばれます。
脆弱性が残された状態でコンピュータを利用していると、不正アクセスに利用されたり、ウイルスに感染したりする危険性があります。

参照:脆弱性(ぜいじゃくせい)とは

不正アクセスによる目的の中で最も多いものは、ファイルの改ざんや悪意のあるコードの埋め込み(クロスサイトスクリプティング)による、訪問者にスパム広告を配信したり、フィッシングサイトへリダイレクトさせたり、踏み台にされて大量の迷惑メールを配信されたり、不正誘導するためのコードを埋め込むのが目的であり、さまざまな悪影響を与えます。

また、不正アクセスによりWordPress(ワードプレス)のログインID・パスワードを不正に奪取しようとし、IDとパスワードを総当たりで試して管理者権限を乗っ取ろうとする攻撃が行われます。

【不正アクセスによる被害内容】
・ファイルの不正改ざん
・ファイル内に悪意のあるコードの埋め込み
・ログイン情報の削除・変更
・管理者権限の乗っ取り
・ユーザー情報の漏洩

不正アクセスで狙われやすいファイル

WordPress(ワードプレス)の管理画面は、アクセスのしやすい仕様となっています。
これはセキュリティ上の大きな脆弱性となり得ます。WordPressの初期設定では、管理画面のログインURLは「/wp-login.php」」、ダッシュボードのURLは「/wp-admin」」です。

つまり、あなたのWebサイトのURLの末尾に「/wp-login.php」または「/wp-admin」と入力するだけで、誰でも簡単に管理画面にアクセスできるわけです。

初期設定のまま運用している場合、ユーザー名とパスワードの総当たり攻撃「ブルートフォースアタック」を受ける可能性が高まります。初期設定から変更していても、推測されやすいURLであれば、簡単に管理画面を特定されてしまうでしょう。このような第三者からアクセスされやすい仕組みは、WordPressの脆弱性の1つと言えます。

【不正アクセスによる被害内容】
・ログインページ用ファイル:/wp-login.php
・管理ページ用ファイル:/wp-admin/
・コメント投稿用ファイル:/wp-comments-post.php
・設定用ファイル:/wp-config.php
・サーバーリクエストを行うファイル:/wp-admin/admin-ajax.php
・データベースに記事を登録する機能を持つファイル:/xmlrpc.php

なぜWordPressのファイルが狙われやすいのか

WordPress(ワードプレス)は、Webサイトやブログを作成するために広く使用されているオープンソースのCMS(コンテンツ管理システム)です。WordPress(ワードプレス)の人気と使用率が高いため、攻撃者はWordPress(ワードプレス)のセキュリティホールを見つけて悪用しようとする傾向があります。

また、WordPress(ワードプレス)はプラグインやテーマをサポートしているため、これらの外部の拡張機能によってセキュリティ上の脆弱性が生じる場合があります。さらに、多くのWordPress(ワードプレス)サイトが共通の問題を抱えているため、攻撃者は特定の攻撃手法を使って大量のサイトを攻撃することができます。
多くの場合、WordPress(ワードプレス)の管理者はセキュリティに関する知識が不十分であるため、設定やアップデートを適切に行わないことがあります。このような場合、攻撃者は簡単にWordPress(ワードプレス)の脆弱性を突いてアクセス権限を奪取し、サイトを乗っ取ることができます。

1.「wp-login.php」ファイルが狙われやすい理由

「wp-login.php」ファイルは、大量のWebサイトがWordPress(ワードプレス)を使用しているため、攻撃者が狙いやすくなっています。WordPress(ワードプレス)は、世界中の多くのWebサイトで使用されており、それだけで攻撃者にとって魅力的なターゲットになります。
デフォルトの管理者アカウント名が初期設定で「admin」であるため、攻撃者が狙いやすく、攻撃者は、管理者アカウントにアクセスしようとする際に、このデフォルトのアカウント名を狙うことがあります。

また、パスワードが弱い場合、攻撃者はブルートフォース攻撃などの手法を使用してパスワードを総当たりで破ろうとします。
WordPress(ワードプレス)の脆弱性がある場合、攻撃者はこれを悪用して、管理者アクセスを得ようとすることがあります。

2.「wp-admin」フォルダが狙われやすい理由

「wp-admin」フォルダは、WordPressの管理画面にアクセスするためのフォルダです。このフォルダは、攻撃者がWordPressサイトにアクセスして、管理者権限を取得しようとする場合の主要なターゲットの1つです。

攻撃者は、「wp-admin」フォルダに対して多数のリクエストを送信することで、WordPress(ワードプレス)サイトをブルートフォース攻撃から攻撃することができます。これは、ユーザー名やパスワードを当てはめてログインしようとする試行を指します。

また、攻撃者は、「wp-admin」フォルダに対して脆弱性を突いた攻撃を試みることもあります。これにより、攻撃者はWordPressサイトに侵入し、管理者権限を取得することができます。
そのため、WordPress(ワードプレス)サイトを運営する場合には、「wp-admin」フォルダに対する適切なセキュリティ対策が必要とされます。たとえば、強力なパスワードの使用や、2要素認証の設定などが考えられます。また、不正なアクセスを検知するためのセキュリティプラグインの導入も有効です。

3.「wp-comments-post.php」ファイルが狙われやすい理由

WordPress(ワードプレス)のコメント機能は、コメントを投稿するために「wp-comments-post.php」ファイルを使用します。
攻撃者は、このファイルにアクセスし、ユーザーが入力したコメントを悪意のあるスクリプトやコードで置き換えることができます。このような攻撃は、クロスサイトスクリプティング(XSS)攻撃と呼ばれ、攻撃者にとってはウェブサイトのコントロールを取得するための手段となります。

また、コメント欄は一般に、サイトの訪問者が自由に入力することができるため、不適切なコメントやスパムコメントが投稿されることがあります。これらのコメントには悪意のあるリンクやスクリプトが含まれている場合があり、サイトに悪影響を与える可能性があります。

4.「wp-config.php」ファイルが狙われやすい理由

「wp-config.php」ファイルはWordPress(ワードプレス)の設定ファイルであり、データベースの接続情報や認証キーなどの機密情報が含まれているため、攻撃者にとっては貴重な情報源となります。

攻撃者は「wp-config.php」ファイルにアクセスし、その情報を収集して、WordPress(ワードプレス)の管理者権限を取得したり、悪意のあるプログラムを実行するために権限を上げることができます。

また、「wp-config.php」ファイルに対する攻撃は、他のWordPress(ワードプレス)ファイルに対する攻撃とは異なり、自動的に実行される可能性が低いため、攻撃者は手動でアクセスする必要があります。この手動アクセスは、攻撃者にとっては時間と労力を要することになりますが、得られる情報が非常に貴重であるため、攻撃者はそれに値すると判断することがあります。

5.「admin-ajax.php」ファイルが狙われやすい理由

「admin-ajax.php」ファイルはWordPress(ワードプレス)がAjaxリクエストを処理するために使用するファイルであり、攻撃者が悪意のあるAjaxリクエストを送信して、WordPressの機能を悪用することができるため、攻撃の標的となることがあります。
具体的には、不正なユーザーが「admin-ajax.php」ファイルを利用して、サイトの情報を盗んだり、機能を乗っ取ったり、攻撃者の意図した行動を実行したりすることができます。したがって、「admin-ajax.php」ファイルを保護することが、WordPress(ワードプレス)サイトのセキュリティを強化するために重要です。

6.「xmlrpc.php」ファイルが狙われやすい理由

「xmlrpc.php」ファイルは、WordPress(ワードプレス)で外部アプリケーションやサービスと通信するためのプロトコルであり、攻撃者はこのファイルを利用して不正なアクセスを試みます。
攻撃者はXML-RPC APIに対して、ブルートフォース攻撃を試みたり、WordPress(ワードプレス)サイトにDoS攻撃を仕掛けたり、機密情報を盗んだりすることができます。

また、古いバージョンのWordPress(ワードプレス)には、XML-RPCによる認証バイパスの脆弱性が存在するため、攻撃者は「xmlrpc.php」ファイルを介してWordPress(ワードプレス)に侵入しようとすることができます。 したがって、セキュリティの観点から、XML-RPCは必要に応じて無効にすることをお勧めします。

ファイルへのアクセス制限させる方法

「wp-login.php」や「wp-admin.php」ファイルへのアクセス制限して外部からのアクセスを不可にする設定をするには、それぞれのファイルと同じ階層に「.htaccess」ファイルを作成し、WordPress(ワードプレス)管理者ページにアクセスすることができるIPアドレスを指定することで、指定したIP以外のIPからはアクセスできなくなります。

1.「.htaccess」ファイルを作成

.htaccess(ドットエイチティーアクセス)ファイルは、テキストファイルですので、メモ帳などのテキストエディタを開いて「.htaccess」という名前に保存をするだけで.htaccessファイルの完成です。

ただし、サーバーにアップロードをする際にそのままアップロードしてしまうと警告エラーメッセージが表示され保存ができない場合があります。
その場合は、「.」ドットを一度削除し「htaccess.txt」というファイルを作成して一旦サーバーにアップロードします。その後アップロードした先で「htaccess.txt」の名前を「.htaccess」に変更を行うことで保存ができます。

WordPress(ワードプレス)で「wp-admin.php」「wp-login.php」への攻撃を防ぐアクセス制御方法

2.フォルダ・ファイルへのIP制限をかける

「.htaccess」ファイルに、IP制限をかけるコードを追記します。
追記したファイルは、FTPでサーバーの該当ディレクトリにアップロードします。

ログイン画面の「wp-login.php」ファイルにIP制限
<Files "wp-login.php">
order deny,allow
deny from all
allow from xxx.xxx.xxx.xxx
</Files>
管理画面の「wp-admin」フォルダにIP制限
<Files "wp-admin">
order deny,allow
deny from all
allow from xxx.xxx.xxx.xxx
</Files>
コメント投稿の「wp-comments-post.php」ファイルにIP制限
<Files "wp-comments-post.php">
order deny,allow
deny from all
allow from xxx.xxx.xxx.xxx
</Files>
サーバーリクエストの「admin-ajax.php」ファイルにIP制限
<Files "admin-ajax.php">
order deny,allow
deny from all
allow from xxx.xxx.xxx.xxx
</Files>
記事を登録の「xmlrpc.php」ファイルにIP制限
<Files "xmlrpc.php">
order deny,allow
deny from all
allow from xxx.xxx.xxx.xxx
</Files>
管理画面の「wp-admin」とログイン画面の「wp-login.php」フォルダにIP制限
<FilesMatch "wp-login.php|wp-admin">
Order deny allow
Deny from all
Allow from xxx.xxx.xxx.xxx
</FilesMatch>
複数IPでのIP制限
<FilesMatch "wp-login.php|wp-admin">
Order deny allow
Deny from all
Allow from xxx.xxx.xxx.xxx
Allow from xxx.xxx.xxx.xxx
Allow from xxx.xxx.xxx.xxx
</FilesMatch>

まとめ

脆弱性というのは、ソフトウェアやシステムに存在する弱点や欠陥のことを指します。脆弱性があると、攻撃者によってシステムが不正に利用されたり、個人情報や機密情報が漏洩するなど、深刻な問題が発生する可能性があります。

脆弱性に対する対策は常に必要であり、開発者やシステム管理者は常に注意を払って、セキュリティの強化に取り組むことが求められます。また、ユーザー自身も、安全なパスワードの使用やセキュリティソフトウェアの導入など、自己防衛の意識を高めることが重要です。
ひとつひとつ対策していく事が大切です。