PAMモジュールを利用して、WEBブラウザを利用したGoogleOauthでSSHログイン認証を行う

PAMモジュールを利用して、WEBブラウザを利用したGoogleOauthでSSHログイン認証を行う

下記のエントリの続編です。

実装した内容を社のセキュリティ対策チームにレビュー依頼したところ、 @mrtc0と@hibomaからSSH接続時にProxyCommandを利用した場合に、踏み台サーバのForceCommandがスキップされる問題があるとの報告を受けたので、こればかりはどうしようもないのでPAMモジュールを書くことにした。

当初はCGOで書こうとしたのだけど、CGOだとgoroutine起動時の挙動が怪しくて、そのあたりを調べたりするコストが嵩んだので、GoogleAuthenticatorの実装を参考にしながら結局Cで書いた。

使い方はREADMEの通りで、バイナリを諸々おいたあとに、SSHDのconfigに下記を書いたらいい。

KbdInteractiveAuthentication yes
UsePAM yes
AuthenticationMethods publickey,keyboard-interactive

意味合い的にはpublickey認証のあとに、keyboard-interactive認証でPAMを呼び出し、その中で、google-web-oauthコマンドを呼ぶPAMが使われる感じ。

これでProxyCommandを利用するときにもちゃんと認証されるようになるかな。

ここまで書いたから、暇なときにログインしたらSlackに通知したりできるようにするか、それはpam_execに任せるか悩ましいところ。

コメントは受け付けていません。