灯台下暗しのWordPressセキュリティと、つけてはいけないパスワード

WordPressは何かと不正アタックが多いので、このサイトもセキュリティ関連のプラグインはちゃんと入れて、アラートメールも来るようにしています。週に一度はメール来る。いつも更新する時以外は基本的に放置しているので(自慢にならない)、知らない間に踏み台にされて犯罪起こされたり、乗っ取られて怪しいサイトになるのも困るよね。久しぶりにアクセスしたらエロいのとかになってたら、私が一番びっくりします…。

そんな状態なので、自分のミスとかサーバーの問題とか、500エラーで落ちてる時とかは、警告もないからいつからそうなってたのか全然気づかないとかある。→Xreaで500サーバーエラーが出た時[備忘録]

もっとちゃんと管理しろよって感じですが、アメドラやイギリスドラマや見なくちゃならないのがたくさんあって忙しいのよ。毎日更新してるような立派なサイトじゃないから毎日アクセスしないもん。キャッシュの不具合とかの勝手に落ちて復旧してるような短時間のエラーはたぶん落ちてたことすらわかってない…。WordPressサイトって落ちやすいのか、たまに調べものしてて落ちてるよそ様のサイトも見つけますが、お仲間だねって思っちゃう。

他にもよくあるエラーとしては、今はfunctions.phpを触らなくても済むプラグインが多いですが、昔は何かと触る必要があってそのたびに設定おかしくなって画面真っ白になって慌てたよ。データベース接続確立エラーもやりました。今もたまにここが白くなってたら、私がやらかしてる証拠です。

過去にCMSの載せ替えとかで何度もデータごとふっ飛ばしてるし。ここのアーカイブが数年飛んでるのもそれが理由です。サルベージしたデータを再アップしなきゃと思って、ちょっとやりかけてそのままになってる。好きな俳優のドラマの感想書いてたやつだけはサブドメインに分けたけど。←一番の脅威は自分自身である。それに気づいて今バックアップが最優先では?と悟った。

さてそんなテキトーな私のメールに大量のアラートメールが届きました。ログインアタックに反応してメールが届いたんだけど、140回アクセスがあったからメールも140通来たんだよ。もはやメール爆弾。←メール送信設定も細かすぎた…。何千回もやられる前でよかった…。

何事かとログをチェックして、どんなアタックがあるのか見ました。そしたら夜中にシンガポールドメインがwp.getUsersBlogsでログインIDとパスワードを入れてブルートフォースアタックをしてたらしい。総当たりのパスワードも全部ログに残ってた。

パスワードが全部外れで未遂で終わって諦めてったらしいみたいですが、そもそもログイン回数の制限してるのに?ってのと、なんでIDがばれてんの?とそれが今回ハッカーのおかげで気づいた点。

ログインIDの対策でやってたこととやってないこと

  • WordPressのログインIDには、adminは狙われやすいので使ってはいけません。私もそこはちゃんとしてた。
  • デフォルト設定だとログインIDと投稿者名が同じになってしまうので、ニックネームを別につけて、そちらを表示させるってのもやってた。
  • でもそれやっても、投稿者名を非表示にしてもテンプレートによっては出力自体はしてて、ソースを見ると「class=”meta-author”」辺りに「/author/****」ってニックネームじゃなくて元のログインIDの方が出てる場合があるから、そこを変えるのもやった。

    他にも、ニックネームでコメントしてるはずがソースのclassを見ると「class=”comment byuser comment-author-*****~」って部分にログインIDが表示されてるってのもある。それ以外でもプラグインとかによってはソースに出てるのがあるかも。デフォルトだとオーサー名関連のurlとかタグがログインIDの方になっちゃうのは、ニックネームつけてる意味ないし、迷惑設定だと思う。

  • 更に「/?author=1」にアクセスすると見えちゃうから隠すってのもやってた。

ここまでやったのになんで?知らずにどこかからアクセスされて漏れてたらどうしようってちょっと気持ち悪くて焦る。けど今もどこから漏れたか分かりません。まだどこかに表示されてるんだろうか。分かる人教えて。

wordpress-bruteforce-protection

前に管理画面は日本のIP以外のアクセスは全部弾くってのもやってたんだけど、設定したのうっかり忘れて海外行った時のお買い物メモを非公開でしたためて現地で見られず、その設定止めてたんだよね。アメドラのDVDとか買おうとしてタイトルメモってたのに、海外行った自分が弾かれたと。

そもそもそんなメモをブログに書いてんなよって感じですが、どこからでもアクセスできるしって思ったのよね。うっかり公開しちゃったら見た人もなんだこれって思うような感じですが、こういうメモ帳代わりって結構みんなやってるよね?さすがにお買い物メモはないにしても、設定メモとかさ…。

それに海外IPを弾くってのも、日本のIPは悪いことしないって前提に立ってますが、日本のIPで悪さするやつたまにあるし。国で弾くのは限界がある。逆にアメリカやウクライナとかアタックだらけの国で運営してる人は弾くの大変そうと思…ったら、海外は海外でまた自国以外(に偽装された)アクセスが多いらしいよ。アメリカの個人サイトには、JPドメインのアタックがたくさん来る、みたいな。

また、トップディレクトリーにインストールしないって対策もあるんだけど、それもソース見ればすぐわかるし。昔「/WP/」って階層作ってインストールしてサイトアドレスだけ変えてた時に、DBで問題出たとき直すのが面倒だったとか、プラグインが不具合出るやつあったとか、複数ブログが作れないとかデメリットもあって地味に面倒で、次にインストールする時は絶対直下にインストールしてやる!って誓ったんだよね…。今はそれらも改善されてる可能性はあるけども、なんか面倒だった記憶があって避けてる。

ということでもしかしたら、ログインIDは完全に隠せないものかもしれない。

ということでとりあえず追加したこと

  • 元々セキュリティプラグインは入れてある。だからブロックされてアラートメールが来たわけだし。でもログイン回数制限して一定回数間違えるとエラーが出る設定にしてたけど、それはログインページであって「xmlrpc.php」は設定されてなかった。というか大体のセキュリティプラグインも、ここは無効か有効かとPingback機能に関する設定しかない。灯台下暗しだった。
  • なので「xmlrpc.php」へのアクセスを「.htaccess」で弾くことにした。「wp-config.php」は元から弾いてる。
  • ログインページにベーシック認証をかけるという古典的な対処も。
    どこかでベーシック認証も問題あるって見た気はするけど、とりあえず気休めとして。一枚噛ませてあると対策した気になるよね。これとログインURLそのものを変更してしまうのは、どちらがセキュリティ高いのかな。両方やれって?

    指定したIPのみにアクセスさせるって対策もあるけど、うち固定IPじゃないし、下手に厳しくすると、また例のごとく私自身が弾かれてログインできなくなったりするし。

  • 他にも、

  • メールの送信設定を直す羽目になったり。
  • 最初に書いたようにバックアップを取ってみたり。

ハッカーさんのおかげでセキュリティ等を見直す機会ができました。

つけてはいけないパスワード一覧

今回のブルートフォースアタックのログから140個抽出しました。「*****」は私のログインIDです。ほとんどがその(*****)+数字とかになってるのが分かると思いますが、そういう人が多いってことなんでしょうか。連番とかあるはずないじゃんって思いかけたけど、アフィリエイトサイトとかたくさん運営してる人は連番振って管理してたりする率が高いのかな?西暦もサイト作った年をパスワードにしてる人が多いとか?

  • 000000
  • administrator
  • pass123456
  • pass12345
  • pass1234
  • pass123
  • password
  • admins
  • *****123123
  • 123123
  • 654321
  • *****pass
  • pass
  • *****654321
  • *****2009
  • *****2008
  • *****2007
  • *****2006
  • *****2005
  • *****2004
  • *****2003
  • *****2002
  • *****2001
  • *****2013
  • *****2012
  • *****2011
  • *****2010
  • *****2019
  • *****2018
  • *****2014
  • *****2015
  • *****2016
  • *****2017
  • *****153214
  • *****00
  • *****01
  • *****02
  • *****03
  • *****04
  • *****05
  • *****06
  • *****07
  • *****08
  • *****09
  • *****10
  • *****11
  • *****0987654321
  • *****098765432
  • *****09876543
  • *****0987654
  • *****098765
  • *****09876
  • *****0987
  • *****098
  • *****#@!
  • *****!@#
  • *****#@!#@!
  • *****!@#!@#
  • *****1@@##
  • *****1##@@
  • *****12@@##
  • *****12##@@
  • *****123@#
  • *****123#@
  • *****123@@##
  • *****123##@@
  • *****123456789
  • *****12345678
  • *****1234567
  • *****123456
  • *****12345
  • *****1234
  • *****123
  • *****12
  • *****10
  • *****0
  • *****9
  • *****8
  • *****7
  • *****6
  • *****5
  • *****4
  • *****3
  • *****2
  • *****1
  • *****@123456
  • *****@12345
  • *****@1234
  • *****@123
  • *****@1
  • *****@12
  • *****!
  • *****
  • password123
  • admin@1234567
  • admin@123456
  • admin@12345
  • admin@1234
  • admin@12
  • admin@123
  • fuckyou
  • Admin
  • admin
  • qwerty
  • Admin1234567
  • Admin123456
  • Admin12345
  • Admin1234
  • Admin123
  • admin12345
  • admin123456
  • admin1234567
  • admin123
  • admin1234
  • 123456
  • qwerty123
  • whatever
  • letmein
  • starwars
  • passw0rd
  • iloveyou
  • 12345
  • abc123
  • QWERTY
  • Password
  • 12345678
  • batman
  • everton
  • slipknot
  • metallica
  • 50cent
  • chelsea
  • naruto
  • superman
  • michael
  • 123456789
  • liverpool
  • 1111111
  • ashley
  • !@#$%^&*

最後の方は単語が多いですが、たぶんサッカーか何かの本拠地のイギリスの地名があると思えば、アメコミのバットマン・スーパーマンに、メタルバンドがあって、ナルトって日本の漫画名もあって、カオスです。

ここでは米英のドラマにアメコミの話もちょっとしてて、私の好きな俳優の名前でもあるマイケルってのもあるので、もしかしてその辺の単語がヒットして狙われたのかなと一瞬焦ったけども、単によくあるパスワードリストを参考にしてるだけだった。ホッ。

このリストと被りが多い。
https://en.wikipedia.org/wiki/List_of_the_most_common_passwords

一方でこのパスワードの元ファイルは英語圏ベースなので、日本人がパスワードにするなら名前もsuzukiとかtanakaとかの方が思い当たる人多そう。今のところはハッキングする側も無差別にただツールを回してるだけなのが助かってるけど、そのうち地域ごとにローカル辞書対応する知恵つけられると引っかかる率も上がって怖いね。

まあインターネット人口からしてわざわざローカル対応しなくても、英語圏をメインの標的にするだけでそこそこヒットしちゃいそうだから進化するかどうか分からないけども。

そしてアラートがログに残ってるってことは、ちゃんと防いでくれてるからで、そこは嬉しいんだけど、うっかり通しちゃったらアウトなわけで、ログの存在そのものが怖いところでもある。そもそもアタック受けるのを避けられればいいんだけど、世界に公開してる以上は仕方がないのかね。試行錯誤の日々です。

WordPressセキュリティ大全
吉田哲也・著
秀和システム

とりあえずこの本読んでセキュリティの見直しすることにした。
今回した対策だけじゃ抜けがあるかもしれないし。