×
タグ:

私は自分のサーバー・ウェブサイトに Limit Login Attempts というプラグイン👎を入れております。

WordPressへのログインを制限するというもので、もちろん目的はセキュリティ対策です。

Webサーバーを外部公開して以来、めっきりログイン試行が増えたようです。
以下はその Limit Login Attempts で見られるログイン失敗のグラフです。

やっばいですね〜、これは。
日に15,000回を超えるようなアクセス試行ですか? これは間違いなく、激しいブルートフォースアタックを受けている証拠でしょう。自前でWordPressを運営するって、つまり、こういう事なのですね〜。自宅のサーバーが激しいセキュリティ侵食の猛威に晒されている。そんなの怖いし嫌だ! という方は、素直にno+eやアメブロを使ったほうが得策でしょう。

ブルートフォース攻撃とは?

ブルートフォースアタックとは、WebアプリケーションやWebサービスにおいてパスワードを総当たりで試し、突破するという攻撃手法です。力技での突破だからブルートフォースというのでしょうね。
人力では無理ですが、巡回ロボを使って片っ端から試していくので突破は時間の問題。論理的にはいずれは必ず突破されます。複雑なパスワードを使えばヒットは遅らせられますが、極論すれば「時間稼ぎ」にしかなりません。

今回、ブルートフォースに狙われているのは WordPress の管理ログインです。
すなわち、 https://<domain>/wordpress/wp-login.php が標的にされているということ。ここへのログイン試行回数が日に数万回試されているのです。

メールでも警告が来ていましたので、状況を知った私は慌てていくつかの対策を講じました。
Limit Login Attemptsのインストールもその一環でした。

基礎的なアクセス制限

Limit Login Attempts には基礎的なアクセス制限が設けられていますので、まずはそれを設定します。

  • [4回]ログインに失敗したら[20分間]待たないと再試行できない、
  • ログインに頻繁に失敗するとIPブラックリストへ登録していく、

・・・などなど。
ログインを無数に試行する「ロボ」(bot) にとっては20分のインターバルは途方もない時間です。多少の時間稼ぎにはなるでしょう。しかし、パスワードの複雑化と同じでこれも根本対策ではありません。

IPをランダムで頻繁に偽装しながら連続的アタックをするロボを作られると、ほとんど効果は発揮しませんし、いずれは突破されるでしょう。

ログインアクセス国籍を絞る

ログインアクセスすると、アタックのIPや国などアクセス源の履歴が残ります。
Limit Login Attemptsのダッシュボードでアクセス元国を見ると、海外からの試行が多いようです。「トルコ」や「韓国」が最多。それに次いで「US」「イラン」などが並びます。

もちろん日本からのアタックもあるのですが、海外偏重であることを考えると、ログイン許可を日本だけに絞れば相当数を減らせそうです。

そこでまずやったのはログインを「JAPAN」のみ許可にしたこと。

上記のように、Limit Login Attemptsの設定で
   Allow only これらの国 [Japan]
と設定します。これによって海外のログイン試行は404へ誘導されます。

以上も抜本的ではありませんが、こうしてサーバー負荷を下げたり、突破確率を下げることは重要です。

ログインURLを変名する

wp-login.php … というURLが自明だからこそ、沢山のアタックができるわけですよね。
ここの名前を偽装すれば、外部からアクセスされてもログインページを開くことすら出来ません。かなり強力です。

私は WPS Hide Login というプラグインを使い、ログインページのURLを偽装しました。
このユニークなログインURLを知らない限り、外部からのログインアクセスが難しくなります。
組み合わせ数的に非現実的ですが、「このURLも総当たり」という手法が無くはないかな。


2FAの導入

まあ・・・結論から言えばこれが最も決定的でしょうか?

2 factor authentication : 2要素認証の導入です。
暗号鍵は私しか持っていないので、この鍵を抜かれない限り突破は無理です。
少なくとも、ブルートフォース単体では無理でしょう。

私はWP 2FAプラグインを導入して、2要素認証を加えました。

アプリを利用したワンタイムコード (TOTP) をONにしてメインで使います。

メールアドレスの指定が「いいえ」ですから、メール利用の突破は無理です。
保険としても、メールは脆弱だから利用を避けた方が良いでしょう。

2FAは、オーナーである自分も含めた「すべてのユーザー」に強制します。
自分の情報が抜かれていないとは限りませんからね。

準備猶予を与えてはなりません。「ただちに2FA設定をユーザーに求める。」
これらにより、ボットはログイン寸前で手詰まりになります。


ということで、今回はWordPressのログイン周りのセキュア強化のお話でした。
サーバーの侵入経路はこれ以外にも色々とあるわけで、そちらも別途対策していますが、それはどちらかというとWordPress「外」のお話ですね。

最後までお読みいただきありがとうございました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

投稿者

KeroYon

関連投稿