WordPress + BuddyPressの構成で大量のSPAMユーザー登録されてしまう
こんにちは! ゴンタです。
別のサイトで会員制サイトを運用していますが、ここ最近になって会員数が一気に増えたと思って確認のためにWordPressへログインしてみたところ、購読者権限で大量のスパムによるユーザー登録が発生していました。
会員制サイトとしてWordPressとBuddyPressを組み合わせたサイトは日本ではあまり見かけないと思いますが、運用してみると使いやすい反面、結構な穴があって頻繁にアップデートまたはセキュリティパッチを行うことが多いです。
今回のスパムユーザー登録はBuddyPressを組み合わせない、通常のWordPressでユーザー登録ができる設定にしている場合にスパム登録が発生する可能性があります。 WordPress単体でもBuddyPressとの組み合わせでも設定次第でスパムによるユーザー登録ができてしまうのでスパム対策しておきましょう。
WordPressの初期設定次第で大変なことになる・・・
WordPressの初期設定はもちろん、通常の設定以外で自分で設定変更した人は一度確認したほうが良い項目があります。 ダッシュボードの設定項目にある項目で「誰でもユーザー登録ができるようにする」にチェックが入っている状態で「新規ユーザーのデフォルト権限グループ」が管理者等になっている場合、Wordpress自体を乗っ取られてしまいます。
「新規ユーザーのデフォルト権限グループ」の初期設定では購読者または寄稿者になっていますが、不正にユーザー登録がなされている場合は他のユーザーに対してBuddyPressの機能であるメッセージ機能などを経由してSPAMメッセージを送りつけたり、セキュリティホールを見つけてWordpress自体を内部攻撃するような問題が発生してしまいます。
ゴンタの管理するコミュニケーションサイトではWordpressとBuddyPressを組み合わせて多くのユーザーが利用していますので不正に新規ユーザー登録ができてしまうと権限自体が低いため実害はないが、ロボットSPAM登録を何らかの形で回避しなければセキュリティ的にも問題がありますので、速やかに対処すべき事柄として対策を施す必要があります。
では、どんな対策ができるのかいろいろ考えてみました。
管理者用パスワードの漏洩の可能性を考え、パスワードの変更
実際にSpamユーザー登録ができてしまっているWordPressの場合、すでに管理者権限を何らかの方法で取得されていると考え、WordPressに管理者権限でログインできている間に、速やかに新しい管理者権限のパスワードを更新することが大切です。 実害はなくともパスワードの漏洩はとても危険ですし、漏洩したかどうかは「判断がつかない」のでまずは変更しましょう。
WordPressのユーザーパスワードの変更は下記の順で変更できます。
ダッシュボード → ユーザー → ユーザー一覧 → 自分のユーザー名をクリックしてアカウント管理の項目で新しいパスワードを設定します。
この変更ではWordPressのSPAMユーザー登録に対する対策ではなく、乗っ取られる前にパスワードを変えておく対処となります。
新規ユーザー登録を登録不可にする。
この対処方法はWordPressのコミュニティ機能を使用していないBlogのようなサイト運営をされている方向けとなります。 コメントや書き込みでユーザー登録を条件としている場合やBuddyPressを組み合わせたコミュニティ型のサイト運営を行っている場合にはここで紹介する方法ではユーザー登録自体出来なくなってしまいますので、Spamユーザー登録の対処にはならない点に注意が必要です。 コミュニティ型サイトを構築されている方はのちに紹介する方法を試す必要があります。
ユーザー登録が不要な場合、そもそもユーザー登録をできなくしてしまうことでSpamユーザー登録を避けることができます。
設定方法としては下記の項目から変更を行います。
ダッシュボード → 設定 → 一般のメンバーシップ項目のチェックを外す。
更に念のため、「新規ユーザーのデフォルト権限グループ」を購読者にしておきます。 何らかの理由でメンバーシップがユーザー登録ができる状態になってしまった時に一番権限が制限されている購読者にしておきます。
Spamユーザー登録を行う海外拠点からのアクセスを回避する。
WordPressを利用しているということは、自前のWebサーバーを構築してWordPressを運用しているか、レンタルサーバーでWordPressを運用しているかどちらかだと思います。 仮にレンタルサーバーだった場合にはレンタルサーバーの管理画面に「海外からのアクセス制限」の項目があり、海外IPアドレスからのアクセスを拒否する機能が存在します。
Spam ユーザー登録を行うロボットはほぼ海外IPアドレスを使用していますので、コミュニティサイトとしてWordPressを稼働している場合、海外ユーザーが利用しておらず日本のユーザーだけの場合には海外拠点からのアクセスを拒否するとよいでしょう。
ただし、海外拠点IPaドレスからのアクセスを回避するということは登録利用ユーザーが海外に旅行または出張してコミュニティサイトにログインしようとした場合は弾かれてしまいますし、海外に住んでいるサイト利用者も弾かれますのでWordpress+BuddyPressのようなサイト運営では国内に限定される場合しかこの対策はできない事になります。
私が契約しているサーバーはXserverを利用していますが、Xserverの場合、サーバーパネルに「WordPressのセキュリティ設定」という項目があり、そこに国外IPアドレス利用設定があります。 WordPressのダッシュボードを使用する場合には国外IPに制限したり、APIアクセスを制限、REST APIの国外IP制限など細かく設定できます。
WordPressのログイン回数を制限し、総当たりログインアタックを回避する。
国外IPアドレスの制限を行うことで不正アクセスを減らせますが、WordPressで運営するコミュニティサイトを運営している場合には先にも述べましたが、国外拠点からの接続もあり得るため、制限できない場合もあります。
国外IPアドレス制限を行った場合も、しなかった場合もWordPressへのログインに対してログイン試行回数を制限する方法を設定しておく必要があります。 この設定もXserverのサーバーパネルには「Wordpressのセキュリティ設定」の項目に「ログイン試行回数制限設定」がありますので、ここでログインを試行制限設定しておくとパスワードの総当たり攻撃を回避できます。
繰り返しログインを試す総当たりログインアタックには有効ですが、仮にどこかで漏れてしまったパスワードを使いまわしている場合はログインパスワードの試行で入られてしまいますので、IDとパスワードの使いまわしは絶対にしない方がよいでしょう。
WordPressのデフォルトログインURLを変更し標的ログインを回避する。
WordPressのログイン画面はデフォルト設定のままで使用した場合、WordPressの標準URL構成でログイン画面が構築されます。 WordPressを初期インストールした後はログインURLをカスタマイズし、デフォルトのログインURLとは違うパスにすることで、標的型のログインアタックをある程度回避できます。
ある程度と書いたのはカスタマイズされたログイン画面にリンクを張っている場合は、そのリンクからカスタマイズしたログインURLへたどり着けるため、知能的なロボットアタックには意味をなさないためです。 よって、WordpressとBuddyPress、WpFooなどコミュニティサイトの場合には会員登録やログイン画面を通常は表に晒していますのでカスタムURLにしてもSpamユーザー登録は発生し続けるでしょう。
しかし、そういった場合でも標準設定のログインURLを狙って攻撃するロボット型の標的ログインではログインパスが違いますので、アタックを減らせることには変わりはありませんので、対策しておくとよいかも知れません。
標準のログインページ
https://hogehoge.com/wp-login.php または https://hogehoge.com/wp/wp-login.php
標準設定のURLを変更する場合、.htaccessファイルやfunction.phpなどファイルの中身の記述を変更する必要があり、結構面倒なのと、設定を間違えたり記述コードに問題があると画面真っ白でログインできなくなったりします。
プラグインを使いたくない、プラグインに頼りたくない人は手動設定する場合はネットで検索し記述補法など丁寧に記載されているサイトの情報でトライしてみてください。
簡単に変更を行いたい場合は、複数のプラグインがWordPressのプラグインインストール一覧に公開されていますのでそちらを使って変更するとよいでしょう。
SiteGuard WP Plugin
WPS Hide Login
Login rebuilder
ログインURLの変更だけが目的であれば、シンプルで確実な「WPS Hide Login」プラグインを使うとよいと思います。 その他のプラグインにはURL変更意外に画像認証やログイン回数制限などの機能がありますので、自分の使用目的に合ったプラグインを使用するとよいでしょう。
英文ですが、それほど難しい英文ではなくGoogle翻訳で充分理解できますので、早急に対処しておきましょう。
ログイン画面にGoogle reCAPTCHAを使用する
こちらもプラグインが複数公開されており、インストール数が多いプラグインを使用するとよいでしょう。 このGoogle reCAPTCHAのVersion2やVersion3の設定を行った場合でも、Spamユーザー登録は回避し登録されてしまいますので万全ではありません。
先のログインURLを変更し、ログイン時に画像認証やログイン試行回数制限、国外IP制限にGoogle reCAPTCHAでようやくSpamユーザー登録が回避できる状態になります。
いろいろ試した結果、国外IPの制限が一番効果が高いですがコミュニティサイト運営では制限を掛けたくないので、対策効果は大きく低下してしまいます。
[amazon asin=”B083Z2KS8V” kw=”Wordpress セキュリティ”]
[amazon asin=”B09SFPB6M5″ kw=”Wordpress seo”]