LoginSignup
12
10

More than 5 years have passed since last update.

Google Authenticatorを使ってCentOSでOTP認証

Last updated at Posted at 2016-12-10

これはマイネットエンターテイメント Advent Calendar 11日目の記事です。

自宅に外出先から繋がるSSHサーバがあると色々と便利ですよね。
ただ、サーバに限らず文字列を用いた認証は「パスワードを入力する」というリスクがありますので、
今回はGoogle Authenticatorを利用してOTP認証ができる環境を作ってみます。

そんなことより非接触式の生体認証の一般化はよ

必要なもの

  • 公開鍵認証でログインできるSSHサーバ(今回はCentOS 7.2で)
  • OTPトークン端末
    • 要はスマホ、AndroidでもiOSでもOK
    • Google Authenticator自体がOSSなのでGoogle純正ではないもののWin10Mobile版もある、らしい

サーバ側の作業

ビルドするために色々導入

yum -y groupinstall "Development Tools"
yum install pam-devel

GitHubからソースを持ってきてコンパイル&インストール

git clone https://github.com/google/google-authenticator-libpam.git
cd google-authenticator-libpam
./bootstrap.sh
./configure
sudo make && make install

sshdの設定を変更

sudo cp /usr/local/lib/security/pam_google_authenticator.so /usr/lib64/security/

/etc/ssh/sshd_config を編集

変更
ChallengeResponseAuthentication no → yes
追加
AuthenticationMethods publickey,keyboard-interactive

念のため設定ファイルが正しいかテストしておきます。
sshd -t

sshd再起動

systemctl restart sshd

PAM設定ファイルの作成

/etc/pam.d/google-auth を新規作成

#%PAM-1.0
auth required pam_env.so
auth sufficient pam_google_authenticator.so try_first_pass
auth requisite pam_succeed_if.so uid >= 500 quiet
auth required pam_deny.so

/etc/pam.d/sshd を編集

追加
auth substack google-auth
コメントアウト
auth substack password-auth

OTPトークン端末側の作業

上記アプリをインストールします。
Google Authenticatorと互換性を持つアプリであれば他でもOKです。
有名なトコだとIIJがIIJ SmartKeyというアプリを出していたり。

サーバ側で認証情報を登録・表示する

以下のコマンドをサーバで叩きます
google-authenticator

色々聞かれますがとりあえず「y」でOKです。
最後にQRコードが表示されます。
無題.png
※↑は記事作成時に適当に作った認証情報です、スキャンするとOTPが生成できますが、そもそも認証するサーバが既に存在しないので使い道はありません。

スマホに登録する

Google公式なら右下の「+」から、他の互換アプリでも特に悩むことは無い位置に追加ボタンがあると思います。
カメラが起動するので、↑で表示されたQRコードを撮影しましょう。

1分ごとに更新される6桁の数字が今回作った環境のワンタイムパスワードになります。
サーバに接続しようとすると「Verification code」を聞かれるので、アプリ上で表示される数字を入力すれば認証成功するはずです。

無題.png

今更な余談

sshdのバージョンは6.2から追加されたAuthenticationMethodsに対応している必要があります。
なので、CentOS6のデフォルト(5.3?)だと使うことができません。

…まぁ、sshdなんてセキュリティ関係の更新も度々出てますし、基本的には最新にしておくべきだと思うのですが。

12
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
10