◆何が起きたのか

WordPress(つまりこのブログ)のJetpackプラグインで閲覧することのできる「サイト統計情報」ページを眺めていて、Twitterからのアクセスがあることに気づいた。

「あ、うれしい」と思って、Yahooのリアルタイム検索で「http://34.67.37.11」と検索しました。

そしたら、なんか

https://insider.10bace.com/author/hoge/

っていうリンクのツイートが出てきて、hogeっていうのは俺の苗字なんだけど

もう俺は

ビビるわぁ!

「ふぁー」と思いながらそのリンクを踏んだら「作者別投稿一覧」のページにとんだ。

どうやらWordPressの仕様として、「作者別投稿一覧」のページではリンクにログインユーザー名が出てしまうらしい。

hogeってお前っそれ俺の苗字だからね!?
いや別に苗字バレるくらいはどうでもいいんだけど、ワードプレスのログインユーザーIDですからね!?

それをお前・・・(絶句)

そりゃークラッキングもされますわ。ブルートフォースアタックし放題じゃないの。
ちょっと信頼しすぎてましたわ。

いや、信頼とかそういう次元の話じゃないような気もする。「ログインIDは秘密にする」って、ネットリ★テラシーとかそういう話でしょう。

そしてリンクだけ対応してもダメで、どうやらコメント欄でもユーザーIDがバレているらしい。
ウーン…(心肺停止)

◆対応:2020/1/20追記

Hide WordPress Usernames to Improve WordPress Security

データベースの「wp_users.user_nicename」を更新したら消せた。やったぜ。

◆考えられる対応

ちょっと技術的な話もするね。ごめんね。泣かないで。

▼サーバーに認証を挟もうとしたけどやめた

まず、Basic認証かなぁ。と思ったら今はDigest認証なるものがあるらしい。
Basic認証って暗号化してなかったんだ(無っ恥無恥)
Basic認証だと思って知らないうちにDigest認証を使ってたのかもなぁ。もはや判らんけど。

で、「いれたろ」と思ったんだけど、Digest認証ってあぱへのソレらしいね。このブログはあずれの上に載ってるからできないね。いや、あずれでもあぱへできるんだけどね。それにあずれでもしこしこコード書けばできそうだけど。

で、調べたらDigest認証のモジュールを作ってくれている人がいたらしい。こういうページがあった。

でも、そういう手の加え方をしたくねぇかなと思った。
自動生成されたものについて生のデータを触ったりするのは、あんまりよろしくない。
自分が何をしたのかわかんなくなっちゃうよね。作業のログを残せるのならそれでいいと思うけど。

▼セキュリティ対策プラグインを入れようとした

そこで「プラグインで対応できないのか」と思った。
「WordPress セキュリティ プラグイン」とかでググった結果、下記ページが見つかった。

WordPressセキュリティ強化の基本

会社のブログでhttpってどうなの(小声)
ってかLet’s Encryptはいつワイルドカード証明書の対応すんの。1月対応っていうから待ってんだけど。

それはいいとして、SiteGuardというプラグインが紹介されていた。
これは、画面見た感じ、良さげね。

と思ったので入れて有効化した。

そして動確しようと思ったらログアウトできなくなった(怒)

ググったら下記ページにあたった。

SiteGuard:ログインできない、ログアウトできない、の解決方法

うーん。
このプラグインもAzureを想定していないような気がする。
だから削除しよう。Jetpackと被ってる機能あるし。

▼セキュリティ対策プラグインを入れた

結局何がしたかったのかというと、他の人にログインされたくないという話だったわけで、だったら何らかの2段階認証を挟めばいいわけだ。

2段階認証と言ったらGoogle Authenticator。Microsoft Authenticatorのほうが指紋認証とか使えて便利なんだけど多分アレって組み込みに対応してないんじゃないのかな。外部サービス(つまりMicrosoft以外のサービス)で使われてるの見たこと無い。

それはどうでもよくて、とにかく「WordPress Google Authenticator」でググった。以下のページが当たった。やっぱそういうプラグインあるんだね。考えることは一緒か。

Google AuthenticatorプラグインでWordPressブログを2段階認証に設定する方法

これですね。
なんか微妙にレスポンス悪くてログインできないタイミングがあるような気がするけど、3回くらい試したら入れた。
その後は安定してログインできる。

ただ、変な設定すると自分もログインできなくなりそうだから気を付けようね。
あと携帯無くした時のこととか考えておこうね。
クラウドにコード残しておくとかしろ。

あと別のブラウザ立ち上げるなりして、ちゃんと動いてるかどうか確認しろ。

▼WordPress.comのログインも2段階認証にした

WordPress.comのアカウントある人は、次の手順も確認すること。

  • https://wordpress.com/log-inでログイン
  • 右上の、「自分」を表現してるアイコンをクリック。(つまり、自分のプロフィール編集画面を開く。)
  • 日本語になっていない人は、左のサイドバーに「Account Settings」という項目があるのでクリック。「Interface Language」を「日本語」にする。そして保存。
  • 左のサイドバーに「セキュリティ」という項目があるのでクリック。
  • 「2段階認証」という項目があるので、なんとなく設定する。
    ⇒「アプリで認証」ボタンを押すと、QRコードが表示される。さっきの話で出てきた「Google Authenticator」を使っていい感じにできる。
  • 以上。

WordPress自体もデフォで2段階認証に対応しろや。
と言いたいけど、なるべくまっさらな状態でユーザーに提供したいのかなぁ。
でもそれ以上にセキュリティ(の意識)って大切じゃないか。

◆結論

今回入れたGoogle Authenticatorのプラグインも、正直どこまで信頼していいものかわからない。WordPressのログインフローについて調べたこと無いし。

本気出せば割れないこともないのかもしれない。だけど他のサイトよりは安全になったじゃろ?

もうちょっと見てやらないといけないとは思うが、いま言いたい事としては

①WordPressはまずログインユーザー名晒すのやめろ
②Let’s Encryptはワイルドカード証明書を早くしろ

の2つです。WordPress過信しちゃ駄目だね。
今回のことで「WordPressのセキュリティやばくねぇか」と思うきっかけができたけど、よく考えたら始めっからガバガバだったわ。adminとかいうユーザーを削除した時にもっと深く疑うべきだった。なんか勝手に安心して見逃してしまっていた。†悔い改めて†

技術者のはしくれなのだから、一回ちゃんとセキュリティの勉強もしないとね。
いつまでもなんちゃって技術者じゃあ駄目なんだからねっ(自戒)

あとはやっぱTLS(https)使ったほうが良い。
Googole Authenticatorのプラグインだって、設定画面だと平文でシード値(ワンタイムパスを生成するためのコード)持っちゃってるもの。だから、例えばお前が公衆LANをよく使う人だったり家のWifiがWEPだったりした場合、色々噛み合うと割られる。だからTLS使おう。さすればとりあえず盗聴はされない。と思う。

いい機会だよ。Azure Web AppsもそろそろHTTP/2に対応してくれるらしいしな。約3年越しに
※やりとりするデータの要素数が少ないとHTTP/2のほうが表示遅くなるよ。詳しくは調べなね。

俺の場合Let’s Encrypt待ちでkonozamaだ。ホント早くしろ。3000円も取りやがって(募金)。