vLDAPを用いたSSHパスワード認証
OneLogin担当の川野です。本日はvLDAPを利用して、SSHパスワード認証を実現する手順についてご説明します。vLDAPとは、OneLoginが提供するLDAPディレクトリ機能のことです。vLDAPを利用することにより、ディレクトリサーバーを新しく構築せずに、既存のOneLoginユーザー情報を参照してSSH認証ができることになります。また、vLDAPでは YubiKey,OTPなどを利用したMFA(多要素認証)の機能を使用することができ、より強固な認証が可能となります。なお、MFAのファクターはユーザーに割り当てるポリシーで変更することができます。
ただし、本来のSSH認証と比較して、以下に示す2つの制約があります。
- 公開鍵認証が実現できず、パスワード認証のみとなる
- OneLoginでのグループが反映されず、Linux側では全ユーザーが同じグループ所属になる(2021年6月のOneLoginアップデートにより、改善された可能性があります)
目次
- 準備するもの
- OneLogin側の設定
- サーバー側の設定
- ユーザーによるSSH接続
準備するもの
- OneLogin管理者権限を持つアカウント(バインド用)
- 他のOneLoginアカウント(ログイン用)
- SSH認証用Linuxサーバー(本記事はCentOS7 を使用しています)
OneLogin側の手順
管理者としてOneLoginにログインし、Authentication > VLDAP から「vLDAPサービスを有効化する」のトグルをオンにします。また、MFAを利用する場合には、「Require Password + OTP」にチェックをいれ、MFAを適用したいユーザーにチェックを入れます。
以上でOneLoginがvLDAPとして機能するようになりました。
サーバー側の手順
サーバーにルートユーザーとして入り、まずはvLDAPとの接続を確保するためnslcdの設定をします。この設定により、サーバーはvLDAPにバインドできるようになります。
# vi /etc/nslcd.conf --- uri ldaps://ldap.us.onelogin.com base dc={OneLogin環境のサブドメイン},dc=onelogin,dc=com binddn cn={管理者のcn},ou=users,dc={OneLogin環境のサブドメイン},dc=onelogin,dc=com bindpw {管理者のパスワード} --- systemctl restart nslcd
次にnsswitchの設定ファイルを編集します。この設定により、サーバーは名前解決のためにまずサーバー 内のファイルを参照し、解決しなければ次に登録してあるLDAP(今回だとvLDAP)を参照するようになります。
# vi /etc/nsswitch.conf --- passwd: files ldap shadow: files ldap group: files ldap services: files ldap netgroup: files ldap automount files ldap ---
次にSSH接続された時の設定であるsshdのファイルを操作します。
vi /etc/ssh/sshd_config --- PasswordAuthentication yes --- systemctl restart sshd
以上の設定でOneLoginのユーザーでサーバーにログインできるようになりました。
vLDAPではgidとしてOneLogin Account ID(環境の識別子)を採用しているため(現在修正予定ではあります)、全OneLoginユーザーが同じグループIDを持つことになります。Linux側ではそのグループIDに"vldap-user"とでもグループ名を付けておきましょう。
※ 2021/7/6現在: 2021年6月のOneLoginアップデートにより、OneloginのグループIDが Linuxのgidにマッピングされるようになったそうです。
# groupadd -g {Account ID} vldap-user
ユーザーによるSSHログイン
以下コマンドでSSH接続します。パスワードを求められるので下記に示す適切な文字列を入力してください。
$ ssh {ユーザーのcn}@{サーバーのIP}
○ MFAなしの場合
→OneLoginのパスワード
○OneLogin ProtectをMFAに設定している場合
→OneLoginのパスワード+ProtectのOTP
○Google AuthenticatorをMFAに設定している場合
→OneLoginのパスワード+AuthenticatorのOTP
○YubiKeyをMFAに設定している場合
→OneLoginのパスワード+YubiKey