私は大学でいくつかのサーバーを担当しています。これらのマシンはすべて、集中ユーザー ログインを可能にするために私の部門の LDAP サーバーと通信するように構成されています。この LDAP サーバーには、次のユーザーがいますroot
:
# getent passwd | grep root
root:x:0:0:root:/root:/bin/bash
root:x:0:0:Netbios Domain Administrator:/home/root:/bin/false
root
最近、私が担当しているサーバーの 1 つでアカウントに関する問題が発生しました。SSH 接続の試行はローカルroot
ユーザーに対して正常に認証されましたが、ホーム ディレクトリは LDAP から として取得されました/home/root
。さらに、LDAP の資格情報を使用してどのサーバーでも root として認証できることが分かりましたroot
。つまり、ローカルに対する認証がroot
失敗した場合は、LDAProot
が試行され、パスワードが正しい場合は、ユーザーはスーパーユーザーとしてログインします。
これはあまり安全ではないので、2 つのアカウントの曖昧さは取り除く必要があると思いますroot
。ただし、当社の IT 部門によると、LDAP はroot
必要です。
LDAP からアカウントをフィルターして、root
それによる認証を禁止するにはどうすればよいですか?pam_ldap.so
と、いくつかの ldap ディレクティブを使用しています/etc/nsswitch.conf
。
答え1
方法はいろいろありますが、ここでは簡単な方法をいくつか紹介します。
- inを no に
/etc/ssh/sshd_config
変更しますPermitRootLogin
(これは通常良い考えであり、管理にはsu
/を使用しますsudo
)。もちろん、これは SSH にのみ影響します。 - さまざまな PAM 構成ファイルで
pam_listfile
モジュールを使用して、特定のアカウントを明示的に許可または拒否します (サービスごとに実行する必要があります) - さまざまな PAM 設定ファイルで
pam_ldap
モジュールをpam_min_uid
1 (またはそれ以上) に設定して、root がログインできないようにします (サービスごとに実行する必要があります) - PAM LDAP検索フィルタ(
pam_filter
)を修正して、ユーザーを除外するか(例:pam_filter (uidNumber>=1)
)、ベース/スコープを修正できる場合があります。
最後の 2 つのうちのいずれかが、あなたに適しているかもしれません。また、ローカル PAM 構成にいくつかの調整を加えて、ローカル ルート アカウントが失敗したpam_unix
場合に成功できるようにする必要がある場合pam_ldap
もあります (順序付けや required/requisite/sufficient など)。