昨夜、寝る前に突然やって来た。どうにか対処したものの、大変な寝不足になってしまった。
以下、簡単に流れを書く。
- なぜか、ブログの管理画面にログインできなくなった。2要素認証(以下、2FA)が失敗する。
- 一瞬、サーバが(一種のランサムウェアに)攻撃されて、絶対に入れない状態になったのかとも思った。
- ただ、sshは問題なく、別のシステムの2FAは成功したので、ブログだけの問題なことが分かってホッとした。
- あとで分かったが、セキュリティのプラグインAll In One WP Security(以下、All-in-one)の2FAが設定していないにも関わらずonになったようだ。
- 近頃の更新で、All-in-oneに2FA機能が追加されたけど全然気付いていなかったのが、そもそもの敗因だった。
- 自分では その2FAをonにした記憶がないので、勝手にonになったか、元々の2FAのプラグインと勘違いしてonにしたのかも知れない。
- ただ、何も設定していないのに有効になる(できる)のは、とんでもなく ひどい!
- 間違えて2FAの機能をonにするだけなら有り得るが、どのユーザーを2FAにするか、どんな方式(例: OTP, ハードキー)にするか、OTPなら確認のコード入力など いろいろあるのに、間違えて そこまで設定することは全くない。
- 元々の2FAのプラグインの設定を流用して勝手に設定されたのだろうか?
- 書いたあとで分かったが、All-in-oneの2FAをonにすると、管理者などの権限を持っているユーザーは2FAが有効になってしまう。罠だ。
- そこで、All-in-oneの設定で、2FAを有効にする対象(権限・役割)を なし(全部チェックせず)にしたら、2FAの設定タブがなくなったので、もう間違うことはなさそうだ。
- 書いたあとで分かったが、All-in-oneの2FAをonにすると、管理者などの権限を持っているユーザーは2FAが有効になってしまう。罠だ。
- 一瞬、サーバが(一種のランサムウェアに)攻撃されて、絶対に入れない状態になったのかとも思った。
- (元々の)2FAのプラグインが変な状態になったと考えて一旦無効にしようとしたが、管理画面に入れないからできない。
- それで、コマンドラインでプラグインのファイルを削除したが、なぜか2FAを無効にできなかった。
- その前に、元々の2FAのプラグインのサイトを参考に、設定ファイルで無効にする方法を試したが、効かなかった。
- 良く調べたら、(上記のように、)元々の2FAのプラグインとは別の、All-in-oneが2FAのOTP入力画面を出していた。
- 最後は、認証エラーで出ているエラーメッセージを、インストールしているプラグインのプログラムから検索して特定した。。。
- 似たような画面なので全く気付かず、どうしてもログインできないのが不思議だった。
- それで、コマンドラインでAll-in-oneのファイルを一時的に削除して どうにかログインし、All-in-oneの2FAを無効にして、今までどおりログインできるようになった。
- それで、コマンドラインでプラグインのファイルを削除したが、なぜか2FAを無効にできなかった。
- PHPがダウングレードできない。
- All-in-oneが悪いと分かる前、近頃更新されたPHPの互換性の問題で元々の2FAのプラグインが うまく動かなくなったかと思い、ダウングレードして試そうとしたものの、いろいろな依存関係のために諦めた。
- メールがGmailに送れない。
- ログイン画面のパスワードリセット機能を使おうとしたが、その案内メールが届かなかった。
- 届くこともあるのが謎だったが、どうも後述のDNSの逆引きがうまく動いていないためのようだった。
- 更に、そのメールはパスワードをリセットするだけで、2FAには何もしないので無駄だった。
- そもそも、元々の2FAのプラグインにはバックアップコードがあるのだが、All-in-one(バックアップコードは有料)とは違うので使えなかった。
- 調べたら、Googleがスパムと判定するためのようだった。
- メールの送信元認証システムのSPFやDKIMなるものを設定しないとGoogleはスパム扱いするようなので、(深夜なので止めておけばいいものの・・・)「ちょっと」SPFを設定してみた。
- ログイン画面のパスワードリセット機能を使おうとしたが、その案内メールが届かなかった。
- SPFの設定がうまく行かない。
- 自分のドメイン名を管理するDNSサーバにSPFを設定しても、チェッカーでは「SPFの設定なし」と出た。
- 原因が良く分かっていないが、DNSの逆引き設定の不良(未設定?: 後述)とDNS情報の伝達遅延のせいだったようだ。
- 書いたあとで調べたら、原因が分かった。 (9/9 13:56)
- DNSサーバにSPFを設定する場合、TXTレコードとして書くのが一般的なようだが、以前はSPFレコードとして書く方式もあったけど廃れたようだ(→ 参照)。
- 一方、僕は良く分からずに、(DNS設定画面のプルダウンメニューに出て来たから)SPFレコードで設定したので、チェッカーが「設定なし」としていたことが分かった。
- SPFレコードからTXTレコードに設定し直したら、チェッカーもGmailへのメール送信も成功した。
- 想像だが、未だにSPFレコードをサポートするのはGoogleくらいなのではないか??
- 自分のドメイン名を管理するDNSサーバにSPFを設定しても、チェッカーでは「SPFの設定なし」と出た。
- DNSの逆引き(IPアドレス→ドメイン名)がおかしい(未設定?)。
- このサーバの設定項目に逆引きがあるが、ドメイン名のDNSサーバに登録すれば不要だと誤解していて、設定していないのが駄目だったようだ。
- ただ、今まで、ちゃんと逆引きできていたこともあるので、それは どこのを参照していたかが謎。
- 記憶が定かでないが、一時設定していたけど止めたのが どこかに残って居たのかも知れない。
- あと、不勉強なため、逆引きは どこが標準(権威を持つ)サーバなのか分からなかった。このサーバのプロバイダなのだろうか?
- サーバのプロバイダに問い合わせたら、想像どおり、このサーバのプロバイダにしか逆引き情報は設定できないとのことだ。
悪戦苦闘して何とかなったが、All In One WP Securityの ずさんさに呆れたしムカついたので使うのを止めたい。が、代わりの いいものを探すのが面倒だ。あと、DNSの逆引きの件は もう少し調べて勉強したい。
それにしても疲れた。。。
PS. 今朝、どうにか片付いて力尽きた頃に、UKの女王が亡くなられたようだ。その頃のツイートに、「BBCの出演者が みんな黒い服になった」というようなものがあった。
頭の中で、時々、(Queenの)"God save the Queen"(1975)が流れ、メイのちょっと寂しげなギターや最後の余韻のようなドラムに浸る。