UbuntuでGoogle Authenticatorを使ったSSH 2段階認証設定

今回は2段階認証をSSHで利用してみましょう。

・そもそも2段階認証とは

今までの認証方法ですと、パスワードの認証というのが一般的でした。
しかし、昨今のパスワード流出事件によって、流出したパスワードを使い、アカウント乗っ取りなどが多くなっています。

根本的なところでは、パスワードを1つ1つ使うサービスごとに分けるのが理想的ですが、1つ1つ覚えるのは大変ですし、パスワード管理ソフトを使うにしても、出先で手軽に使えるかという点では難しいかと思います。
そこで、通常のパスワードのほかにワンタイムパスワードを使った認証を行うのが2段階認証という考え方です。

2段階認証のワンタイムパスワードについては、携帯電話を使ってSMSで通知する方法や、ハードウェアトークンを使う方法、ワンタイムパスワード発行用アプリを使う方法があります。

今回は、TOTP対応のワンタイムパスワード発行アプリであるGoogle Authenticatorを使ってSSHの2段階認証を導入します。

・Google Authenticatorを使う訳

Google AuthenticatorはGoogleが提供している2段階認証機能です。既にGoogleのサービスではTOTPを使った2段階認証に対応しており、その為に作られました。

また、この2段階認証技術はオープンソース化されており、PAMモジュールとして、手軽にSSHサーバーへ導入する事ができます。

さらには、Androidはもちろん、iPhone向けのアプリケーションが用意されているため、ほとんどのスマートフォン環境で利用が出来ます。

・実際に導入してみる

今回はUbuntu12.04LTS環境で利用していますが、Ubuntu 10.04LTS以降の環境であれば、パッケージが用意されているため、簡単に利用できます。

まずは Google Authenticator のPAMモジュールパッケージを導入します

sudo apt-get install libpam-google-authenticator

そうすると、依存関係のlibqrencodeまで入りますが、これは2段階認証コード生成時にQRコードを読み取る事で設定できるようにする為です。

つぎに、2段階認証を設定する為のシークレットキー(QRコード)を生成します。

2段階認証を利用したいユーザーで

google-authenticator

を実行します。

そうすると、画面上に大きくQRコードが発行されるので、スマホにインストールしたGoogle Authenticatorを起動し、QRコードを読み込んで設定します。

さらに、SSHで2段階認証を利用できるよう設定変更をします。

sudo vi /etc/pam.d/sshd

SSHデーモンで利用する為のモジュールを組み込みます。
@include common-authとなっている下の行辺りに以下を追記

auth    required    pam_google_authenticator.so

もう一つ、設定ファイルを書き換えます。

sudo vi /etc/ssh/sshd_config
PasswordAuthentication no

↑コメントアウトし。yesをnoへ

ChallengeResponseAuthentication yes

↑デフォルトのnoからyesへ

これで準備はできました。後はsshdを再起動すると下記のように利用できるようになります。

ちなみに、すでに公開鍵認証を利用してる場合、公開鍵認証が優先されます。なので、自宅では公開鍵認証を利用し、出先では2段階認証という使い分けができます。

enjoy!

0件のコメント

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください