Bu makalenin saðlandýðý diller : Ýngilizce , Fransýzca Turkce |
![]() yazan: Atýf Gaffar Yazar hakkýnda:
Atýf'ýn on parmaðýnda on marifet vardýr. Ýþini bitirebilmek için Sistem Yöneticiliðinden tutun da programcýlýða, öðretmenlikten tutun da proje müdürlüðüne kadar gereken ne kadar görev varsa hepsini yerine getirir.
Ýçindekiler:
|
Özet:
Son makalemde size Linux altýnda LDAP kullanmayý anlatmýþtým. LDAP'nin açýk kaynaklý bir programla nasýl birleþip bir ileti veya bir sunucu sistemi yapabildiðini merak eden insanlardan bir çok soru aldým.
Bu Makalede Linux ve LDAP tabanlý bölünebilir bir ISS servisi kuracaðýz. Bu servis bir çok önemli noktaya ve sorulan bir çok konuya açýklýk getirecek. Sonra onu yönetmek için ISPMan denilen bir araç kullanacaðýz.
Metin þeklindeki örneklerin uzunluðundan kurtulmak için onlarý onlarý metin kutucuklarýna ekledim. Eðer gerçekten bu sayfanýn çýktýsýný almak istiyorsanýz o zaman onu kendi bilgisayarýnýzda saklayýn ve metin kutucuklarýndaki örnekleri "pre tags'e" dönüþtürün.
Belki bu perl komutu sizin için bir þeyler yapabilir.
perl -pi.bak -e 's!textarea.*?>!pre>!g' filename
Bir ISS meydana getirmek ve sonra onu yönetmek uzmanlýk isteyen bir iþ, özellikle onun rahatça eriþilebilir, bölünebilir ve büyük bir kýsmýnýn otomatik olmasýný istiyorsanýz.
Bir ISS'yi çalýþtýrmak kendini makinalarýn çalýþmasýna, kullanýcý hesaplarýnýn oluþturulmasýna, sanaldoku sitelerinin yönetilmesine, sorun gidermeye, bir yardým masasý çalýþtýrmaya vb. iþlere
adamýþ Sisitem Yöneticilerinden oluþan bir takým gerektirir.
Çoðu zaman yardým masasýnýn kurulumda ya çok az etkisi vardý ya da hiç yoktur. Karþýlaþtýðým yardým masalarýnýn çoðunun umutsuzca yardýma ihtiyacý vardý.
LDAP mükemmel bir dizindir. LDAP, kullanýcý adlarýný ve þifrelerini yönetmekten ziyade kullanýcýlarý ve kaynaklarý yönetir. Yazýmýn ilerleyen bölümlerinde LDAP'nin nasýl her þeyi tek merkezden idare ettiðini göreceðiz.
ISPMan benim yazdýðýmý bir program; bu program sayesinde IT bölümündekiler yeni bir alanadý(domain) oluþturacaklarýnda, bir internet sunucusu kuracaklarýnda veya bir DNS girdisini deðiþtireceklerinde beni rahatsýz etmeyecekler. ISPMan açýk kodlu bir program ve onu http://www.ispman.org adresinden indirebilirsiniz. Burada ISPMan'in kendisi hakkýnda açýklama yapmaktansa onun ardýndaki genel kavramlardan bahsedeceðim. Kendinizi onu denemek ve geliþtirmek hususunda özgür hissedebilirsiniz.
Bu ISS bize DNS, posta, internet postasý, internet sunuculuðu vb. þeyler saðlayacak.
Mesele þu ki: Bir müþteri geliyor ve "exampledomain.com" diye bir alanadý(domain) almak istiyor.
Bu alanadý bir kaç tuþ vuruþuyla oluþturuluyor ama aslýnda sahne arkasýnda DNS'i, sanal posta sunucusunu ve sanal bir internet sunucusunu kurmak gibi bir çok sihirli iþlem yatýyor.
Müþteri kendi internet veya ftp sunucusuna eriþmek bir kullanýcý adý alýyor. Ayný alanadý içinde epotaya eriþim için sýnýrsýz sayýda kullanýcý oluþturulabiliyor. Alanadýný kullanan kullanýcýnýn indirme iþlemi için yeri olup olmayacaðý size kalmýþ.
Tabi bir de internet eriþimi saðlama iþi var. Bu konu çok sade ya da gerçekten çok karmaþýk olabileceðinden dolayý bu makalede ona deðinmeyeceðiz :).
Herkes kendi internet sitesine ve kendi alanýndan bir elektronik posta adresine sahip olmak ister fakat elektronik posta hesabý oluþturma iþi elektronik posta kullanmak için gereken sistem hesaplarýna garip bir þekilde baðlý olduðundan ben bunu sevmiyorum.
kullanici1@alanadý1.com ve kullanici2@alanadý1.ch etclerini yönetmek istediðinizde bir çok düzeyde sorun çýkýyor çünkü yapýlmasý gereken bir çok gereksiz yönlendirme iþlemi var.
Örnek olarak mükemmel bir IMAP sunucusu olan Cyrus'u alabiliriz. Cyrus kullanýcýlarý yönetmek yerine posta kutularýný(mailbox) kontrol eder. Sadece bir posta kutusunun adýnýn "agaffar" olmasýna izin verir. Eðer "linuxrus.com" alanadýndan bir müþterim varsa ve bu müþterim "agaffar" diye bir kullanýcý adý istiyorsa bu talihimin bana ufak bir oyun oynadýðý anlamýna gelir. Bu durumda farklý ada sahip bir posta kutusu oluþturmalý ve kullanýcýyý o posta kutusuna yönlendirmeliyim. Bu iþin ikinci bir püf noktasý da "agaffar.linuxrus.com" adýnda bir kullanýcý oluþturmak fakat Cyrus "." yý posta kutusu ayýracý olarak kullandýðý için ne birincisini yapabilirim ne de "agaffar@linuxrus.com" adlý bir kullanýcý adý kullanabilirim. Neyse ki gelecekteki programlar akýllarda zaten var olan alanadlarýyla yazýlacak.
Hepimizin Amerika'da yaþamadýðýný da hatýrlatmak isterim. Bir çok posta listesi kullanýcý1@alanadý1 ve kullanýcý2@alanadý2 yi öneriyor. Onlar bütün alanadlarýnýn .com ile bitmesini umuyorlar. So we have to keep track of "username" "domain" "TLD"(Top Level Domain).
Bizim tasarýmýz bütün bunlarý hesaba katacak.
"agaffar" diye bir kullanýcý oluþturmak yerine kullanýcýlarý "kullanýcýadý_alanadý_tld" þeklinde oluþturacaðýz.
Ayraç olarak neden "_" yi kullandýðýmý bilmiyorum fakat "." Cyrus yüzünden kullanýlamazdý ve diðer ayraçlarla da daha baþka problemlerimiz vardý, örneðin "&" hem komut satýrlarý hem de URL ler için sakýncalýydý.
Aþaðýda LDAP ile sorunsuz bir þekilde çalýþan programlarýn bir listesini görüyorsunuz. Tabi isterseniz, ve de çalýþýrsa, baþka programlar da kullanabilirsiniz.
Dizinimiz alanadlarýna dayanýyor. Bu dizinde alanadlarý, alanadý kullanýcýlarý, alanadý servisleri etc leri var.
Öreneðin LDAP yöneticisi ve Cyrus yöneticisi gibi kullanýcýlarýn dýþýndaki bir kullanýcý sadece bir alanadýnda var olabilir.
alanadýnýn ilgili bölümü kendisine baðlý olan kullanýcýlarýn bilgilerini, alanadýnýn DNS bilgilerini ve alanadý etc sinin internet bilgilerini saklar
Örnek
Burada "develeoper.ch" alanadý için bir bölüm tanýmladýk, bu bölümün kullnýcýlar, dns bilgileri ve internet bilgileri için alt bölümleri var.
Bu örnekte alanadýna sadece "alanadý.tld" kullanýcýsýnýn ftp ile eriþmesini istediðimiz için bir uid, gid ve anadizin(homeDirectory) tanýmladýk.
Örneðin developer.ch adlý alanadýnýn sahibi kendi dizinine dosya yükelemek istediðinde sisteme "developer.ch" olarak baðlanacak ve ftp sunusuna baðlanmak için uygun þifreyi girdiðinde anadizinine ulaþabilecek vesaire vesaire... bundan daha sonra bahsedeceðiz.
Diðer kullanýcýlarýn alanadýna ftp ile eriþmelerini istemediðimiz için onlara bir uid,gid ve etc tanýmlamadýk.
Bütün bir LDIF örnek dosyasýný burada
bulabilirsiniz (bu dosya biraz eski olabilir çünkü bir üretim makinasýndan alýndý ve yeni tasarýmýnda içine bazý özelikler ekledim) veya patronunuza bir örnek sunmak için bu baðlantýyý kullanabilirsiniz (bu da biraz eski tarihli)
LDAP nin diðer bir güzelliði de /etc/passwd, /etc/shadow etc sinde herhangi bir sistem hesabý oluþturmak ya da NIS etc sini yönetmek zorunda olmayýþýmýz.
Tüm hesaplar LDAP de toplanýr ve doðrulama da direk LDAP üzreinden yapýlýr.
Bu ufak oyunu yapabilmek için PAM (Pluggable Authentification Module) pam_ldap'den büyük yardým aldýk.
PAM sizin doðrulama için hangi modülü kullanacaðýnýzý belirlemenize olanak verir.
Örneðin benim /etc/pam.d/imap, /etc/pam.d/pop ve /etc/pam.d/proftpd dosyalarým þu þekilde:
#%PAM-1.0 auth sufficient /lib/security/pam_ldap.so account sufficient /lib/security/pam_ldap.soArtýk tüm imap/pop3/ftp doðrulama iþlemleri ldap sunucusu tarafýndan yürütülüyor. Böylece agaffar_developer_ch adlý kullanýcý doðrulanmýþ oluyor(gets authentificated) ve sistemin passwd veya nis kayýtlarýnda kaydý olmasa bile kendine gelen iletileri alabiliyor.
DNS'in halihazýrda LDAP için bir backend'i yok, ama belki de DHCP ile baðlantý kurmak için kullanýlan Dynamica DNS dýþýnda bir DNS için backendi olmasý iyi bir fikir deðil. Neyse, LDAP'yi DNS hakkýndaki bilgileri depolama ve daha sonra bunlarý kullanarak DNS alan dosyalarý oluþturmak için kullanýyoruz. Bu bizim DNSte herhangi bir deðiþiklik yapmadan her þeyi merkezi bir güvenli makinadan yönetmemize olanak saðlýyor.
LDAP deki DNS girdileri þu þekilde gözüküyor:
dn: ou=dnsdata, domain=4unet.net, o=ispman domain: 4unet.net ou: dnsdata objectclass: top objectclass: domainrelatedobject objectclass: posixAccount uid: 4unet.net uidNumber: 2000 gidNumber: 1000 homeDirectory: /home/4unet.net userPassword: {crypt}XXffGGHH loginShell: /bin/true |
dns bilgisi kolu tanýmlarý. Ayný zamanda alanadýyla ayný ada sahip bir posixAccount (bir kullanýcý) tanýmlýyor. Bu kullanýcý alanadýna ftp ile baðlanýp daha önce belirlenmiþ kýsýmlara dosya yükleyebilen bir çeþit webmaster. |
dn: cn=soarecords, ou=dnsdata, domain=4unet.net, o=ispman cn: soarecords primary: ns1.4unet.net ou: dnsdata retry: 1800 rootmail: dnsmaster.4unet.net domain: 4unet.net minimum: 432000 objectclass: top objectclass: domainRelatedObject expire: 1209600 refresh: 21600 |
Bu kýsým 4unet.net'in DNS'si için SOA kayýtlarýný tanýmlýyor. Alan dosyasýnýn içinde bu deðerleri onlarý DNS SOA kayýtlarýna çevirecek bir script bulundurmak zorundasýnýz. |
dn: cn=nsrecords, ou=dnsdata, domain=4unet.net, o=ispman domain: 4unet.net cn: nsrecords ou: dnsdata objectclass: top objectclass: domainRelatedObject record: @,ns1.4unet.net record: @,ns2.4unet.net |
Ve bunlar da NS kayýtlarý.
Tüm bilgileri bir script tutacak, onlarý "," karakteri ile ayýracak ve alan dosyasýna eklenecek olan hedefi ve isim sunucusunu bulacak |
dn: cn=mxrecords, ou=dnsdata, domain=4unet.net, o=ispman domain: 4unet.net cn: mxrecords ou: dnsdata objectclass: top objectclass: domainRelatedObject record: @,10, mx1.4unet.net record: @,100, mx2.4unet.net |
Yukarýdakilerin aynýsý ama bu sefer MX kayýtlarý.
Bu kayýtlar ayný zamanda alan dosyalarýnýn içindeki MX kayýtlarýna göre düzenlenmiþ olan öncelik alanýný da içeriyor. |
dn: cn=arecords, ou=dnsdata, domain=4unet.net, o=ispman objectclass: top objectclass: domainRelatedObject domain: 4unet.net cn: arecords ou: dnsdata record: ns1, 193.247.80.43 record: ns2, 193.247.80.44 record: @,193.247.80.43 record: @,193.247.80.44 |
Bunlar da A kodlarý, basit olarak sunucu, ip adres yönlendirmeleri |
dn: cn=cnames, ou=dnsdata, domain=4unet.net, o=ispman objectclass: top objectclass: domainRelatedObject domain: 4unet.net cn: cnames ou: dnsdata record: ftp, www record: mail, www record: *, www |
Bunlar da sunucular için CNAME veya Kýsaltmalar |
proftpd'yi LDAP modülü ile birlikte yüklemiþ olmak zorundasýnýz. ftp yi sanal sunucu etc si ile çalýþtýracaksanýz ve sanal sunucunun da çoðu zaman meþgul olacaðýný düþünüyorsanýz ftp yi inetd nin içinden çalýþtýrmak yerine kendi baþýna çalýþtýrmalýsýnýz.
Bu yüzden inetd.conf kýsmýndaki satýrlarý yeniden düzenleyin ve inetd þeytanýný(daemon) yeniden yükleyin.
Adý ftponly olan ve gid 1000 e sahip bir grup oluþturn.Tüm alandalarýna bu gid i vereceðiz.
/etc/pam.d/proftpd dizinini yukarýda LDAP Doðrulamasý kýsmýnda gösterildiði gibi düzenleyin.
O zaman /etc/proftpd.conf dizininiz þunun gibi gözükmeli.
proftpd'yi çalýþtýrmak için /usr/sbin/proftpd, onu kapatmak için de killall /usr/sbin/proftpd yazabilirsiniz
Cyrus SASL'yi, imapd'yi ve UW-IMAP istemci c-sdk'sýný derleyin ve kurun. IMAP istemcisinin sdk'sý zaten sisteminizde yüklenmiþ olacaktýr.Ýlk önce rpm -aq | grep imap komutunu deneyin. Gene de þüphede kalýrsanýz daha yeni bir versiyonunu derleyin ve kurun. cyrus ve grup iletisi adlý bir kullanýcý oluþturn,yükleme talimatlarýný izleyin ve imap sunucunuzun çalýþýp çalýþmadýðýný kontrol edin. Bir kere çalýþtýrmayý baþardýktan sonra /etc/pam.d/imap kýsmýný LDAP Doðrulamasý kýsmýnda gösterildiði gibi ayarlayýn.
cyrus adýnda veya LDAP dizinindeki /etc/imapd.conf kýsmýnda verdiðiniz yönetici adýyla ayný ada sahip bir kullanýcý oluþturmak zorundasýnýze
Örneðin cyrus yöneticinizin adý "cyrus" ise ldap dizininizde aþaðýdakine benzer bir girdi göreceksiniz.
dn: uid=cyrus, ou=admins, o=ispman cn: Cyrus Admin sn: Cyrus objectclass: top objectclass: systemadmins uid: cyrus userpassword: XXDDCCYY ou: adminsBu girdileri kurulum sýrasýnda ISPMan sizin için kendisi oluþturacak.
Postfix LDAP ile mükemmel bir uyum içinde çalýþýr. Sanal alanadý ve sanal kullanýcýaramalarýný LDAP içinden direk olarak yapabilirsiniz. Böylece hangi sunucudan ileti alacaðýnýzý belirtmek zorunda kalmazsýnýz.
Örneðin, eðer "perl.ch" alanýndan bir ileti gelirse tüm alanadlarýný tarayarak "perl.ch" adlý bir alanadýnýn olup olmadýðýna bakýlacaktýr. Eðer böyle bir alanadý var ise "perl.ch için gönderilen Duh MX geri döndü" mesajýný göstermek yerine gelen iletiyi kabul edecektir.
benim /etc/postfix/main.cf dizinim þunun gibi görünüyor
ISPMan kullanýcýlarý yönetmeyi kolaylaþtýrýr. Bir kullanýcý oluþturmak iki adýmdan ibarettir:
ISPMan bir kullanýcýnýn posta kutusunu iletiçiftliðinizdeki(mailfarm) herhangi bir makinada oluþturabilmenize olanak saðlar.Örneðin herbiri 10,000 kullanýcýyý yöneten ileti1, ileti2, ileti3 ileti4 etc leriniz olabilir. LDAP + Postfix + Cyrus üçlüsünü kullanarak içteki makinalardan herhangi birine ileti daðýtabilirsiniz.
Örneðin bob@developer.ch adresine bir ileti ulaþýyor olsun, Postfix ldap sunucusuna bu iletiyi mailacceptinggeneralid=bob@developer.ch tanýmýna uyan girdiye göndermesini ister, LDAP sunucusu da bob@mail5.developer.ch adresine bu iletiyi gönderir. Gelen ileti de iletiçiftliðinizdeki ilet5 adlý makinaya yönlendirilir.
Bu aralar birkaç iþini iyi bilen geliþtiriciyle birlikte pop3 ve imap kapýsý(port) üzerindeki ileti sunucusu frontendinde çalýþan ve gelen istekleri iç makinalara ileten bir IMAP/pop3 vekili(proxy) üzerinde çalýþýyorum. Böylece kullanýcýlar iletilerinin hangi ileti sunucusunda bulunduðunu bilmek yerine sadece mail.developer.ch veya pop.developer.ch gibi bir adres bilecekler.
IMP kullanýcýlara webmail sunmak için çok kullanýþlý bir program.
Merkezi IMP yüklemesi için apache'nin httpd.conf kýsmýnda ileti.* diye bir kýsaltma oluþturabilirsiniz.
Örneðin aþaðýdakiler benim yüklememden
Aþaðýdakileri yöneten biraz deðiþtirilmiþ bir IMP sürümü üzerinde çalýþýyorum.
|
Ýnternet sayfalarý LinuxFocus Editör Takýmý tarafýndan yürütülmektedir
© Atýf Gaffar LinuxFocus.org 2000 Bir hatayý bildirmek veyahut Linuxfocus'a yorumunuzu göndermek için buraya týklayýn |
2000-09-03, lfparser sürüm 1.8 ile yazýlmýþtýr