PAM認証システムでパスワード無しでログインする
cockpitのログイン無しはありか?
cockpitが非常に便利なので、すべてのサーバに入れているのだが、Tailscaleを入れたので、cockpitのログイン画面を大公開するのではなく、tailscaleのVPNを通じてしかアクセスできないようにした。
しかしここで当然のごとく疑問に思ったのは、外からは全くアクセスできないのに、わざわざパスワードなんか入れる必要なんかあるのか?である。
そこで、面倒なパスワード無しで入れないものか考えた。デフォルトでは、そのlinuxのアカウントが使われることになっている。つまり、rootで入るならばrootのパスワードを入力する必要があるのだが、これが面倒。
PAMによる認証
いろいろ調べてみると、cockpitはPAMという、共通認証モジュールを使っていることがわかった。この標準の状態で、そのLinuxのアカウントを使うというに過ぎない。
ということは、パスワード無しで入る方法もあるんじゃないかと思って調べてみると、LinuxのPAM認証の設定入門という記事を発見した。
結論を言えば、cockpitの認証の定義は、/etc/pam.d/cockpitというテキストファイルにあり、そこにはこう書いてある。
#%PAM-1.0
auth required pam_sepermit.so
auth substack password-auth
auth include postlogin
auth optional pam_ssh_add.so
account required pam_nologin.so
account include password-auth
password include password-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session required pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open env_params
session optional pam_keyinit.so force revoke
session optional pam_ssh_add.so
session include password-auth
session include postlogin
この最初の方に「auth sufficient pam_permit.so」を追加するだけだった。
#%PAM-1.0
auth sufficient pam_permit.so # これを追加
auth required pam_sepermit.so
auth substack password-auth
他の設定
良くわかってないので、他の設定を消してしまって良いものかはわからない。
実際の結果
この設定を行った後では、rootでさえパスワード無しで入れてしまう。
いったんログアウトして、一般ユーザの名前でもパスワード無しで入れてしまう。ただし、しっかり「制限付きアクセス」となっていた。
まさに所望の結果である。このcockpitは、VPNからしかアクセスできないので、パスワード入力など必要ない。