LDAP ve PAM kullanarak hesap girişlerini kısıtlama


14

Bazı PAM / LDAP guruslarının burada bana yardım edebileceğini umuyordum. Son zamanlarda hem müşterilerim (web tabanlı sistemlerle kullanım için) hem de personel (SSH ile giriş yapması gerekecek) hesapları tutmak için Ubuntu Sunucusunda bir LDAP dizini kurdum.

LDAP kimlik doğrulaması mükemmel çalışıyor. Personel hesapları arasındaki kimliğe sahip olur: Ancak çalışma hesap kısıtlamaları alamayan 2001ve 2999ve bir üyesi olacak ssh-userssunuculara giriş hakkı verecek şekilde gruptan.

Söz konusu kısıtlamalar vardır /etc/ldap.confve şunlardır pam_min_uid, pam_max_uidve pam_groupdn.

pam_groupdngrubumun tam DN'sini içerir ssh-users. pam_min_uid= 2000ve pam_max_uid= 2999.

Şimdi, bunları ekleyerek çalıştırabildim:

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

pam_unix.soçizgisinin üstünde /etc/pam.d/common-account. Ancak, yerel Unix hesapları oturum açamaz: SSH sunucusu dener denmez bağlantıyı öldürür.

pam_ldap.soModülü sufficientyukarıdaki dosyaya ayarladım , ancak daha sonra geçersiz kullanıcılar giriş yapamayacaklarını belirten bir mesaj alırlar, ancak yine de onları kaydeder.

Öyleyse, UNIX kullanıcılarının giriş yapmasına izin verirken LDAP kullanıcıları için bu hesap kısıtlamalarını nasıl ayarlayabilirim?

Tahmin edebileceğiniz gibi ben "otomatik olarak ev dizinleri yapmak" modül çalışmayı başardı rağmen PAM bir acemi değilim :-)

Çok teşekkürler, Andy

Yanıtlar:


11

PAM, kubanskamac'ın yanıtı (+1) gibi grupları LDAP /etc/groupveya NIS'de depolanmış olsun, grupları posix grubu olarak gören bir erişim kontrol listesine (en azından Ubuntu'da) dayalı olarak erişimi kısıtlama yeteneğine sahiptir .

/etc/security/access.conferişim listesi dosyasıdır. Dosyamda, sonuna koydum:

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

Bu, root, sysadmin ve ssh-users grubundaki (LDAP'de bulunan) herkesin giriş yaptıkları her yerde (ikinci ALL) reddeder .

Sonra PAM hesap dosyamda (bu bir hesap modülüdür), en sonunda ekliyorum:

account required pam_access.so

bu da PAM'a bu dosyayı kullanmasını söyler. Bir tedavi çalışır :-)


Pam_access.so'nun etkili olması için PAM hesap dosyanızın en başına koymanız gerekebileceğini belirtmek gerekir.
crb

5

Sadece kullanırdım

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

yalnızca belirli gruplara izin vermek için (hem yerel hem de LDAP grupları için). Bu şekilde, hiçbir şey belirtmeniz gerekmez ldap.conf.

Yetkilendirmeyi istediğiniz gibi tutmak istiyorsanız, "hesap" geçişindeki kullanıcıları filtrelememelisiniz. Bence bunu "auth" kartıyla yapmayı tercih etmelisin. İkincisi, kendinizi görebileceğiniz gibi, pam_unix hem yerel hem de LDAP hesaplarını (en azından "hesap" geçişinde) işler, bu yüzden pam_ldap'a gerek yoktur.

EDIT: Üçüncüsü, "hesap" geçişi şeyler garip ısrar (garip yan etkileri olabilir inanıyorum), dizi ile bitmelidir: ..., "yeterli pam_ldap", "gerekli pam_localuser", "gerekli pam_unix" . Başka modülleriniz varsa, bunları pam_ldap'tan önce taşıyın - aksi takdirde "yeterli" yan tümcesi nedeniyle LDAP hesapları için yok sayılırlar.


Pam_unix, /etc/nsswitch.conf olarak LDAP kullanan hesap bilgilerini almak için getent çağrılarını kullanıyor. Bu satırlar libpam-ldap paket yükleyicisi tarafından PAM yapılandırma dosyalarına eklendi. Pam_groupdn'ın varsayılan eylemi hiçbir şey yapmıyordu ve yanıtlar aranırken, birisi "hesap" geçişi sırasında pam_ldap.so modülü kullanılmadığı sürece etkili olmayacağını söyledi. Mümkünse ayarları özellikle LDAP ile ilgili olduğu için ldap.conf dosyasında tutmayı tercih ederim.
Andy Shellam

(1) pam_unix hakkında haklısınız. (2) Cevabımı pam_localuser tavsiyesi ile güncelliyorum.
kubanczyk

PAM hakkında okuduğum her şey, hesabın bunun için doğru bölüm olduğunu gösteriyor. auth - Kullanıcıyı tanımlar ve hesap hesabının kimliğini doğrular - Parola eskimi, oturum açma süresi kısıtlamaları ve uzaktan oturum açma kısıtlamaları gibi kullanıcı hesabı özelliklerini denetler Bu bir kimlik doğrulama sorunu değildir - çünkü kullanıcı adı / parola doğrudur ve kullanıcı belirledi. Bu bir hesap kısıtlamasıdır, çünkü bazı hesapların giriş yapabilmesini istemiyorum.
Andy Shellam

0

Sadece @ andy-shellam'a eklemek için dosyam 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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.