私は大学で複数のサーバーを担当しています。これらすべてのコンピュータは、集中型のユーザーログインを許可するために、当社の部門の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
失敗した場合はLDAPが試行され、root
パスワードが正しい場合はユーザーはスーパーユーザーとしてログインします。
私はこれが非常に安全ではなく、両方のroot
アカウントを明確に区別する必要があると思います。しかし、私たちのIT部門によると、LDAPがroot
必要だという。
root
認証の使用を無効にするためにLDAPでアカウントをフィルタリングするにはどうすればよいですか?pam_ldap.so
一部のLDAPディレクティブを使用しています/etc/nsswitch.conf
。
答え1
いくつかの方法があります。以下はいくつかの簡単な方法です。
/etc/ssh/sshd_config
いいえに変更しますPermitRootLogin
。通常、これは良い考えであり、それに依存してsu
管理sudo
します。もちろん、これはSSHにのみ影響します。- さまざまなPAM設定ファイルでこのモジュールを使用して、
pam_listfile
特定のアカウントを明示的に許可または拒否します(サービスごとに実行する必要があります)。 - ルートがログインできないように、対応するPAM設定ファイルで
pam_ldap
モジュールを1(またはそれ以上)に設定します。pam_min_uid
(サービスごとに行う必要があります) pam_filter
ユーザーを除外するようにPAM LDAP検索フィルタ()を変更します。たとえばpam_filter (uidNumber>=1)
、基本/範囲を変更できます。
最後の2つのうちの1つが最適です。ローカルルートアカウントがpam_unix
失敗した場合pam_ldap
(たとえば、注文と必須/必須/十分)、成功するようにローカルPAM設定を調整する必要があるかもしれません。