「Google Authenticator」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(ページの作成:「Category:Secure Shell en:Google Authenticator ru:Google Authenticator [https://github.com/google/google-authenticator Google Authenticator] はワンタイム...」)
 
2行目: 2行目:
 
[[en:Google Authenticator]]
 
[[en:Google Authenticator]]
 
[[ru:Google Authenticator]]
 
[[ru:Google Authenticator]]
[https://github.com/google/google-authenticator Google Authenticator] はワンタイムパスコード (OTP) による2段階認証を提供します。OTP 生成アプリケーションは iOS, Android, Blackberry で利用できます。[[en2:S/KEY_Authentication|S/KEY_Authentication]] と同じように認証機構は Linux の PAM システムに統合されています。このガイドではこの機構をインストール・設定する方法を示します。
+
[https://github.com/google/google-authenticator Google Authenticator] はワンタイムパスコード (OTP) による2段階認証を提供します。OTP 生成アプリケーションは iOS, Android, Blackberry で利用できます。[[S/KEY 認証]]と同じように認証機構は Linux の PAM システムに統合されています。このガイドではこの機構をインストール・設定する方法を示します。
   
 
==インストール==
 
==インストール==
14行目: 14行目:
 
大抵は2段階認証が必要になるのはリモートログインのときだけです。該当する PAM 設定ファイルは {{ic|/etc/pam.d/sshd}} です。Google Authenticator をあらゆるところで使いたい場合、{{ic|/etc/pam.d/system-auth}} に変更を加えます。ただし、その場合は自分を締め出してしまわないように細心の注意を払って下さい。このガイドでは {{ic|/etc/pam.d/sshd}} を編集するので、ローカルセッションではとりあえず安全に設定することができます (絶対安全というわけではありません)。
 
大抵は2段階認証が必要になるのはリモートログインのときだけです。該当する PAM 設定ファイルは {{ic|/etc/pam.d/sshd}} です。Google Authenticator をあらゆるところで使いたい場合、{{ic|/etc/pam.d/system-auth}} に変更を加えます。ただし、その場合は自分を締め出してしまわないように細心の注意を払って下さい。このガイドでは {{ic|/etc/pam.d/sshd}} を編集するので、ローカルセッションではとりあえず安全に設定することができます (絶対安全というわけではありません)。
   
Unix パスワードと OTP の両方を入力するために {{ic|pam_google_authenticator.so}} を以下のように (デフォルト4行の上に) 追加します:
+
Unix パスワードと OTP の両方を入力するために {{ic|pam_google_authenticator.so}} を以下のように {{ic|/etc/pam.d/sshd}} system-remote-login 行の上に追加します:
   
auth required pam_google_authenticator.so
+
'''auth required pam_google_authenticator.so'''
auth required pam_unix.so
+
auth include system-remote-login
auth required pam_env.so
+
account include system-remote-login
  +
password include system-remote-login
  +
session include system-remote-login
   
 
こうすると Unix パスワードの前に OTP を尋ねるようになります。2つのモジュールの順番を入れ替えると訊かれる順序が逆になります。
 
こうすると Unix パスワードの前に OTP を尋ねるようになります。2つのモジュールの順番を入れ替えると訊かれる順序が逆になります。
26行目: 28行目:
 
OTP または Unix パスワードのどちらかでログインできるようにするには:
 
OTP または Unix パスワードのどちらかでログインできるようにするには:
   
auth sufficient pam_google_authenticator.so
+
auth '''sufficient''' pam_google_authenticator.so
auth sufficient pam_unix.so
 
auth required pam_env.so
 
   
最後に、{{ic|/etc/ssh/ssh'''d'''_config}} でチャレンジレスポンス認証を有効にします:
+
{{ic|/etc/ssh/'''sshd_config'''}} でチャレンジレスポンス認証を有効にします:
ChallengeResponseAuthentication yes
+
ChallengeResponseAuthentication yes
 
そして {{ic|sshd}} の設定をリロードしてください:
 
そして {{ic|sshd}} の設定をリロードしてください:
# systemctl reload sshd
+
# systemctl reload sshd
   
{{Warning|SSH 鍵のペアによる認証を使っていて[[SSH_keys#Disabling_password_logins|パスワードログインを無効化]]していた場合、OpenSSH はこれら全ての設定を無視します。ただし、OpenSSH 6.2 から、{{ic|AuthenticationMethods}} を追加することで2段階認証と鍵による認証の両方を使うことができるようになっています。[[SSH keys#Two-factor authentication and public keys]] を見て下さい。}}
+
{{Warning|SSH 鍵のペアによる認証を使っていて[[SSH 鍵#パスワードログインの無効化|パスワードログインを無効化]]していた場合、OpenSSH はこれら全ての設定を無視します。ただし、OpenSSH 6.2 から、{{ic|AuthenticationMethods}} を追加することで2段階認証と鍵による認証の両方を使うことができるようになっています。[[SSH #2段階認証と公開鍵]] を見て下さい。}}
   
 
==秘密鍵ファイルの生成==
 
==秘密鍵ファイルの生成==
41行目: 41行目:
 
2段階認証を使用したい場合はユーザーのホームフォルダに秘密鍵ファイルを生成する必要があります。''google-authenticator'' を使うことでとても簡単に生成することができます:
 
2段階認証を使用したい場合はユーザーのホームフォルダに秘密鍵ファイルを生成する必要があります。''google-authenticator'' を使うことでとても簡単に生成することができます:
   
$ google-authenticator
+
$ google-authenticator
Do you want authentication tokens to be time-based (y/n) y
+
Do you want authentication tokens to be time-based (y/n) y
<Here you will see generated QR code>
+
<Here you will see generated QR code>
Your new secret key is: ZVZG5UZU4D7MY4DH
+
Your new secret key is: ZVZG5UZU4D7MY4DH
Your verification code is 269371
+
Your verification code is 269371
Your emergency scratch codes are:
+
Your emergency scratch codes are:
70058954
+
70058954
97277505
+
97277505
99684896
+
99684896
56514332
+
56514332
82717798
+
82717798
  +
 
Do you want me to update your "/home/username/.google_authenticator" file (y/n) y
+
Do you want me to update your "/home/username/.google_authenticator" file (y/n) y
  +
 
Do you want to disallow multiple uses of the same authentication
+
Do you want to disallow multiple uses of the same authentication
token? This restricts you to one login about every 30s, but it increases
+
token? This restricts you to one login about every 30s, but it increases
your chances to notice or even prevent man-in-the-middle attacks (y/n) y
+
your chances to notice or even prevent man-in-the-middle attacks (y/n) y
  +
 
By default, tokens are good for 30 seconds and in order to compensate for
+
By default, tokens are good for 30 seconds and in order to compensate for
possible time-skew between the client and the server, we allow an extra
+
possible time-skew between the client and the server, we allow an extra
token before and after the current time. If you experience problems with poor
+
token before and after the current time. If you experience problems with poor
time synchronization, you can increase the window from its default
+
time synchronization, you can increase the window from its default
size of 1:30min to about 4min. Do you want to do so (y/n) n
+
size of 1:30min to about 4min. Do you want to do so (y/n) n
  +
 
If the computer that you are logging into is not hardened against brute-force
+
If the computer that you are logging into is not hardened against brute-force
login attempts, you can enable rate-limiting for the authentication module.
+
login attempts, you can enable rate-limiting for the authentication module.
By default, this limits attackers to no more than 3 login attempts every 30s.
+
By default, this limits attackers to no more than 3 login attempts every 30s.
Do you want to enable rate-limiting (y/n) y
+
Do you want to enable rate-limiting (y/n) y
   
 
緊急時のスクラッチコードを安全なところに保管しておくことを推奨します (例: コードを印刷して金庫にしまう)。携帯電話 (つまり OTP 生成ツール) をなくしてしまったときの唯一の (SSH による) ログイン手段となります。コードは {{ic|~/.google_authenticator}} にも保存されるので、ログインしている間はいつでも確認することが可能です。
 
緊急時のスクラッチコードを安全なところに保管しておくことを推奨します (例: コードを印刷して金庫にしまう)。携帯電話 (つまり OTP 生成ツール) をなくしてしまったときの唯一の (SSH による) ログイン手段となります。コードは {{ic|~/.google_authenticator}} にも保存されるので、ログインしている間はいつでも確認することが可能です。
   
 
==OTP 生成ツールの設定==
 
==OTP 生成ツールの設定==
[http://m.google.com/authenticator Android マーケット] か [https://f-droid.org/repository/browse/?fdfilter=google&fdid=com.google.android.apps.authenticator2 F-Droid] から携帯電話に生成ツールをインストールしてください。アプリケーションメニューから適切なボタンをクリックして新しいアカウントを作成し、秘密鍵ファイルを生成したときに表示される URL から QR コードをスキャンするか、秘密鍵を手動で入力します (上の例では 'ZVZG5UZU4D7MY4DH')。
+
[http://m.google.com/authenticator Android マーケット] か [https://f-droid.org/repository/browse/?fdfilter=google&fdid=com.google.android.apps.authenticator2 F-Droid] から携帯電話に生成ツール (例: [https://play.google.com/store/apps/details?id=org.fedorahosted.freeotp FreeOTP]) をインストールしてください。アプリケーションメニューから適切なボタンをクリックして新しいアカウントを作成し、秘密鍵ファイルを生成したときに表示される URL から QR コードをスキャンするか、秘密鍵を手動で入力します (上の例では 'ZVZG5UZU4D7MY4DH')。
   
 
これで30秒ごとに新しく生成されるパスコードトークンをあなたの携帯で見ることができます。
 
これで30秒ごとに新しく生成されるパスコードトークンをあなたの携帯で見ることができます。
   
 
==テスト==
 
==テスト==
他のマシンや他のターミナルウィンドウからホストに SSH で接続して認証システムが動作しているか確認してください
+
他のマシンや他のターミナルウィンドウからホストに SSH で接続して認証システムが動作しているか確認してください:
   
$ssh username@hostname
+
$ ssh hostname
login as: username
+
login as: <username>
Verification code:
+
Verification code: <generated/backup-code>
Password:
+
Password: <password>
$
+
$

2015年11月14日 (土) 15:27時点における版

Google Authenticator はワンタイムパスコード (OTP) による2段階認証を提供します。OTP 生成アプリケーションは iOS, Android, Blackberry で利用できます。S/KEY 認証と同じように認証機構は Linux の PAM システムに統合されています。このガイドではこの機構をインストール・設定する方法を示します。

インストール

AUR から libpam-google-authenticatorAUR パッケージをインストールしてください。開発版は google-authenticator-libpam-gitAUR でインストールできます。

PAM の設定

警告: SSH で設定を行っている場合は、全てが動作するか確認する前にセッションを終了してはいけません。自分自身をロックアウトしてしまう危険があります。また、PAM を有効にする前にキーファイルを生成するようにしてください。

大抵は2段階認証が必要になるのはリモートログインのときだけです。該当する PAM 設定ファイルは /etc/pam.d/sshd です。Google Authenticator をあらゆるところで使いたい場合、/etc/pam.d/system-auth に変更を加えます。ただし、その場合は自分を締め出してしまわないように細心の注意を払って下さい。このガイドでは /etc/pam.d/sshd を編集するので、ローカルセッションではとりあえず安全に設定することができます (絶対安全というわけではありません)。

Unix パスワードと OTP の両方を入力するために pam_google_authenticator.so を以下のように /etc/pam.d/sshd の system-remote-login 行の上に追加します:

auth            required        pam_google_authenticator.so
auth            include         system-remote-login
account         include         system-remote-login
password        include         system-remote-login
session         include         system-remote-login

こうすると Unix パスワードの前に OTP を尋ねるようになります。2つのモジュールの順番を入れ替えると訊かれる順序が逆になります。

警告: 秘密鍵ファイルを生成したユーザーだけが SSH を使ってログインできるようになります (下を参照)。

OTP または Unix パスワードのどちらかでログインできるようにするには:

auth            sufficient     pam_google_authenticator.so

/etc/ssh/sshd_config でチャレンジレスポンス認証を有効にします:

ChallengeResponseAuthentication yes

そして sshd の設定をリロードしてください:

# systemctl reload sshd
警告: SSH 鍵のペアによる認証を使っていてパスワードログインを無効化していた場合、OpenSSH はこれら全ての設定を無視します。ただし、OpenSSH 6.2 から、AuthenticationMethods を追加することで2段階認証と鍵による認証の両方を使うことができるようになっています。SSH 鍵#2段階認証と公開鍵 を見て下さい。

秘密鍵ファイルの生成

2段階認証を使用したい場合はユーザーのホームフォルダに秘密鍵ファイルを生成する必要があります。google-authenticator を使うことでとても簡単に生成することができます:

$ google-authenticator
Do you want authentication tokens to be time-based (y/n) y
<Here you will see generated QR code>
Your new secret key is: ZVZG5UZU4D7MY4DH
Your verification code is 269371
Your emergency scratch codes are:
  70058954
  97277505
  99684896
  56514332
  82717798

Do you want me to update your "/home/username/.google_authenticator" file (y/n) y

Do you want to disallow multiple uses of the same authentication
token? This restricts you to one login about every 30s, but it increases
your chances to notice or even prevent man-in-the-middle attacks (y/n) y

By default, tokens are good for 30 seconds and in order to compensate for
possible time-skew between the client and the server, we allow an extra
token before and after the current time. If you experience problems with poor
time synchronization, you can increase the window from its default
size of 1:30min to about 4min. Do you want to do so (y/n) n

If the computer that you are logging into is not hardened against brute-force
login attempts, you can enable rate-limiting for the authentication module.
By default, this limits attackers to no more than 3 login attempts every 30s.
Do you want to enable rate-limiting (y/n) y

緊急時のスクラッチコードを安全なところに保管しておくことを推奨します (例: コードを印刷して金庫にしまう)。携帯電話 (つまり OTP 生成ツール) をなくしてしまったときの唯一の (SSH による) ログイン手段となります。コードは ~/.google_authenticator にも保存されるので、ログインしている間はいつでも確認することが可能です。

OTP 生成ツールの設定

Android マーケットF-Droid から携帯電話に生成ツール (例: FreeOTP) をインストールしてください。アプリケーションメニューから適切なボタンをクリックして新しいアカウントを作成し、秘密鍵ファイルを生成したときに表示される URL から QR コードをスキャンするか、秘密鍵を手動で入力します (上の例では 'ZVZG5UZU4D7MY4DH')。

これで30秒ごとに新しく生成されるパスコードトークンをあなたの携帯で見ることができます。

テスト

他のマシンや他のターミナルウィンドウからホストに SSH で接続して認証システムが動作しているか確認してください:

$ ssh hostname
login as: <username>
Verification code: <generated/backup-code>
Password: <password>
$