[linux-network] Postfix/cyrus ayarlarý -- winbind kullanýmý

---------

New Message Reply About this list Date view Thread view Subject view Author view Attachment view

From: Deniz Akkus Kanca (deniz@arayan.com)
Date: Tue 13 Apr 2004 - 18:54:01 EEST


Aþaðýdaki yazý, geçen hafta bahsettiðim, Windows NT kullanýcý adý ve
þifresini Linux'da çalýþan posta sunucusunda kullanmanýn nasýl olduðu
ile alakalý.
Elden geldiðince anlatmaya çalýþtým.

Bu düzeneði Postfix/Cyrus için ve Squid NTLM authentication için
kullanýyorum. Kurduktan sonra sorunsuz çalýþýyor ve memnunum.

Notlar iliþiktedir.

Esen kalýn,
Deniz

-- HTML Attachment decoded to text by Ecartis --
-- File: Linux_uzerinde_Windows_NT_kullanicilari.html

 Linux uzerinde Windows NT kullanicilari

WINBIND, SAMBA, PAM ile Linux'da Windows NT Kullanıcı Veritabanından
Faydalanmak
Çoğu şirkette halen kullanımda olan bir Windows ağı ve bu ağ (Domain)
üzerinde
tanımlanmış olan kullanıcılar mevcuttur.

Bu yazıda, bu kullanıcı bilgisini Linux üzerinde nasıl
kullanabileceÄŸimizi
göreceğiz.

Sağladığı Kolaylık: 1. Kullanıcı açısından kolaylık: Tek
kullanıcı ismi/şifre ile mümkün olduğu
kadar çok hizmeti kullanabilmek kullanıcı için büyük bir
kolaylıktır.Şifresini
bir yerde değiştirdiği zaman diğer servisler için değiştirmek, veya
"posta kullanıcım neydi?" diye hatırlamak zorunda kalmaz. Bir kullanıcı
kimliÄŸi ve bu kimliÄŸe eriÅŸimi saÄŸlayan bir ÅŸifresi olur, bir tek bunu
hatırlamak zorunda kalır.
Çoğu şirkette, kullanıcı, Windows ağı için başka, posta için
baÅŸka, muhasebe
sistemi için başka .... her biri birbirinden az farklı bir sürü
ad/ÅŸifre ile
uğraşmak zorunda kalıyor. Ondan sonra da sistem yöneticileri
kullanıcıların
ad/şifre'lerini sürekli unutmasından, veya bir kağıda yazıp
ekranınınyanına
yapıştırmasından şikayet ediyor. :-) Bir ağda sağlanan hizmetlere
ulaşmak için
birden fazla ad/şifre kullanmak zorunda kalan kullanıcıların bu şekilde
yöntemlere başvurmalarını çok da haksız görmek mümkün değil.

2. Sistem yöneticisi açısından kolaylık: Sisteme eklenen her
kullanıcıiçin 10
tane hesap açmak zevkli olmasa gerek. Üstelik de biriken bu yazılım
kalabalığının hepsinde bir kullanıcı eklemek için ne yapmak
gerektiğifarklı.

Uygulama Sahaları: Benim aklıma gelmeyen pek çok uygulama sahası
muhakkakmevcuttur. Ben iki
kullanımdan bahsedeceğim -- Linux üzerinde posta sunucusu ve proxy/vekil
sunucusunda Windows NT kullanıcılarını tanımak.

1. Linux posta sunucusunda Windows kullanıcı/şifrelerini
kullanabilmek.
Bu yöntemi kullanarak, posta sunucumuzun, Windows ağında kullanılan
kullanıcı
adı/şifreleri kabul etmesini sağlayabiliriz. Üstelik, eğer Cyrus
kullanıyor
isek, posta sistemine ilk login esnasında, kullanıcının henüz var
olmayan posta
kutusunu da otomatik oluşturtabiliriz. Dolayısıyla bir kullanıcıyı
Windows
sistemine eklediğimiz zaman posta erişimini sağlamak için başka
herhangibir ÅŸey
yapmamıza gerek kalmaz.

Benim kullandığım posta sunucusu, SMTP için Postfix[1], IMAP/POP için
Cyrus[2]. Fakat
bu yöntem, Windows kullanıcılarını Linux'da yerel kullanıcı imiş
gibi
gösterdiğinden dolayı, yerel kullanıcı kabul eden bütün sunucularda
uygulamak
mümkün. Dikkat çekmek istediğim nokta, posta kutusunun otomatik
oluşturulmasına
izin veren bir IMAP/POP sunucusu olmak zorunda olduğu. Bu özellik
Cyrus[3]'ta
mevcut, diÄŸerlerini bilmiyorum.

2. Proxy/Vekil sunucuda Windows kullanıcı/şifresini
kullanmak
Linux üzerinde squid[4] kullanıyor isek, NTLM izinlendirme yöntemini
kullanmasını
sağlamak mümkün. Dolayısıyla, hem erişimi kullanıcı bazında takip
edebiliriz,
hem de kullanıcı bazında izinlendirme uygulayabiliriz. Bu, IP no'larını
takip
etmekten çok daha verimli bir yöntem. Eğer kullanıcı Internet Explorer
kullanmaya devam ediyor ise, kendisine ÅŸifre bile sormadan bu
izinlendirmeyi
arka planda yapıyor.

Kullanılan Yazılımlar:
1. Samba 3.X serisi: http://www.samba.org[5] adresinden bulabileceÄŸiniz
Samba yazılımı
aynı zamanda bütün dağıtımların içerisinde de mevcut. Önemli olan
3.X serisi olması.

2. Ldap sunucusu: http://www.openldap.org[6] adresinden Slapd sunucusunu
indirebilirsiniz. Gene
bütün dağıtımlarda LDAP sunucusu mevcuttur.

Önemli Not: LDAP sunucusu gerekmeyebilir. Eğer Windows NT
kullanıcılarını birden fazla Linux makina
üzerinde kullanmak isterseniz, o zaman gerekecektir.

Yapılacak İşlem:
Linux makinasını, Windows NT ağına bir sunucu olarak tanıtacağız.
Winbind servisini çalıştırarak, Windows NT
üzerinde mevcut olan kullanıcıların Linux üzerinde sanki yerel
kullanıcı imiş gibi görülmesini sağlayacağız.
Winbind bunu yaparken, her Windows NT kullanıcısına bir sanal Linux
kullanıcı kimliği veriyor.

Eğer birden fazla Linux makinası kullanacak isek, o zaman bu sanal Linux
kullanıcı kimliklerinin hep aynı olmasını
sağlamakta fayda var, LDAP sunucusunu o zaman kullanıyorlar -- yeni bir
Windows NT kullanıcısı ile ilk
defa karşılaşan Linux makinası, sanal kimlik-Windows NT eşlemesini
LDAP'e kaydediyor, diÄŸer Linux
makinaları da aynı eşlemeyi kullanıyorlar.

Linux Makinasını Windows NT Ağına Tanıtmak:
Orjinal Samba dökümanı:
http://us1.samba.org/samba/docs/man/domain-member.html#id2899503[7]

NetBIOS adı: SERV1 Windows 200x/NT alan adı: MIDEARTH Alan PDC'nin NetBIOS
adı: DOMPDC Alan BDC NetBIOS adları: DOMBDC1 ve DOMBDC2

İlk önce smb.conf dosyanızı değiştirerek Samba'da alan güvenliği
kullanılır hale getirmelisiniz.

Smb.conf dosyanızın [global] bölümünün içindeki güvenlik satırını
aşağıdaki hale getirin:

security = domain

Bundan sonra yine [global] bölümünde yer alan grup bilgisini
deÄŸiÅŸtirin:

workgroup = MIDEARTH

Bu isim, katılacağımız alanın adıdır.

Kullanıcılarınızın NT PDC'den kimlik kontrolü yaptırabilmesi için
parolaların şifreli olduğuna dair parametre de aşağıdaki şekilde
belirtilmelidir. Bu parametrenin öntanımlı değeri "yes"/evet olduğundan
dolayı ayrıca smb.conf içine yazmanız gerekli değildir. Fakat eğer
smb.conf dosyanızda bu parametre yer alıyor ise, değeri "yes"
olmalıdır.
encrypt passwords = yes

Son olarak [global] bölümünde şifre sunucusu satırını değiştirin
(veya ilave edin):

password server = DOMPDC DOMBDC1 DOMBDC2

Bu sunucular, Samba'nın kullanıcı yetkinleştirmek için başvuracağı
birincil ve yedek alan sunucularının isimleridir. Samba bu sunucuları
verilen sırayla arayacaktır, dolayısıyla yük paylaştırmak amacı ile
burada vereceğiniz sıralamada değişiklik yapabilirsiniz.

Veya, smbd'nin Alan Sunucusu listesini otomatik olarak elde etmesini
isterseniz, bu satırı aşağıdaki şekilde de uygulayabilirsiniz:
password server = *

Bu metod, Samba'nın tamamen NT'nin kullandığı mekanizmayı
kullanmasınısağlar. Bu metodda, ya broadcast (genel yayın) bazlı isim
çözümleme yapılır, ve bir WINS veritabanına bakılarak yetkinleştirme
için başvurulacak Alan Sunucusu bulunur, ya da DNS isim çözümlemesi
kullanılarak Alan Sunucusu bulunur.

Alana üye olmak için bu komutu çalıştırın:

root# net rpc join -S DOMPDC -UAdministrator%ÅŸifre

Eğer -S DOMPDC argümanı verilmezse, alan adı, smb.conf ayarlarından
bulunur.

Samba makinası, DOM adındaki alana üye oluyor, ve bu alanın birincil
alansunucusu (PDC), DOMPDC adında bir makina, bu sebeple -S seçeneği
kullanılıyor. Administrator%şifre DOMPDC üzerinde, alana makina
eklemeyeyetkisi olan bir hesabın adı ve şifresi. Eğer bu komut
başarılı olur ise, aşağıda gösterilen mesajı alacaksınız. NT4 alan
mimarisinin kullanıldığı durumlarda:
Joined domain DOM.

Active Directory mimarisi kullanılıyor ise:
Joined SERV1 to realm MYREALM.

Daha fazla bilgi için net man sayfasına bakın.

Bu komut, Samba sunucusunu, alana, PDC üzerinde daha önceden bir makina
hesabı açmak zorunda kalmaksızın üye yapar.
Komut, makina hesabı şifre değiştirme protokolünü uygular ve
oluÅŸturduÄŸu (random) yeni makina hesap ÅŸifresini normalde smbpasswd
dosyasının tutulduğu dizinde bir dosyaya kaydeder:
/usr/local/samba/private/secrets.tdb
veya
/etc/samba/secrets.tdb.

Bu dosya root'a aittir ve başka bir kullanıcı tarafından okunamaz. Bu
dosya sisteminiz için Alan seviyesinde güvenliğin anahtarıdır ve
herhangi bir şifre dosyası kadar dikkatle muhafaza edilmelidir.

Son olarak Samba sunucunuzu tekrar başlatın. Samba'yı yeniden başlatma
şekli dağıtımınıza göre farklı olabilir fakat genelde aşağıdaki
komut işinizi görecektir:
root# /etc/init.d/samba restart
Linux Makinasında Windows Kullanıcılarını Görmek - Winbind
Winbind'ın Getirdikleri
Orjinal Döküman:
http://us1.samba.org/samba/docs/man/winbind.html#id2955823[8]

Winbind, UNIX ve Windows NT hesap yönetimini, bir UNIX makinasının tam
anlamıyla bir NT alanına üye olmasını sağlayarak birleştirir. Bu
gerçekleştirildikten sonra UNIX makinası, NT kullanıcılarını ve
gruplarını sanki UNIX "yerel" kullanıcı ve gruplarıymış gibi
görecek,ve NT alanını tıpkı tamamen UNIX olan ortamlarda NIS'in
kullanıldığı gibi kullanmaya imkan verecektir.

Sonuç olarak, UNIX makinasında herhangi bir yazılım bir kullanıcı veya
grup adı hakkında işletim sisteminden bilgi istediği zaman, bu istem,
ilgili alanın NT Alan Sunucusu'na sorularak çözümlenir. Winbind işletim
sistemine alt seviyede (C kitaplığındaki NSS isim çözümleme modülleri
vasıtası ile) entegre olduğundan dolayı, NT Alan Sunucusu'na yapılan bu
yönlendirme tamamen şeffaftır.

UNIX makinasındaki kullanıcılar bu şekilde NT kullanıcı ve grup
isimlerini tıpkı "yerel" UNIX isimlerini kullandıkları gibi
kullanabilirler. Dosyaların NT alan kullanıcılarına ait olması için
chown komutunu kullanabilir, hatta NT kullanıcı adlarını kullanarak bir
UNIX makinasına login edebilirler.

Winbind'ın kullanıldığına dair tek işaret, kullanıcı ve grup
isimlerinin DOMAIN\kullanıcı ve DOMAIN\grup şeklinde olmasıdır.

Ek olarak, Winbind, Pluggable Authentication Modules (PAM) sistemine
bağlanan bir yetkinleştirme mekanizması sağlar. Bu yol ile UNIX
sistemleri, PAM kullanan bütün uygulamaların kullanıcı
yetkinleÅŸtirmesinde NT alan bilgilerini kullanabilirler. Bu mekanizma,
sistemler arası şifrelerin senkron tutulması problemini çözer, çünkü
bütün şifreler tek bir yerde tutulur (Alan Sunucusu'nda).
nsswitch.conf Ayarları Direkt tercüme değildir. İlgili orjinal
döküman:http://us1.samba.org/samba/docs/man/winbind.html#id2956484[9]

root olarak /etc/nsswitch.conf dosyanızı düzenleyerek kullanıcı ve grup
girdilerinin winbindd sunucusundan alınmasını sağlamanız gerekli. Bu
düzenleme sonrası /etc/nsswitch.conf dosyanız aşağıdaki gibi
olacaktır:

passwd: files winbind
shadow: files
group: files winbind

winbindd sunucusu tarafından gereken kitaplıklar sisteminiz yeniden
başlatıldığı zaman otomatik olarak ldconfig önbelleğine
alınacaktır,fakat elle bu işlemi yapmanız daha hızlı olacaktır
(üstelik de sistemi yeniden başlatmanıza gerek olmaz.)

root# /sbin/ldconfig -v | grep winbind Bu komut, libnss_winbind
kitaplığını winbindd'a sunar ve size de bilgi verir.

smb.conf Ayarları
smb.conf dosyanızın [global] bölümüne winbind ile ilgili aşağıdaki
parametreleri girin:

[global] # alan adı ve kullanıcı kimliği arasında kullanılan ayraç
winbind separator = + # 10000 ile 20000 arasındaki uid no'larını alan
kullanıcıları için ayırın idmap uid = 10000-20000 # 10000 ile 20000
arasındaki gid no'larını alan grupları için ayırın idmap gid =
10000-20000 # winbind kullanıcı ve gruplarının listelenmesine izin verin
winbind enum users = yes winbind enum groups = yes # eÄŸer winbind
kullanıcıları Linux makinasında kabuk girişine izinli olacaklar ise
(telnet yapabilmek gibi) onların ev dizinleri ve kabuk bilgileri template
homedir = /home/winnt/%D/%U template shell = /bin/bash
Winbind Sunucusunu BaÅŸlatma
root# /etc/rc.d/init.d/winbind start

Testler
Bu komut, mevcut NT alanınızdaki kullanıcıları listelemelidir:
root# wbinfo -u

Bu komut, mevcut NT alanınızdaki grupları listelemelidir:
root# wbinfo -g

Bu komut, hem UNIX'de yerel olarak tanımlı kullanıcıları, hem de NT
alanından gelen kullanıcıların tamamını bir arada verir. Çıktı,
passwd dosyasının görüntüsüne
benzer:

root# getent passwd
root# getent group

Birden Fazla Linux Makinasında Winbind Çalıştırmak -- Arada LDAP Direkt
tercüme değildir.
Orjinal döküman:
http://us1.samba.org/samba/docs/man/domain-member.html#id2901054[10]
Orjinal döküman:
http://us1.samba.org/samba/docs/man/passdb.html#idmapbackend[11]

Yukarıda anlatılan mekanizma, NT'de var olan bir kullanıcı için,
Samba/Winbind vasıtası ile sanal bir Linux kullanıcısı oluşturulması
mekanizmasıdır. Eğer ağda birden fazla Linux makinası var ise, şöyle
bir problemle karşılaşabilirsiniz: İki Linux makinasının sanal
kullanıcı listesi birbirini tutmaz. Dolayısıyla özellikle bu iki makina
arasında NFS gibi UNIX bazlı dosya paylaşım gibi mekanizmalar kullanır
iseniz, birinde ahmet'e ait olarak görülen dosyanın diğerinde hiç
kimseye, veya, daha kötüsü mehmet'e ait olarak görüldüğünü
farkedebilirsiniz.

Ağda birden fazla Linux makinasında winbind çalıştıracak iseniz, arada
bir LDAP sunucusu çalıştırarak bu problemi bertaraf edebilirsiniz. LDAP
sunucusundaki bilgileri siz hiç bir zaman direkt kullanmayacaksınız,
Linuxmakinaları, ne zaman bir NT kullanıcısını bir UNİX hesabı ile
eşleseler LDAP'e kaydedecekler ve kayıtlarını oradan kontrol ederek
kendiaralarındaki NT->UNIX eşlemesinde senkron vaziyette kalacaklar.

LDAP sunucusunu kurmak ve ayarlamayı burada anlatmayacağım. Çalışan
birLDAP sunucusuna ve bu sunucu üzerinde yazma yetkisi olan bir
kullanıcıya ihtiyaç var. Bu sunucunun adı: ldap.bizimfirma.com.tr
Kullanıcının adı: smbadmin . Bu kullanıcının DN'i:
uid=smbadmin,ou=Local,dc=bizimfirma,dc=com,dc=tr
LDAP sunucusuna, idmap şemasını yüklemeniz gerekli. Bu şema, samba
dağıtımınızda gelebileceği gibi, PADL[12]'den de indirilebilir.

smb.conf dosyanıza:

idmap backend = ldap:ldap://ldap.bizimfirma.com.tr
ldap admin dn = uid=smbadmin,ou=Local,dc=bizimfirma,dc=com,dc=tr
ldap user suffix = ou=Local,dc=bizimfirma,dc=com,dc=tr
ldap group suffix = ou=Local,dc=bizimfirma,dc=com,dc=tr
ldap idmap suffix = ou=Idmap,dc=bizimfirma,dc=com,dc=tr

Şimdi LDAP kullanıcısının şifresini Samba'ya tanıtalım:

root# smbpasswd -w ÅŸifre

Tavsiye:

Bu adım, hele hele mevcut bir LDAP sunucunuz yok ise, gereksiz gibi
görünebilir. Bu adımı en başta, tek Linux makinasına winbind kuruyor
olsanız bile uygulamanızı tavsiye ediyorum. Birincisi, ileride ikinci bir
Linux makinası ilave eder ve kullanıcı eşlemesini senkronize etmez
isenizbir sürü hataya meydan verecek bir ortam oluşturacaksınız. O
zamanLDAP sunucusu ilave ettiğiniz zaman ise, bütün mevcut eşlemeleri
silip sıfırdan tekrar başlatacaksınız. Linux'daki mevcut dosyaların
(posta kutusu vs. de dahil) sahiplik bilgileri karman çorman olacak.
İkincisi ise, bütün bu yazı, kullanıcı veritabanını NT üzerinde
tutup Linux'da ondan faydalanmak üzerine kurulu. Halbuki tam tersini yapmak
da mümkün. Yani LDAP üzerinde kullanıcılarınızı tutup, Samba PDC
çalıştırıp hem Linux, hem NT makinalarınızı buradan beslemek
mümkün. Bu aşamada bir LDAP düzeneği kurmak, ileride buna geçiş için
gerekli altyapıyı da hazırlıyor.

Posta Sunucusunu Bu Düzeneğe Entegre Etmek Şimdiye kadar direkt bir
faydasını görmediğimiz bir sürü işlem yaptık. Şimdi ise sıra
kurmuş olduğumuz altyapının meyvelerini toplamaya geldi.
SMTP Sunucusu Postfix: NT Kullanıcılarını Yerel Kullanıcı Olarak Kabul
Etme:
Postfix kullanıcısı ön tanımlı olarak yerel kullanıcıları kabul
eder. Bu ayar, main.cf içerisinde local_recipient_maps parametresi ile
yapılır. Bu parametre, öntanımlı değer olarak bütün yerel
kullanıcıları ve Postfix'in alias tablolarını kabul eder.
Dolayısıyla NT kullanıcılarınızı Postfix'in yerel kullanıcı olarak
kabul etmesi için gereken herşeyi zaten yapmış bulunuyoruz. Ek bir şey
yapmanıza gerek yok.
Bir problem çıkarsa, local_recipient_maps'i öntanımlı değerinde
bırakıp bırakmamış olduğunuzu kontrol edin.

SMTP-AUTH için NT Kullanıcıları:
Faydalı bir kaynak:
http://postfix.state-of-mind.de/patrick.koetter/smtpauth/[13]

Önce cyrus-sasl paketini kurun. Bunun içinde gelen saslauthd sunucusunu,
-apam seçeneği ile çalıştırın. Ondan sonra /etc/pam.d/smtp
dosyasınıdüzenleyin:

/etc/pam.d/smtp
auth sufficient /lib/security/pam_winbind.so
account sufficient /lib/security/pam_permit.so
password sufficient /lib/security/pam_smbpass.so

/etc/postfix/master.cf içine:
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous

Bu tanımlarla, Windows kullanıcı adı/şifre kullanarak SMTP-AUTH
kontrollerini gerçekleştirebilirsiniz.

IMAP/POP Sunucusu Cyrus:
Yine, pek fazla bir şey yapmamız gerekli değil.

/etc/imapd.conf içerisine:
sasl_pwcheck_method: saslauthd
sasl_mech_list: PLAIN LOGIN
yazarak şifre kontrollerini saslauthd ile yapmasını sağlıyoruz. Bunu,
Postfix için daha önce kurmuştuk ve PAM kullanmaya ayarlamıştık (-a
pamseçeneği).

/etc/pam.d/imap dosyası ile IMAP kontrollerinde ne yapması gerektiğini
belirtelim:
auth sufficient /lib/security/pam_winbind.so
account sufficient /lib/security/pam_permit.so
password sufficient /lib/security/pam_smbpass.so

Bu ayarlarla çalıştırdığımız Cyrus sunucusu, bir kullanıcının var
olup olmadığı ve şifresinin kontrolü için NT kullanıcılarına
erişecek. Fakat bir tek problem kaldı, o da kullanıcı posta kutusunun
oluşturulması. Onu da otomatik hale getirelim:

/etc/imapd.conf dosyası içerisine:
# Cyrus, eÄŸer:
# 1. Kullanıcı kontrolü başarılı ise
# 2. Aşağıdaki kota ayarı var ve sıfır değil ise
# 3. Kullanıcıya ait bir posta kutusu yok ise,
# Kullanıcı için otomatik olarak ilk login'de posta kutusu oluşturuyor.
# otomatik oluşturulan posta kutularına kota koymuyoruz. Kota koymak
isterseniz pozitif kota deÄŸerini belirtin.
autocreatequota: -1

# Şöyle bir senaryo düşünün. Kullanıcı henüz login etmedi,
dolayısıyla posta kutusu yok. Fakat kendisine bir posta gönderiliyor.
Bunukabul edebilmek için,
# henüz bir posta kutusu olmaksızın kendisine posta gönderilen biri
içinde posta kutusunu otomatik oluşturtalım:
createonpost: yes

#Bu otomatik oluşturulan posta kutularında bazı dizinler de otomatik
oluÅŸsun
autocreateinboxfolders: Sent | Drafts | Templates | Trash
autosubscribeinboxfolders: Sent | Drafts | Templates | Trash

--- Links ---
   1 http://www.postfix.org
   2 http://asg.web.cmu.edu/cyrus/imapd/
   3 http://asg.web.cmu.edu/cyrus/imapd/
   4 http://www.squid-cache.org/
   5 http://www.samba.org
   6 http://www.openldap.org
   7 http://us1.samba.org/samba/docs/man/domain-member.html#id2899503
   8 http://us1.samba.org/samba/docs/man/winbind.html#id2955823
   9 http://us1.samba.org/samba/docs/man/winbind.html#id2956484
  10 http://us1.samba.org/samba/docs/man/domain-member.html#id2901054
  11 http://us1.samba.org/samba/docs/man/passdb.html#idmapbackend
  12 http://www.padl.com/download/xad_oss_plugins.tar.gz
  13 http://postfix.state-of-mind.de/patrick.koetter/smtpauth/


New Message Reply About this list Date view Thread view Subject view Author view Attachment view

---------

Bu arsiv hypermail 2.1.2 tarafindan uretilmistir.