web-dev-qa-db-ja.com

LDAPおよびPAMを使用したアカウントログインの制限

PAM/LDAPの達人が私を助けてくれることを願っていました。最近、Ubuntu ServerにLDAPディレクトリを設定して、クライアント(Webベースのシステムで使用)とスタッフ(SSH経由でログインする必要がある)の両方のアカウントを保持します。

LDAP認証は完全に機能しています。ただし、アカウント制限を機能させることはできません。スタッフアカウントには20012999のIDがあり、ssh-usersグループのメンバーになってサーバーへのログインを許可します。

問題の制限は/etc/ldap.confにあり、pam_min_uidpam_max_uidおよびpam_groupdnです。

pam_groupdnには、私のssh-usersグループへの完全なDNが含まれています。 pam_min_uid = 2000およびpam_max_uid = 2999

今、私はそれらを追加することによってそれらを機能させることができました:

account [success=1 default=ignore] pam_ldap.so

pam_unix.so/etc/pam.d/common-account行の上。ただし、ローカルのUnixアカウントはログインできません。SSHサーバーは、試行するとすぐに接続を強制終了します。

上記のファイルでpam_ldap.soモジュールをsufficientに設定しましたが、無効なユーザーはログインできないというメッセージが表示されますが、とにかくログインします。

では、UNIXユーザーのログインを許可しながら、LDAPユーザーにこれらのアカウント制限を設定するにはどうすればよいですか?

おそらくあなたはおそらく私がPAMの初心者だと思いますが、「ホームディレクトリを自動的に作成する」モジュールを機能させることができましたが:-)

どうもありがとう、アンディ

14
Andy Shellam

PAMには、アクセス制御リスト(少なくともUbuntuでは)に基づいてアクセスを制限する機能があります。これは、kubanskamacの回答(+1)のように、グループがLDAPに格納されているかどうかにかかわらず、グループをposixグループと見なします/etc/groupまたはNIS。

/etc/security/access.confはアクセスリストファイルです。私のファイルでは、最後に入れました:

-:ALL EXCEPT root sysadmin (ssh-users):ALL

これにより、root、sysadmin、およびグループssh-users(LDAP内)以外のすべてのユーザーがログイン元(2番目のALL)で拒否されます。

次に、PAMアカウントファイル(これはISアカウントモジュール)ですが、最後に追加します。

account required pam_access.so

これは、PAMにこのファイルを使用するように指示します。それは御馳走を働きます:-)

11
Andy Shellam

私は単に使用します

auth required    pam_listfile.so   sense=accept item=group file=/etc/groups.allow onerr=fail

特定のグループのみを許可する(ローカルグループとLDAPグループの両方)。これにより、ldap.confで何も指定する必要がなくなります。

承認を維持したい場合は、「アカウント」パスでユーザーをフィルタリングしないでください。むしろ「auth」パスで行うべきだと思います。次に、ご存じのように、pam_unixはローカルアカウントとLDAPアカウントの両方を処理するため(少なくとも「アカウント」パス上で)、pam_ldapはまったく必要ないようです。

編集:3番目に、「アカウント」パスにものを置くことを主張する場合(奇妙な副作用があると思われます)、シーケンスは次のように終了する必要があります:...、「十分なpam_ldap」、「必須のpam_localuser」、「必須のpam_unix」 。つまり、他のモジュールがある場合は、それらをpam_ldapの前に移動します。そうしないと、「十分な」節があるため、LDAPアカウントではそれらが無視されます。

5
kubanczyk

@ andy-shellamに追加するために、これが私のcommon-accountファイル:

account [success=2 new_authtok_reqd=done default=ignore] pam_unix.so
account [success=1 default=ignore]            pam_ldap.so
account requisite                     pam_deny.so
account required                      pam_access.so
account required                      pam_permit.so
0
Hank