はじめに
今回は,普段私がサーバにSSH接続をする際に2段階認証を導入した話があったので記事にしました。
2段階認証にGoogle Authenticatorを使用しました。
<div class="appreach-links" style="float:left;">
<div id="appreach-itunes-link" style="display: inline-block; _display: inline;">
<a id="appreach-itunes" href="https://itunes.apple.com/jp/app/google-authenticator/id388497605?mt=8&uo=4&at=11lHd9" target="_blank" rel="nofollow">
<img src="http://nabettu.github.io/appreach/img/itune_en.png" style="width:200px;">
</a>
</div>
<div id="appreach-gplay-link" style="display:inline-block; _display:inline;">
<a id="appreach-gplay" href="https://play.google.com/store/apps/details?id=com.google。android.apps.authenticator2" target="_blank" rel="nofollow">
<img src="http://nabettu.github.io/appreach/img/gplay_en.png" style="width:200px;">
</a>
</div>
</div>
</div>
<div class="appreach-footer" style="margin-bottom:10px; clear: left;"></div>
ダウンロードは上のリンクからどうぞ〜
Google Authenticationをインストール
$ sudo apt-get install libpam-google-authenticator -y
アプリとの連携
$ google-authenticator
背景画像は気にしないでください。私の愛です。
モザイク下手すぎかよ...
何やら出てくるので,アプリ側で登録!
登録方法は省略します。。。。
あとターミナル側で聞かれる質問には全部「 y 」でOK
QRコードの下にリカバリーキーとかが出てるのでメモをするのをお忘れずに!
SSH設定ファイルの編集
51行目当たりの「 ChallengeResponseAuthentication 」を「 yes 」に変更
ChallengeResponseAuthentication no
↓
ChallengeResponseAuthentication yes
下記を追加
auth required pam_google_authenticator.so
SSHDemon再起動
$ sudo service ssh restart
実際に接続
こんな感じにはじめにログインパスワード,そして ワンタイムパスワード を入力してくれと表示されるようになりました。
パスワード同様にワンタイムパスワードもどうやら入力してもターミナルには表示されない仕様になっておらせられるようです。ワンタイムパスワードだからあんまり関係ないんですけどね
注意事項
アプリが入っている端末とSSH接続先のホストのタイムゾーンが合っていないとログイン出来ないと思います。なので時間は合わせておきましょう!
最後に
ポート番号を変えるとかRSA認証とかを組み合わせてセキュリティ面で少しでも優位に立つことが重要だと思うので,ワンタイムパスワードも中々良いツールだと思ったので今回は導入をしてみました。
ただ弱点としてあげるならば,リカバリーキーなくしたら死亡ということでしょうか。あとは,ユーザが毎回アプリを開いて文字列を入力しなくてはならないという面倒臭さが発生してしまう。といったところでしょうか?
メリットは言うまでもなく,使い捨てパスワードなのでパスワードを自ら生成しなくてもいいということ,もし漏洩しても1分程度で新しくパスワードが生成されるから使用できなくなる。