WordPressとTOTP

サーバーに手を入れている話を書きましたが、

このBlogのログインをパスワード+TOTPの2要素認証にした。

WordPressにはそのためのプラグインがあるので簡単である。


ところで、このBlogがWordPressになる以前はTLSクライアント証明書を認証手段に使っていた。

クライアント証明書で通す

ここに書いてありますが、Apacheで”SSLVerifyClient optional”をセットして、

環境変数の$_SERVER[“SSL_CLIENT_S_DN_CN”]を見て認証すると。

実際にはパスワード認証との併用だったが、ブラウザでログインするときは何も入力しなくて済んだ。

ただ、WordPressでこんなマニアックな認証方法は使えませんからね。


TOTP(Time-based One-time Password)の導入は簡単である。

プラグイン/Google Authenticator (WordPress)

これをインストールすればいいんですね。

その上でユーザーの設定にある、”Google Authenticator Settings”をActiveにして、

Secretで”Create new secret”として、”Show/Hide QR Code”でQRコードを表示する。

あとは、これをGoogle Authenticatorなどで読み取れば完了である。

(これ登録完了後も同画面を開くとSecretが平文で表示されているのはどうかと思うが)

あとはログイン時にユーザー名・パスワード・TOTPを入力すればOK。


ところで僕はこのBlogの投稿にOpen Live Writerを使っている。

この場合、TOTPを使ったログインはできなさそうだが、どうすればよいのか?

この場合は”Enable App Password”として、Create new passwordとすると16文字のパスワードが表示される。

これをAPIを使うアプリにコピペしたり転記して記憶させておけばよいと。

(“ABCD EFGH JKLM NPQR”のように空白で区切られているが、空白はあってもなくてもよい)

Create new passwordしてに保存した後に使えるようになる。

Secretは平文表示するくせに、このパスワードは保存後は表示できなくなるのが割に合わない気がするが。


ちなみにこういうアプリパスワードという考え方はGoogleサービスなんかでもありますね。

GoogleではIMAPでGmailを使う場合などにOAuth2.0を使うことを推奨している。

この認証手続きの中で2要素認証を行ったりするわけですね。

僕が使っているThunderbirdはこれに対応しているが、このようなアプリは限られる。

そこでアプリパスワードを発行して使うという選択肢を用意している。

アプリパスワードは漏洩したとしても用途が限られるし、後から抹消することができる。

このため2要素認証の補完に使われることがあると。


ちなみにTOTPが使えなくなったときのワークアラウンドですが、

プラグインフォルダから同プラグインを待避するという方法が紹介されていた。

当たり前ですが、サーバーにログインしてファイルを操作出来る人ならなんとでもなるわけだ。

というわけで問題ないですね。


あとはこのサーバーで単純なパスワード認証に頼ってるのはSMTP-AUTHぐらいかなぁ。

IMAPはTLSクライアント証明書での認証をやっているけど、

SMTPの方はどうもうまくいかないので、あきらめてパスワード認証。

ただしLinux自体のパスワードとは別のものを使ってはいるんだけど。

(Postfix用のパスワードデータベースを作ってある)

これこそアプリパスワードみたいなもんだし、SMTPならそこまで神経質に考えなくてもいいかなとか。

そんなわけで軽視しているところですけど、あと1つってなるとなんとも。