1秒間に1回の総当たり攻撃!あなたのサイトも狙われている不正ログインの手口

しつこいウイルス駆除

 何年かに一度、サイトのログイン画面から不正アクセスを試みようとする攻撃を受けます。

 今回は、ちょっとしつこいので真面目に対策します。

不正アクセスの状況

 今回の攻撃は、サイトのログイン画面から不正アクセスを試みようとするものです。

 約10分間にわたり、1秒ごとにログインを試みています。合計600回あまり。これが3回ありました。攻撃の間、アタッカー側のIPアドレスの変更や当サイトのログイン名の変更もしていますが、その間も途切れなく攻撃は1秒間隔で継続しています。つまり、人間がやっているのではなく、非常に高速なボット(自動プログラム)による攻撃であると断定できます。

 今回の攻撃が深刻な理由は、そもそもログイン画面のアドレスは変更しているので分からないはず。さらに、日本語画像認証を突破している可能性があること、ログイン名もバレていること(実際には違っているためログインされることはなかったのですが)。

 これってかなりやばい。ボットがWordpressの日本語画像認証を突破できた可能性があることに驚きました。外国からの攻撃なら日本語の認証は突破できないと勝手に思い込んでいました。

 下の認証画面で、「くなつと」と入力しないとパスワードやユーザー名が合っていてもログインできません。実際の所、この認証が突破されたかどうかは、アタッカーのログインが失敗しているので定かではありませんが、そもそもこの認証を承知の上での攻撃だと考えると、用心に越したことはありません。

 早速、対策を採ります。

まずはWordPress側から

 運用している本WebサイトはWordPressで構築しています。また、レンタルサーバーはロリポップを使っています。

 最初に、WordPress側から対応します。

1. ログインユーザー名の変更

 WordPressのユーザー名は、通常、変更できません。この変更には、プラグインを使います。同じ事のできるプラグインは色々あるのですが、「Username Changer」というプラグインが簡単です。

[プラグイン] ⇒ [プラグインを追加] で、検索窓に、「Username Changer」を入れて探します。このプラグインの最終更新は5年前で、「使用中の WordPress バージョンで未検証」となっていますが、問題ありません。通常であればこんなプラグインは怖くてインストールできませんが、今回は使ってみました。

このプラグインをインストール・有効化します。作業はこれだけです。すると、ユーザー名を変更できるようになります。プラグイン側の設定等一切不要です。

 [ユーザー] ⇒ [プロフィール]から、新しいユーザー名を設定します。分かりにくいユーザー名に変更します。変更後、画面下の[プロフィールを更新]ボタンをクリックして作業終了です。

 ユーザー名を変更したら、このプラグインは使わないので無効化して削除します。しかし、このプラグインはとても優秀なので、WordPressのプラグイン置き場からダウンロードして保存しておくことにしました。zip形式です。

 このプラグインは5年間更新していないので、いずれは削除されてしまうと思われます。また、いつか必要となる日が来たときのための対策です。

2. ログインページの変更

 「SiteGuard」というプラグインを使います。有名なプラグインなので多くのサイトで使っていると思います。これをインストール・有効化した後からの説明です。

 管理画面左のメニューから「SiteGuard」をクリック。「設定状況」画面になるので、「ログインページ変更」をクリック。

 下の赤枠の部分に自由にページ名を記入します。

 例えば、「aaa_bbbb_c87-5q2」などハイフンやアンダーバーを使って複雑にしましょう。

 この新しいログインページアドレスを忘れると大変なことになるので、メモしたり、スクリーンショットを撮ったりしましょう。

 その後、「変更を保存」ボタンをクリック。ログインできることを確認して作業完了です。

 その他、「SiteGuard」は可能な限り設定して置いた方が良いでしょう。

 なお、「SiteGuard」の設定は、結構、神経を使います。サイトにアクセスできなくなるなどのトラブルが発生する恐れがあるからです。設定方法については、どこかの紹介サイトを参照してみてください。そして、分からない部分は、GeminiなどAIに聞けば分かりやすく解説してくれます。最初からAIに聞いても良いのですが、AIは図を使って説明しないので、どこかのサイトで手順を一通り覚え、AIにはピンポイントで質問する方が効率的です。

 例えば、設定項目がたくさんあるけど、「有効」にするだけで良いのか、を確認する際にとても役立ちます。これって、サイトが表示されなくなるなどのトラブルが発生するかも知れないので、結構怖いです。AIに聞いてから作業を進めると安心です。AIはたまに嘘をつきますが。


 以上の設定変更の他にも、複数管理者の削除も行いました。サイト管理者は自分だけなのに、二つの管理者が登録されていたため、両方の管理者が攻撃対象となっていました。このため、管理者を一人にし、関連投稿を引き継ぎました。この引き継ぎをやらないと1000以上の記事が消えてしまいます。

レンタルサーバー側の設定

 今回、攻撃に使われたIPは以下のものです。

203.25.124.117
203.25.124.106
212.32.76.30
203.25.124.228
203.25.124.122
212.32.76.38
203.25.124.120
203.25.124.109

 これをサーバー側の「.htaccess」でブロックします。また、サーバー管理サイトへアクセスできるIPも制限します。

 攻撃者はたくさんのIPを使って攻撃します。この無数にあるIPをアクセス禁止にしても気休め程度にしかなりませんが、やらないよりはマシでしょう。また、自分のIPを登録して、それ以外の管理画面へのアクセスを阻止します。

 具体的な方法については、説明しません。AIに聞いてください。丁寧に教えてくれます。他人が書いたコードより正確で間違いがありません。

 管理人がAIに聞いたのは、①「.htaccess」はルートと個別サイトの両方にあるがどちらに書き込めば良いのか。また、②「.htaccess」のトップに書き込むようにGeminiの回答に書かれているが、本当に一番上に書いて良いのか。 というのは、いろいろなルールがあり、書き方を知らないとサイトが死んでしまう恐れがあるためで、安易にAIの回答を鵜呑みにできないためです。

 大きくはこの2点です。後は、AIの生成したコードを「.htaccess」の最上部に貼り付けるだけです。

 実際の作業では、バックアップのため「.htaccess」をダウンロードして不測の事態に備えます。更に、phpMyAdminでMySQLデータベース全体をバックアップしました。何が起きるか分からない。不具合発生はいつものことなので、用心します。MySQLデータベースをバックアップする際には、大量にある不要なデータ(リビジョンデータなど)を削除し、軽くしました。

 今回の記事はAI任せの説明になりましたが、AIに聞きながら作業した方が効率的です。それは不明点をすぐに質問できるからです。このため、今回の記事は、このようなスタイルにしました。

 管理人はGoogleのGeminiを使いましたが、最初から手順を確認しながら作業したため、Geminiの回答も的確で正確な回答をしてくれたと思います。あまりにもピンポイントな質問を突然されても、AI側も困るので、状況説明して、使用しているサーバーなども説明した上で質問するとよいと感じました。

 海外IPからの不正ログイン試行は「ブルートフォースアタック(総当たり攻撃)」が多いため、「SiteGuard」で防げた筈でしたが、一部の設定をしていなかったため、攻撃試行を許してしまったようです。

 実は、以前から気になっていたセキュリティ問題だったのですが、一応、できることはやりました。再び攻撃を受けたら、さらなる対策を考えます。

恐れていたことが起こった

 このような対策をすると必ず発生する不具合。案の定、発生しました。一つ一つ確認しながら作業をしているにもかかわらず、確認路には正常だったのに翌日に鳴って不具合が発生するという奇妙なトラブル。実際はいつものこと。

一つ目は、自分以外がアクセスできない状態になったこと。これは、「.htaccess」の記述を間違えた結果のようです。これはバックアップに差し替えたので元に戻りました。

二つ目が、サイト管理のログインurlが認識しなくなったこと。404エラーが表示され、ログイン画面が表示されなくなりました。

 このトラブルもいつものこと。サクッと解決します。また発生するかも知れないので、メモしておきます。

 原因は、SiteGuard WP Pluginです。先ず、これを停止します。ロリポップ側から、FTPで /wp-content/plugins フォルダを開き、「siteguard」を見つけます。そのフォルダを開き、フォルダの名前を変更(siteguard-backなど)し、保存します。これで管理画面にログイン可能になります。

 ログインurlは、「[サイトのurl]/wp-login.php」です。ログインできたら、先ほど変更した(siteguard-back)を元に戻して保存。これで、一時使えなくなっていた「siteguard」が使えるようになります。そして、設定の確認もできます。

 WordPress管理画面の「SiteGuard」から「ログインページ変更」を「無効」にします。その後、設定を確認して保存。結局、設定に間違いはなかった。何度も確認しているので、間違えるはずがない。サイトからログアウトして再びログインすることも何度もやっています。でも、不具合発生。こんなことが起きます。トラブルの原因は不明です。再び、「有効」にして様子を見ます。