vLDAPを用いたSSHパスワード認証(MFAあり)

vLDAPを用いたSSHパスワード認証

OneLogin担当の川野です。本日はvLDAPを利用して、SSHパスワード認証を実現する手順についてご説明します。vLDAPとは、OneLoginが提供するLDAPディレクトリ機能のことです。vLDAPを利用することにより、ディレクトリサーバーを新しく構築せずに、既存のOneLoginユーザー情報を参照してSSH認証ができることになります。また、vLDAPでは YubiKey,OTPなどを利用したMFA(多要素認証)の機能を使用することができ、より強固な認証が可能となります。なお、MFAのファクターはユーザーに割り当てるポリシーで変更することができます。

vLDAPを利用したSSH認証のイメージ

ただし、本来のSSH認証と比較して、以下に示す2つの制約があります。

  • 公開鍵認証が実現できず、パスワード認証のみとなる
  • OneLoginでのグループが反映されず、Linux側では全ユーザーが同じグループ所属になる(2021年6月のOneLoginアップデートにより、改善された可能性があります)

目次

  1. 準備するもの
  2. OneLogin側の設定
  3. サーバー側の設定
  4. ユーザーによるSSH接続

準備するもの

  • OneLogin管理者権限を持つアカウント(バインド用)
  • 他のOneLoginアカウント(ログイン用)
  • SSH認証用Linuxサーバー(本記事はCentOS7 を使用しています)

OneLogin側の手順

管理者としてOneLoginにログインし、Authentication > VLDAP から「vLDAPサービスを有効化する」のトグルをオンにします。また、MFAを利用する場合には、「Require Password + OTP」にチェックをいれ、MFAを適用したいユーザーにチェックを入れます。

vLDAPの設定

以上で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