2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

小ネタ: 2段階認証をLinuxホスト内のauthenticationに使う

Last updated at Posted at 2013-10-25

続きです。毎度のごとく間違っていたら指摘お願いします。

追記: タイトルが釣り気味だったので直しました

この記事は真似て失敗するとログイン全体がお亡くなりになることがあります。ごちゅーいください。

# なお、今回は Debian 7.2 です。わぁ

前回と途中まで同じです。 /etc/users.oath を用意してパーミッションを正しく設定し、Google AuthenticatorもしくはOATHのトークン発行するものに登録します。なんならもういっかい ssh で有効にしてみてもいいと思います。

で、前回は /etc/pam.d/sshd に編集を加えましたが、今回は /usr/share/pam-configs/oath-test を追加します。

/usr/share/pam-configs/ 配下にファイルを追加しておくと、pam-auth-update コマンドが /usr/share/pam-configs/ 配下の設定を一つのモジュールのように認識してくれます。

pam_configuration.png

つまり上記の画像に一つ自分のモジュールが追加されます。一つ一つのモジュールをオンオフを指定して、PAMを使う全てのプロセスに影響を及ぼすようです。こわい

有効になっているモジュールは /etc/pam.d/common-(pam設定の4種類のどれか) の一部として、「コンパイル」されます。単なる平文のpam.conf/pam.dの設定ファイルになるだけです。 (man pam.conf, man pam.d は優秀です)

今回、迂回策としてrootについてはOTPは許します。/etc/security/access-oath.conf を作って以下を記述しました

+ : root : LOCAL
- : ALL : ALL

「本当に安全か」を考える場合にはこの辺りは色々考える余地はあります (一応 ssh で root login は出来ないようにしてあります)。

/usr/share/pam-configs/oath-test を作成して以下のように記述しました

Name: OATH authentication
Default: yes
Priority: 16
Auth-Type: Additional
Auth:
        [success=end default=ignore]  pam_access.so accessfile=/etc/security/access-oath.conf 
        [success=end default=ignore]  pam_oath.so usersfile=/etc/users.oath

で、上の設定を使うようにお願いするために pam-auth-update を root 権限で実行

# pam-auth-update

有効になっているかを確認するため、/etc/pam.d/common-auth を見て、pam.d が正しく動作するかは目視しときます。下記のにゃーんの部分はもちろん手で直してます。

auth    [success=(にゃーん) default=ignore]      pam_unix.so nullok_secure
..
auth    requisite                       pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
auth    required                        pam_permit.so
# and here are more per-package modules (the "Additional" block)
auth    [success=2 default=ignore]  pam_access.so accessfile=/etc/security/access-oath.conf
auth    [success=1 default=ignore]  pam_oath.so usersfile=/etc/users.oath
auth    optional                        pam_cap.so

大丈夫くさいね。

手でテスト

これでもう有効になっているはず。というわけで手動でログイン実験してみます。

  • 外部から秘密鍵持ってるホストはOTP聞かれない (パスワードも聞かれない)
  • 外部から秘密鍵持ってないホストはパスワードとOTP聞かれる
  • su (自分のユーザ名) でパスワードとOTP聞かれる
  • ローカルで sudo login して自分のユーザ名でログインしたらパスワードとOTP聞かれる
  • root ログインでは聞かれない

さいごに

  • リブートしてGNOMEのログインからOTPを要求されることを試す

gnome_login_with_otp.jpg

参考

2
2
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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?