Home Map Index Search News Archives Links About LF
[Top bar]
[Bottom bar]
Bu makalenin saðlandýðý diller : ÝngilizceFransýzca   Turkce
[Yazarýn fotoðrafý]
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.
Þu anda 4unet te Ýnternet Geliþtirme Müdürü olarak çalýþýyor ve kiralamak üzere yetenekli kiþiler arýyor.
Kendisi hakkýnda daha fazla bilgiyi onun anasayfasýnda bulabilirsiniz

Ýçindekiler:

Açýk kodlu yazýlýmlarla bölünebilir ISS ler geliþtirme

Çeviri : Mustafa Azam Sezer

ispman

Ö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ý.



 

Neden LDAP?

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 nedir?

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 ne saðlayacak?

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 :).

 

Sanal alanadlarý

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ý.

 

ISS imizi güçlendirren yazýlýmlar

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.

 

Dizin Tasarlama

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'de Doðrulama (Sistem hesabý olmadan)

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.so                               

Artý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 i LDAP ile Yönetmek

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
Bütün bu scriptler ISPMan paketinin içinde var. Bir NS kaydýnýn nasýl deðiþtirileceðini anlatan þu ekran görüntüsüne bir göz atýn.

 

proftpd'nin Kurulmasý

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'un Kurulmasý

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: admins                                                                      

Bu girdileri kurulum sýrasýnda ISPMan sizin için kendisi oluþturacak.

 

Postfix'in Kurulmasý

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 ile kullanýcýlarýn yönetilmesi

ISPMan kullanýcýlarý yönetmeyi kolaylaþtýrýr. Bir kullanýcý oluþturmak iki adýmdan ibarettir:

  1. LDAP veritabanýnda bir girdi olulturmak
  2. IMAP sunucusunda bir posta kutusu oluþturmak
Herhangi bir kullanýcýyý silmekle bu iki adýmdaki girdileri de otomatik olarak silmiþ oluursunuz.

 

Daha fazla makineye bölme

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.

 

kullanýcýlara web mail saðlanmasý

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.

böylece istemcilerinizin kendilerine gelen iletileri basitçe http://mail.their.domain adresine giderek okuyabilmelerine olanak saðlayabilirsiniz

 

Kaynaklar

PAM LDAP Modülü
pam_ldap modülü Solaris and Linux iþ istasyonlarýnýn LDAP dizini için doðrulama yapmaya ve dizindeki þifreleri deðiþtirmeye yarar.
openLDAP
OpenLDAP Projesi saðlam, ticari yönü bulunan, tam donanýmlý ve açýk kodlu LDAP uygulamalarý ve geliþtirme araçlarý geliþtirmek için iþbirliði içinde yürütülen bir projedir. Proje interneti haberleþmek, planlamak, OpenLDAP Takýmýný geliþtirmek ve onunla ilgili dokümanyasyonu oluþturmak için kullanan dünya çapýndaki bir gönüllüler topluluðu tarafýndan yönetiliyor.
Postfix
Mükemmel SMTP sunucusu
Cyrus SASL kütüphanesi ve imapd'si
Cyrus Elektronik Ýleti Projesi standartlara baðlý teknolojiler kullanan küçük veya büyük yatýrým çevrelerinde kullanýlmak üzere yüksek derecede bölünebilirliðe sahip bir yatýrým ileti sistemi geliþtirmeye devam ediyor. Bu proje sayesinde Cyrus teknolojileri küçük departmanlardaki baðýmsýz kullanýmdan büyük bir þirkette merkezi olarak yönetilen bir sistem haline dönüþebilecek.
ISPMan (Deðiþtokuþ katili[Exchange killer])
Bu makalede tanýttýðým ISS yönetim yazýlýmý
proftpd
Güvenli bir ftp sunucusu

 

Bu makale için talkback formu

Her makalenin kendine ait bir talkback sayfasý vardýr. Bu sayfaya kendi yorumunuzu sunabilir ya da diðer okuyucularýn yarumlarýný okuyabilirsiniz:
 talkback sayfasý 

Ý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