Salı, Temmuz 15, 2008

Debian, egroupware, ldap, vsftp, pam, nss falan fıstık - yazı dizisi - 4

Şimdi vsftp kimlik doğrulama işini pam'e yaptıralım. pam de kullanıcı kimlikleri için ldap'a da baksın ki ldap kullanıcıları ftp'ye bağlanabilsin. Sonra da sistem kullanıcılarını ldap'a nasıl aktarırız ona bakalım.


libpam-ldap kurulu değilse:

#apt-get install libpam-ldap

ldapscripts paketi kurulurken libpam-ldap paketi de kurulduğu için aslında buna gerek yok.

/etc/vsftpd.conf dosyasında
pam_service_name=vsftpd
olduğundan emin oluyoruz.

/etc/pam_ldap.conf dosyasını yapılandırıyoruz:

Burada değiştirdiğim satırlar:

host 127.0.0.1 //commenti kaldırdık
#uri ldap://127.0.0.1/ //comment koyduk
bindpw
pam_login_attribute uid
scope sub

nın düz şifrelenmiş tutulması güvenlik için daha iyi olur. Ayrıca ssl de açılmalı.

Şimdi vsftp'nin kimlik doğrulama işini pam'e aktaralım:

#nano /etc/pam.d/vsftpd

Burada;

auth sufficient /lib/security/pam_ldap.so

account sufficient /lib/security/pam_ldap.so

password sufficient /lib/security/pam_ldap.so

auth required pam_warn.so
account required pam_warn.so
session required pam_warn.so

satırlarını ekliyoruz. Son üç satır hataları takip edebilmek için.

phpldapadmin ile "people" ismini verdiğimiz (başka isim de olur) bir OrganizationalUnit oluşturuyoruz. Tüm kullanıcılar bu düğümün altında bulunacak. Sonra denemek için mustafa isimli bir kullanıcı ekliyoruz. Kullanıcıyı "Custom" template'inden "account" ve "possixaccount" objectclass'larını seçerek ekliyoruz.

Test edelim:

#ncftp -u mustafa
NcFTP 3.2.0 (Aug 05, 2006) by Mike Gleason (http://www.NcFTP.com/contact/).
Connecting to 127.0.0.1...
(vsFTPd 2.0.5)
Logging in...
Password requested by 127.0.0.1 for user "mustafa".

Please specify the password.

Password: ******
Unexpected response: OOPS: cannot locate user entry:mustafa
OOPS: cannot locate user entry:mustafa

Evet hata verdi. Kullanıcının ev dizini bilgisini alamadığı için bir klasöre bağlayamadı. Fakat kimlik kanıtlamadan geçti. parolayı yanlış girdiğimizde veya ldap'da (veya sistemde) olmayan bir kullanıcı ile ftp yaptığımızda hata şöyle oluyor:

ncftp -u mehmet localhost
NcFTP 3.2.0 (Aug 05, 2006) by Mike Gleason (http://www.NcFTP.com/contact/).
Connecting to 127.0.0.1...
(vsFTPd 2.0.5)
Logging in...
Password requested by 127.0.0.1 for user "mehmet".

Please specify the password.

Password: ******
Login incorrect.
Could not open host localhost: username and/or password was not accepted for login.

Bunu vsftp kayıt dosyalarından da doğrulayabiliriz:

#tail /var/log/vsftpd.log
Tue Jul 15 03:53:57 2008 [pid 4943] CONNECT: Client "127.0.0.1"
Tue Jul 15 03:53:57 2008 [pid 4942] [mustafa] OK LOGIN: Client "127.0.0.1"
Tue Jul 15 03:54:06 2008 [pid 4947] CONNECT: Client "127.0.0.1"
Tue Jul 15 03:54:12 2008 [pid 4946] [mehmet] FAIL LOGIN: Client "127.0.0.1

Malesef pam servislere kimlik doğrulama dışında bilgi vermiyor. Ev dizini gibi bilgileri servislere sağlayabilmek için nss (Name Service Switch) kullanmak gerekecek.

Hiç yorum yok: