このサイトは現在WordPressで管理されています.メジャーなアプリケーションなので攻撃も多いです.パスワードを少し長く二十数文字にしていますが少し不安.ということで多要素認証を使うことにしました.
タグ: 2FA
Nextcloudの2要素認証が出来ないときに管理者が1度限りのワンタイムコードを発行できる「Two-Factor Admin Support」
Nextcloudユーザが2要素認証を出来ないときにNextcloud管理者が48時間有効な1度限りのワンタイムコードを作成することができる「Two-Factor Admin Support」を試してみました.
$ sudo -u www-data php occ app:install twofactor_admin
occコマンドで導入しました.WebインターフェイスからでもOKです.
導入後,管理者アカウントで「設定」→「管理」→「セキュリティ」の「Two-Factor Admin」が出来ています.この「User ID」のテキストボックスにワンタイムコードを発行したいユーザIDを入力して「Generate」を押すと48時間有効なワンタイムコードが発行されます.このコードをユーザに伝えてログインしてもらいます.
$ sudo -u www-data php occ twofactorauth:admin:generate-code $USERID
There is an existing code that will be overwritten.
Generated new one-time code for test01: 163929
This code is valid for 48 hours.
occコマンドでも発行できます.
該当ユーザはユーザID/パスワードを入力した後の2要素認証で「Admin code」という選択肢が増えるのでそれを選びます.
管理者に教えてもらったワンタイムコードを入力してログインします.
TOTPのデバイスを壊してしまったり家に忘れてきたとかいったときに便利そうです.(数が少なければ)
$ sudo -u www-data php /var/www/files.matoken.org/occ app:list | grep twofactor_admin:
- twofactor_admin: 3.0.0
$ sudo -u www-data php occ --version
Nextcloud 20.0.8
$ dpkg-query -W php mariadb-server apache2
apache2 2.4.38-3+deb10u4
mariadb-server 1:10.3.27-0+deb10u1
php 2:7.3+69
$ lsb_release -dr
Description: Debian GNU/Linux 10 (buster)
Release: 10
$ uname -m
x86_64
Nextcloudの電子メール2要素認証の「Two Factor e-mail provider」
Nextcloudアプリの「A Two-Factor-Auth Provider for e-mail」を試してみました.これはNextcloud認証時にユーザID/パスワードで認証した後設定されたメールアドレスにワンタイムトークンが届いて,それを使って2要素目の認証ができるようになるものです.
$ sudo -u www-data php occ app:install twofactor_admin
twofactor_admin 3.0.0 installed
twofactor_admin enabled
まずは導入.occ
コマンドでインストールしました.WebIFからでもOKです.
2要素認証を有効にしたいユーザでNextcloud Webにログインして,「右上のアイコン」→「設定」→「個人情報」の「メール」に正しいメールアドレスが設定されているのを確認して,「セキュリティ」→「二要素認証」→「Email verification」の「Enable」を押して有効にします.
Note |
電子メールアドレスが未登録だと以下のようなメッセージとなりました. Could not generate a code: user hoge does not exist |
するとトークンがNextcloudに設定したメールアドレスに送信されるのでメールを確認してトークンをテキストボックスに入力して,「Veryfi」を押して確認します.
うまく行きました.
一旦ログアウトしてログインしてみます.
ユーザID/パスワードで認証した後,「Email verification」の画面になります.メールが送信されているはずかので確認してそこに書かれているトークンを入力してログインします.
2要素認証ではTOTP以外にもSMS, Telegram, Signalなどもありますがそれぞれ設定が面倒です.電子メールであればユーザの設定は少ないので良さそうです.
$ sudo -u www-data php occ app:list | grep previewgenerator:
- previewgenerator: 3.1.1
$ sudo -u www-data php occ --version
Nextcloud 20.0.8
$ dpkg-query -W php mariadb-server apache2
apache2 2.4.38-3+deb10u4
mariadb-server 1:10.3.27-0+deb10u1
php 2:7.3+69
$ lsb_release -dr
Description: Debian GNU/Linux 10 (buster)
Release: 10
$ uname -m
x86_64
GNU socialに2要素認証を
Mastodonなどでは使える2要素認証ですが,GNU socialにはありません.
先日 GNU social を nightly にしたのでこれが利用できそうです.
Plugin形式で戻すのも簡単そうだし試してみました.
backup
dbとファイルをバックアップしておきます.
|
GNU social の source ディレクトリに移動して 2fa を marge する
|
動いているGNU social環境にcopy
|
config.phpに以下の行を追加してTwoFactorAuth pluginを有効にする
|
動作確認
設定画面の左側に 2FA という項目が増える.

「Require secondary authentication upon login」のチェックボックスにチェックを付けて SAVE で2FAが有効になる.
Default provider で常用する2FA方式を選択しておくと便利です.

認証には,「FIDO 2.0」「TOTP」「U2F」が利用できます.
自分はTOTPを利用しています.TOTPの場合スマホアプリのGoogle Autharicatorなどが使えます.QR CodeやKEYを使ってアプリに登録します.

自分は信頼できるスマホを持っていないのでoathtoolを使って適当なscriptを書いて使っています.
|
バックアップコードも保存しておきましょう.

この状態で一旦GNU socialをログアウト,いつものID/PASSWORDでログインすると2FAの認証画面になるので,認証情報を入力してログインします.
既定値以外の認証情報を用いたい場合は「Try another way to sign in.」から選択可能です.

bug?
認証後真っ白な画面若しくは「Aythentication success!」と表示されるけど認証画面になります.多分バグです.URLを手動で編集したらログインできています.

サードパーティアプリケーションの対応
スマホアプリなどを利用している場合はパスワードを変更しなければいけません.
2FAの設定画面の「Application Passwords」の「ADD APPLICATION」ボタンから追加します.「Application name」に識別用の適当な名前を入れて,「Generate」ボタンでパスワードが生成されます.必要が無くなったら「Revoke」で消しましょう.



AndroidアプリのTwidereでは認証情報の変更画面が見当たりませんでした,アカウントの追加をして何時ものhost/id/新しい2faアプリケーションパスワードを設定するとすでにアカウントがあるとか言われて認証情報が書き換わりました.
という感じでとりあえず利用できるようになりました.
GNU socialでは結構長く放置されているので暫くは入らないような感じですかね.
バグはTOTP利用してる人が居ない?Ubico YubiKeyとかほしいですね.