Salı, Temmuz 15, 2008

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

Şimdi de nss'yi yapılandıralım.

#nano /etc/nsswitch.conf

passwd: compat ldap
group: compat ldap
shadow: compat ldap

Buraya "ldap" kelimelerini yazdık.

Test etmek için:

#getent passwd
...
[sistem kullanıcıları]
...
mustafa:yGBMuI4R4N8..:1001:1:mustafa:/home/mustafa:

oldu galiba:)
Son satır LDAP'dan geldi.

Hepsi bu.

Bir de ftp ile bağlanalım. Şimdilik /home/mustafa dizinini elle açıyoruz. İlerde onu da pam'a yaptırıcaz:

#mkdir /home/mustafa
#chmod 755 /home/mustafa
#ncftp -u mustafa 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 "mustafa".

Please specify the password.

Password: ******

Login successful.
Logged in to localhost.
ncftp /home/mustafa >

Mükemmel. Aslında bir haftadır buna çalışıyorum ve bu blog girdilerine başlarken bunun olacağını ummuyordum. Hatta yukarıya "şimdi de nssyi yapılandıralım" derken bile:) nss ile ilgili bir ayar da yapmadım ama pam ile nss bir şekilde anlaştı ve kullanıcının ev dizini bilgisi ldap'dan vsftpye kadar ulaştı. Bütün bunlar 5dk önce oldu :)

Bundan sonra yapılacaklar:
Güvenlik için: İletişimin ssl ile yapılması, parolaların şifreli olması
ldap kullanıcısının ilk girişinde ev dizinini oluşturulması (pam_mkhomedir.so ile).
Sistem kullanıcılarının ldap'a aktarılması (apt-get install migrationtools)
Bunlar nispeten daha kolay işler.

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.

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

Gelelim fasulyenin faydalarına:)

Şunu da yazmam lazımdır ki burada yazılanlar hatalı olabilir ve kendi sisteminizde denediğinizde sisteminizi çalışmaz hale getirebilir. Use at your own risk.

Önce kurulum:
ftp sunucu için vsftpd,
yetenekli ftp istemci için ncftp,
ssh sunucu için openssh-server

#apt-get install vsftpd
#apt-get install ncftp
#apt-get install openssh-server


vsftp2'nin anonymous dışındaki bağlantılara izin vermesi için /etc/vsftp.conf dosyasında local_enable=YES satırındaki #'i kaldırıp vsftpyi yeniden başlatıyoruz.

#nano /etc/vsftp.conf
#/etc/init.d/vsftpd restart

Kurulumları test edelim:

#ncftp -u kemal localhost
Login successful.
Logged in to localhost.
#ssh -l kemal localhost
bu da successful

Şimdi ldapla ilgili kurulumlar.
ldap sunucu için slapd - OpenLDAP server (slapd),
web'den ldap'ı yönetmek için: apache2, php5, phpldapadmin
ldap komutları ... için ldapscripts

#apt-get install apache2
#apt-get install php5
#apt-get install phpldapadmin
#apt-get install slapd
#apt-get install ldapscripts


Sorun yok. http://localhost/phpldapadmin/ adresine baktığımızda şöyle bir görüntü olmalı:
Malesef base entry eklemeden, /etc/ldap/slapd.conf ve /etc/ldap/ldap.conf dosyalarını düzenlemeden henüz login olamıyoruz. Ayrıca daha sonra ssl kullanarak güvenliği arttırmalıyız.
Daha ayrıntılı bilgi için http://www.openldap.org/doc/admin23/quickstart.html

#nano /etc/ldap/slapd.conf
    database bdb
    suffix "dc=,dc="
    rootdn "cn=Manager,dc=,dc="
    rootpw secret
    directory /usr/local/var/openldap-data

burada değiştirdiğm satırlar:

suffix "dc=nodomain"

rootdn "cn=admin,dc=nodomain"

rootpw'yi de daha sonra şifreli tutmak gerekicek.

base entry eklemek için önce bir ldif dosyası oluşturuyoruz:

# nano base.ldif
dn: dc=nodomain
objectclass: dcObject
objectclass: organization
o: Ev
dc: nodomain

dn: cn=admin,dc=nodomain
objectclass: organizationalRole
cn: admin
#ldapadd -x -D "cn=admin,dc=nodomain" -W -f base.ldif
komutuyla oluşturduğumuz kök düğümü ldap'a aktardık. base.ldif dosyasında satırların başındaki boşlukları silmeden hata veriyor.

Test için

ldapsearch -x -b 'dc=example,dc=com' '(objectclass=*)'

# extended LDIF
#
# LDAPv3
# base with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# nodomain
dn: dc=nodomain
objectClass: top
objectClass: dcObject
objectClass: organization
o: nodomain
dc: nodomain

# admin, nodomain
dn: cn=admin,dc=nodomain
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator

# search result
search: 2
result: 0 Success

# numResponses: 3
# numEntries: 2

Artık phpldapadmin ile webdeb login olabileceğimi düşünürken hata alıyorum. Daha önce de aynı problemi yaşamıştım ve birkaç saat aramayla çözmüştüm. Keşke o zaman bu blog girdisini yazsaymışım diyorum ama neyseki fazla aramadan bulabildim bu sefer.

#nano /etc/phpldapadmin/config.php
burada
$ldapservers->SetValue($i,'login','attr','dn');
yerine
$ldapservers->SetValue($i,'login','attr','cn');

yapıyoruz. Tamam artık login ekranını görelim:

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

Ara vermeden yazı dizisinin bu 2. kısmında web tarayıcımız için flash ve java eklentilerini yükleyelim.
saat 01:16

Önce java:

java.sun.com'dan jdk'yı indiriyoruz.

Yaklaşık 15dk sürdü.

#mv Desktop/jdk-6u10-beta-linux-i586.bin /usr/local
#cd /usr/local
#chmod 755 jdk-6u10-beta-linux-i586.bin
#./jdk-6u10-beta-linux-i586.bin

/usr/local/jdk1.6.0_10 dizini oluştu. iceweasel eklentisini sembolik bağlayalım.

ln -s /usr/local/jdk1.6.0_10/jre/plugin/i386/ns7/libjavaplugin_oji.so /usr/lib/iceweasel/plugins

http://www.java.com/en/download/help/testvm.xml sayfasından test ediyoruz ve çalışıyor.

Benzer şekilde flash için:

http://www.adobe.com/products/flashplayer/

Bu 2 dk'da indi.

# mv ~kemal/Desktop/install_flash_player_9_linux.tar.gz /usr/local
#cd /usr/local
#tar xvfz install_flash_player_9_linux.tar.gz
#ln -s /usr/local/install_flash_player_9_linux/libflashplayer.so /usr/lib/iceweasel/plugins

Enerjimizin ve vaktimizin önemli kısmını temel kurulumlara harcadıktan sonra artık egroupware,ldap vs mevzulara geçebiliriz.

saat 01:42

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

Bir haftadır kurcaladığım egroupware, ldap, pam, nss ile ilgili yazı dizisidir.

Önce sıfırsan bir debian kuralım. Üzerine daha sonra egroupware, ldap, pam, nss, mysql falan fıstık kuracağız.

saat 23:00 (kuruluma başlamak için biraz geç bir saat).

Bilgisayarı yeniden başlatıyoruz. Elimizdeki debian dvd/cdsini cdrom sürücüye yerleştiriyoruz. Birkaç denemeden sonra çizilmemiş olanını buluyoruz:)

Kurulum başlıyor, bir isim seçelim: "özgür" olsun. Kılavuzla diskin tamamını kullansın. / dizini için 7gb yeter mi acaba, neyse.

root parolası, yeni kullanıcı, temel sistem kurulumu ...

apt yapılandırılıyor. Bizim comunun depo adresi neydi acaba, yanlış olmasın, ftp.tr.debian.org ile devam edelim.

popularity contest'e katılmayalım:)

Yalnızca temel sistem olsun, sonra kde falan kurarız.

Grub'u mbrye mi kursun. Tabiki evet. Ve temel sistem kuruldu. kernel 2.6.18-5-686

Önce güncelleme:
#apt-get update
#apt-get upgrade
#apt-get dist-upgrade

kernel 2.6.18-6-686 oldu. Birkaç güncelleme daha oldu. Elimdeki cd çok eski değilmiş. Bu arada
Debian GNU/Linux 4.0 r1 "Etch" ile kurulum yaptık.


Grafik ekranı kuralım:

#apt-get install x-window-system

kde kuralım:

#apt-get install kde kdm
//zaman kazanmak için kde-core da kurabilirdik

kahve molası...

...

bir sürü pakette hata veriyor, inşallah kurulum tamamlanır.

...

saat 23:55
hatalarla da olsa beklediğimden hızlı kuruldu.

Bir daha güncelleme:
#apt-get update
#apt-get upgrade
#E: unmet dependencies
bunu bekliyordum.
kurulamayan paketleri kurmak için:

#apt-get install -f (veya --fix-missing)

Hayret yine hata verdi. Hep de cdromdan kurulan paketlerde. Cdrom'u depo listesinden çıkarmalıydım. Nasılsa çoğu paketi internetten indiriyor.

#nano /etc/apt/sources.list (şu vi'yi bir ara öğrenmem lazım:)

cdromla ilgili satıra # koyduk.

#apt-get update

Tekrardan:

#apt-get install -f (veya --fix-missing)

Şimdi tamam. Emin olmak için:

#apt-get update
#apt-get upgrade
#apt-get dist-upgrade

0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Mükemmel!

reboot edip sistemi inceleyelim.
saat 00:05

cd'yi çıkarmayı ve çizilmeyecek şekilde bir yere koymayı unutmayalım:)

#reboot

oturum açınca unuttuğumuzu farkettiğimiz kde türkçe paketini kuralım:

#apt-get install kde-i18n-tr

Kde Control Center'da Country/Region & Language kısmından Türkçeyi ekleyelim.
Tamam, kurulum neredeyse tamamlandı.

Daha alışkın olduğumuz iceweasel'i kuralım. Sonra javayı ve flash'ı kuracağız.

#apt-get install iceweasel iceweasel-l10n-tr

Kurulum sırasında kağıda aldığımız notları blog girdisine dönüştürelim. Ekran görüntüsü de koyalım. PrintScreen çalışsaydı keşke.



saat:01:08