Asked By:
ahmetinejat
in
Bilgisayar & İnternet
-
554 days ago
Crazy Girl's Answer
[SMB]
Bilgisayarların data üniteleri bildiğiniz üzere çeşitli dosya sistemleri içinde verilerini saklar. Örneğin: FAT 12/16/32 , ntfs/hpfs, qnx, ext2, minix, sfs... Bunlar işletim sistemlerinin o disklere erişebilmek için kullandıkları protokollerdir. Aynı internete bağlanırken kullandığımız TCP/IP protokolü gibi. SMB' da bir ağ üstündeki pc tabanlı makinelerin dosya, yazıcı ve diğer bir takım sistem bilgilerinin paylaşılmasını sağlar. Bu protokolü günümüzde bir çok işletim sistemi direk (nt, os/2, linux) veya dolaylı olarak ( ek paketlerin yuklenmesiyle; dos, windows, vms, mvs, vs unixler) desteklemektedir. Apple mac ler ve bazı web gezginleri de bu protokolü kullanabilmektedirler.
İşletim sistemi kurmadan bilgisayar satmak yasak, ama hangi işletim sisteminin kurulacağı kullanıcıya sorulmuyor. Hal boyle olunca işimizde, evimizde, orada, burada pencereler görüyoruz. Tabi ağımızda Micro$oft makineleri oluyor. Biz bunları dünya tatlısı işletim sistemleriyle unix, linux, vms .. :) uyumlu hale getirmeye çalışıyoruz. Bazıları Micro$oft vb. işletim sistemlerini kullanan sunucularını doğru düzgün çalıştırabilmek için kullanıyor ;). Bazıları da bir kabus gibi gorunen NFS, DacNet ve Nowel gibi özürlü protokolleri, pc leri destekleyen SMB değiştiriyor.
[CIFS]
Common Internet File Sistem. Tarihçesine geçersek, zamanında Samba takımı Micro$ofta o anki SMB desteği dökümanını sormuşlar, NT nin kaynak kodu dahil hiç biryerde bulamamışlar! Bazıları kendilerinin bile ne tür destek verdiğini bilmediğini söylüyorlar. Dökümanda yazana göre Micro$oft bir dokuman olup olmadığını bilmiyor. Derken SUN baba çıkıyor. FTP nin yerini tutabilecek bir şey geliştirdiklerini söylüyor (WebNFS). Oldukça iddialı olan bu protokolün HTTP nin bile yerini alacağı söyleniyor, lakin kavramı pek çekici değilmiş. Zaten o kadar değişiklik bir anda olacak iş değil. FTP protokolünün eksik zekalı oluşu, dosya transferini biraz zor kılıyor. Bu böyle olmak zorunda değil :) CIFS henüz bu saydığımız protokoller gibi internet standardı değil,ama bu yerel ağımızda kullanmamızı engellemez değil mi? Microsoft ise CIFS için şöyle diyor: CIFS internet üzerinde kullanılabilen uzak dosya sistemlerine erişimi sağlayan bir protokoldür. Kullanıcı grupları ve kullanıcıları yerel ağ veya internet üstünden döküman alışverişi yapmasını sağlar. CIFS Micro$ft işletim sistemlerinin içinde gelen ve pek çok işletim sistemi tarafından desteklenen bir platform olarak milyonlarca bilgisayar kullanıcısının kendi çalışma ortamlarını değiştirmeden, yeni bir yazılım yüklemeden, kaynaklarının paylaşımını sağlar.
[BROWSE]
Çalışma Grubunda(workgroup) mı geziniyoruz? Yoksa bir alan(DOMAIN) da mı? Size şunu söyleyeyim, istemcilerin dışında DOMAIN VE WORKGROUP aynı şeyler. Aradaki tek fark istemcilerin yetkilendirme sırasında (logon sequence) gerçekleşir. Bazı yetki veri tabanları alanlarla ilişiklendirilmiştir. Böylece daha esnek bir yapıya kavuşurlar. Bu da bize domain ile workgroup un farklı olduğu kanısını getirir. SAMBA açısından istemcilerin bu durumu ne olursa olsun yetkilendirilme sağlandıktan sonra hepsi birdir. SMB istemcilerinin alanda yetkilendirilirken kullandığı protokol diğer sunucuların kabul ettiği protokollerden olmalıdır. Orneğin M$ win95 hem alanda hem de Çalışma Grubunun bir üyesi olabilirken NT olamaz. Win95 alternatif çalışma grubunu desteklerken Samba sadece bir çalışma grubunda olabilir. Aslında nmbd servisi yapıyor bunu. "Çalışma grubu(WORKGROUP)" derken, kaynaklarını aralarındaki ortak BROWSE veritabanları vasıtasıyla paylaşabilen makineler topluluğu anlarız. Bunların herhangi ortak bir güvenlik bilgisi olmasına gerek yoktur, zaten boyle bir şey olursa ALAN (DOMAIN) olur. Bahsettiğim veritabanı dinamiktir, sunucunun o anki durumuna göre ağ yapısına göre değişim gösterir. BROWSE yapabilecek olan SMB istemciler bu değişmi algılamalıdırlar. (bazen yüz kere F5 yaptığımız olmuyo değil!) Çalışma grupları aynı HUB a bağlanmak zorunda değiller, öyle ki alt ağlarda olduğu gibi internet üzerinde de çalışma grubu oluşturulabilir, neydi bi ara .... netin durumu öyle :))
"MASTER BROWSERS" yukarıda anlatılan bilgilerin veritabanını tutar. İki türü vardır. DOMAIN MASTER BROWSER ve LOCAL MASTER BROWSER. DMB alan içindeki veritabanını tutar ki bu genellikle bir çok alt ağın eşgüdümlü çalışmasını sağlamak içindir. LMB ise bir altağın veritabanını barındırır, aynı anda DMB ile bilgi alışverişinde buluanarak diğer alt ağlardaki veritabanı bilgilerine de bakabilir. Altağ olayına hazır girmişken BROWSE olayının broadcast mesajları ile yapıldğını hatırlatayım dedim, bildiğiniz üzere bunlar yönlendirilemezler (bkz. TCP/IP) dolayısıyla bunların routerlardan dışarı çıkamazlar. Ancak bazıları aynı ağ parçası üzerinde birden çok altağ oluşturabiliyor, hal böyle olunca memleketim insanlarına bo ile ıvır zıvır ile hack yaptım diyeceğiniz yerde biraz LM olayına kassanız da adam olsanız diyorum. Bilindiği üzere güzel bir iki olay yaşanmıştı geçtiğimiz yıllarda... Aynı ağdaki farklı altağ(!) kullanıcıları olan hatırı sayılır büyüklükteki firmalar uçuklamıştı ;) neyse biraz daha konusursam içeri atılıcam... Master Browserlar (DMB ve LMB) dinamik olarak, BROWSE eden makinenin yükünü çekecek kapasiteye bağlı olarak düzenlenen bir algoritmayla seçilir. Bir de BACKUP Browserlarımız vardır ki ne işe yaradığını adından da anlayabiliriz, bunlar Master Browserların terk-i diyar etmelerinden sonra kıymete binerler. Master Browserlar ile senkronizedirler. Micro$oftun bize sunduğu nimetlerden olan DOMAIN CONTROLLER ise IBM ve M$ un bu olayı LAN-Manager protokolune uyarlamasıdır. ALAN güvenliğini sağlar, NT nin bu alandaki payı yadsınamaz.
[Samba]
Samba bir ağda windows NT, Warp, NFS veya Netware sunucularının yaptığı işleri yapabilir. SMB sunucusu, windows NT ve LAN-manager tarzı dosya ve yazıcı paylaşımını SMB istemcilerle (windows 9?, windows nt WS, smbfs... ) yapabilir. NetBIOS ad sunucusu sayesinde ağınız için "master browser" olabilir. FTP gibi çalışabilen SMB istemcisi ile PC kaynaklarına unix, netware ve diğer işletim sistemlerinden ulaşabilirsiniz (bana kalırsa karma ağlar için mükkemmel bir çözümdür). PC lerinizi yedekleyebilirsiniz (bunu çok tuttum windowsu kurtaran adam ;) NT nin yaptığı bazı(!) yönetim özelliklerini nt workstatin ve serverlar için yapabilir. Samba bunları yaparken bildiğiniz gibi TCP/IP protokolüne bağlıdır, bunu desteklemeyen durumlarda samba bir şey yapamaz.
Dökümanda yazdığına göre samba şu işletim sistemleriyle uyumlu olarak çalışabiliyor: Linux, SunOS, Solaris, SVR4, Ultrix, OSF1, AIX, BSDI, NetBSD, Sequent, HP-UX, FreeBSD, NeXT, ISC, A/UX, Intergraph, SGI, Domain/OS, DGUX, UXP/DS, UNIXWARE, SVR3V4, SCO, WNX, RiscIXRISCO, Motorola 88***/9**, MachTen, ConveX, Cray, B.O.S, Amiga, Apollo sr10.3, Altros 386/1000. Diğerlerinde çalıştırabilmek için biraz _hacker_ olmak gerekiyormuş...
Bu kadar okuduğunuz şeylerin hangisinin daha güvenli olduğunu anlamanız gerek, ben gene biraz anlatayım. Eğer"security = SHARE" gibi bir opsiyonunuz varsa, Bütün paylaşılmış kaynaklarınızın hangi parolanın hangi kaynakla ilişkili olduğu, hangi kullanıcıların geçerli olduğu (buradaki secim `all users` olabilir, ama olmasa daha iyi olur, çünkü bu takdirde herhangi bir kullanıcı erişebilir.) bilgileri tutulur. Bu genellikle küçük bağımsız gruplar oluşturmak için düşünülmelidir. Eğer "security = USER" veya "security = SERVER" gibi bir seçiminiz varsa bütün paylaılan kaynaklar geçerli bir kullanıcı adı/parola ikilisi ile denetlenecektir. İstmci tarafından bunun Microsoft Domaini olduğu sanılır (emule edilir). Zaten istemcinin aman git Windows NT SAM dosyasından beni kontrol et diyebilme şansı da yoktur. Basit bir şekilde güvenlik mekanizmasına devam edecek olursak, tek bir sunucuda kullanıcı adı/parola ikilisi tutulur. İstemci işletim sistemleri genellikle kullanılmadan önce bir parola istemek suretiyle güvenliği sağlar, ek olarak kullanıcılara bir sunucu yetmiyormuş gibi :) başka sunuculara da erişim ister. Bütün bu sunucular için aynı şifreyi koymak ne kadar aptalcaysa kullanıcılara bu kadar şifreyi ezberleyin demek de o kadar aptalcadır. Buradaki ihtiyaç anlıyacağınız üzere dağıtılan bir onaylama veritabanından ibarettir. Çeşitli gruplar içeren hiyararşik bir yapıya sahip olmalıdır. Samba bunu başarır. Onaylama(authentication) şekli bir ağ için belki de en önemli noktadır. konuk bilgisayara dayalı bir sistem mi? sunucu bilgisayara dayalı bir sistem mi? yoksa her ikisi demi? NIS : Win95 ve Windows For Workgroups ve diğer birçok istemciler için Samba DOMAIN CONTOLLER olabilir ve password veritabanını NIS ile paylaşabilir. NT nin olayı farklı; KERBEROS: "US only" yazısını görünce incelemedim:).
Peki sambanın avantajlarına bir göz atalım. Betiklerin yazılabileceği bir SMB istemcisi, otomatik olarak ~EV dizini ve yazıcı paylaşımı, gelişmiş timeout algolaması :), guest girişi, Konuk tabanlı veya kullanıcı/parola tabanlı güvenlik, dinamik ayarlar. Aşağıdaki programlar samba pakedi ile birlikte gelir.
SMBD, SMB sunucumuzdur. İstemcilerle yapılan tüm bağlantıları taşır. İzinler, kullanıcı adları, dosya vs.. veritabanı ile önyüz oluşturur.
NMBD, NetBIOS ad sunucusudur, istemcilerin sunucularına bağlanmalarını sağlar.
SMBCLIENT: betiklerin oluşturulabildiği komut satırı SMB istemcisidir. testler için yazıcı filtreleri için ve otomatikleştirilen olaylar için iyi bir çözümdür. Gerçekte çoğu paralı CIFS destekli istemcilerden çok daha iyi işler yapabilmektedir.
SMBRUN: Sunucunun dış programları çalıştırabilmesini sağlar.
TESTPRNS: yazıcıyı sunucunun erişimini test etmesini sağlar.
TESTPARMS: Samba ayar dosyasında ki sözdizimini kontrol eder.
SMB:CONF: bahsedilen ayar dosyası..
Bildiğiniz gibi tüm M$ ağı SMB(Server Message Block) üzerine kurulmuştur. SMB görevini NetBIOS u TCP/IP üstünde kullanarak yerine getirir. M$ da bu tarz işler yapar. NetBIOS broadcast mesajlar ile iş görür. Eğer NetBIOS u TCP/IP üstünde işletiyorsak bu UDP (User datagram Protocol) tabanlı bir iletişim olur. UDP mesajları hem broadcast hem de unicast olabilir. Normal olarak :)) Yalnızca unicast UDP mesajları routerlar tarafından yönlendirilebilir.ayar dosyasındaki "remote announce" parametresi browse isteklerinin diğer alt ağlardaki ulaşmasını unicast UDP mesajı kullanarak yapmasını sağlar.
SAMBAnın tek olarak SMB sunucusu olarak kullanıldığı bir ağda en az bir nmbd WINS sunucusu olarak ayarlanmalıdır. Eğer her ağ kendi samba WINS sunucusunu kullanacak şekilde ayarlamışsa, ağımızı ancak "remote announce" ve "remote browse sync" parametreleri ile diğerleriyle ilişkili kılabiliriz. Ancak bu durumda istemcilerimiz yalnızca yerel ağdaki isimleri çözebileceklerdir. Eğer uzak ağların da ismlerini çözmeleri isteniyorsa DNS (Domain name server) kurulmalıdır.Bu kurulum tavsiye edilmemektedir. Eğer bir tek WINS sunucusu ayarlandıysa bu parametrelere gerek kalmaz.
Üzgünüm SAMBA WINS sunucusu MS_WINS yanıtlarını desteklemiyor. İşte bu yüzden en az bir nmbd sunucusu WINS sunucusu olarak ağde yerini almalıdır. Broadcast mesajlarının yapısı gereği BROWSE listesinin kararlı bir yapıya ulaşması bir çok dakikanızı alabilir (F5 hikayesi).
[REMOTE ANNOUNCE]
Bu parametre smb.conf dosyasına tüm NetBIOS isimlerinin uzak networklere duyurulmasını sağlamak amacıyla eklenir.
remote announce = x.x.x.x [y.y.y.y] ...
remote announce = x.x.x.x/WORKGROUP1 [y.y.y.y/WOKGROUP2] ...
x.x.x.x ve y.y.y.y birden fazla LMB nin IP adresi veya o alt ağların Broadcast adresi olabilir, netmask'ın 24 bit olduğu bir ağ kuracak olursak LMB IP si 192.168.1.10 veya Broadcast adresi olarak 192.168.1.255 kullanabiliriz.broadcast adresini yazmak pek mantıklı değildir, normal şartlar altında trafiği biraz karıştırır :).
WORKGROUPx bunu yazmak tercihe kalmış. Eğer eklenirse NetBIOS isimleriniz sanki o çalışma grubunun bir üyesiymiş gibi görülecektir. Bu alan adı çözümlemelerinde kimi zaman problem çıkarmaktadır ve tavsiye edilmez.
REMOTE BROWSE SYNC
Bu parametre smb.conf dosyasına başka bir LMB ye duyuru yapmak ve onun browse listesini senkronize etmesini sağlamak için kullanılır. Bu seçenek sadece LMB ile aynı anda aynı network biriminde ise çalışır.
remote browse sync = x.x.x.x
x.x.x.x duyuru yapılcak uzak LMB ın ip si veya broadcast adresi olabilir. Yukarıdaki broadcast için söylenenler geçerlidir.
[WINS]
WINS kurulumu Microsoft ağları için olmassa olmaz sunuculardandır, (NT üstünde veya SAMBA üstünde çalışsın farketmez yeter ki olsun ;) NetBIOS kullanan makina kendi ismiyle birlikte bir tür değerini(onda kullanılabilecek her servisin türü) ile birlikte kayda geçirir. Mesela bir makine kendi adını 0x03 olarak kayıt etti, bu kayıt duplicate olamaz (nospoof ;) ve verdiği servisin türünü de (diyelim ki yazıcı paylaşımı) 0x20 olarak kayıt etti. Hani ağ yazıcısı eklerken sadece yazıcısı olan makineler gözükür ya bu hep WINSin marifeti olmalı ;).Bir teknik konu tüm NetBIOS isimleri 16 karakter uzunlugundadır, 15 karakterini siz seçersiniz. Seçmediğiniz her karakter için boşluk karaktei eklenir, son karakter ise türü tanımlar.
Peki WINS in yararlarına geçelim. Bir istemcinin ağa bağlanmak istediğini düşünelim. O ağdaki isimleri çözebilmek için NetBIOS isimlerini broadcast UDP mesajı ile sorgulamak isteyecektir. WINS kurulu ve istemcide tanımlı ise broadcast mesaj atma yerine WINS ten ona kayıtlı olan makine isimlerini ve türlerinin listesini alacaktır ki bu da hatrı sayılır miktardaki broadcast trafiğini engeller. Bir deneme sırasında HUB ın kilitlendiğine şahit oldum gerçi eski püskü bişeydi ama demek ki yararlı :). Eğer bunu WINS ile yapmak istemiyorsanız elinizle lmhost dosyasını ayarlamanız gerekecek. WINSin yararlarına devam edersek diğer LMB ile browse list senkronizasyonu sağlar.LMB ler anlattığımız üzere DMB ile senkronize olmak sorundadır, ve WINS her LMB nin DMB sini bulmasına yardım eder. Anlaşıldığı üzre yalnız bir çalışma grubunda bunu yapabilirsiniz.DMB NT domaini değildir, ama ileride ağdaki güvenliği sağlamakta işimize yarayacak.
WINS in doğru düzgün çalışabilmasi için eksik olan bir tek şey kaldı Evet bildiniz TCP/IP. Her bir istemci ve sunucu WINS lerini doğru kullanabilmek için doğru ayarlanmış :) bir TCP/IP protokolüne gereksinim duyar. WINS i ayarlanmamış bir makine broadcast kullanarak zorda olsa işini görür, ancak TCP/IP si ayarlanmamış bir makine anca elektrik harcar ;)
Bu kadar geyikten sonra gidin ve samba ayar dosyanızız [global] bölümüne " wins support = yes " ekleyin, tabi sambanızı WINS olarak kullanmak istiyorsanız. Eğer samba nızı wins sunucusuna kayıt ettirmek istiyorsanız [global] kısmına wins server = x.x.x.x ekleyin (x.x.x.x wins in ip numarasıdır) Umarım ikisini aynı anda kullanmassınız ;-).
[Protokol seçimi]
Microsoft ağları oluşturuken yapılan hatalar oldukça fazladır, her ne kadar sorunsuz gibi gözüksede çoğu kullanıcının ve ağ yöneticisinin atladığı bir nokta vardır. Ağda oluşan problemlerin bir kısmını yanlış protokol seçimi veya birden fazla protokolün bilinçsizce seçimi neden olmaktadır. NetBIOS makineleri 15 dakikada bir (normal şartlar altında :) LMB ve DMB ler arası bir seçim yapar. Bu seçimin sonucu toplanan veriler sonraki işlem sırasında kullanımı tayin eder. 15 dakika güzel çalışan ağımızda sonraki 15 dakika kum saati neden görüyoruz acaba :) en büyük kararlı bir ağ yapısı sunan micro$oft (birinin beni düzeltmesi gerek yoksa bu kadar yerdiğim bir sistem yüzünden para kazanamaz oldum !) Şöyle bir hata yapalım. Windows makinemize hem TCP/IP hem de IPX kuralım. NetBIOS u her iki protokolün de kullanablieceği şekilde aktif hale getirelim. LMB sorguya geçtiği zaman genelde IPX TCP/IP ye tercih edilir. Böylece NetBIOS IPX üstünden çalışmaya başlar. Samba bu durumda eli kolu bağlı durumdadır. Böylece LMB olma şansını kaybeder, LMB olarak fonksyonelliğini yitirince sadece TCP/IP ile çalışabilen makinelerde problem ortaya çıkar. İyisi mi bir protokol kullanın.
Bir istemci nin isim çözümlemesi çeşitli yollarda yapılabilir, bildiğiniz gibi linux de hosts, bind seçeneği yani önce /etc/hosts dosyasına bak olmassa alan adı sunucusu kullanmasını sağlar. Diğerlerinde de benzer sıralama vardır. WINS, LMHOSTS, BROADCAST. LMHOSTS /etc/hosts a oranla daha zor ayarlanır. En iyi çözüm WINS olacaktır. Bunların yanında windows makineler icin de DNS tanımlaması yapılabilir (yapılması da uygundur ama WINS ile birlikte) sadece DNS in tanımlı olduğu micro$oft ağında tür sınırlamaları ile karşılaşılır.Bu sıralamayı SAMBA WINS sunucumuza nasıl anlatacağız?
name resolve order = host lmhosts wins bcast
öntanımlı olarak gelmektedir. Önce host dosyasına bakar, sonra lmhosta sonra winse sorar olmadı bir broadcast tüm network cort :)) tabi bu kadar kolay değil ama siz broadcast mesajlarını sınırlayabilirsiniz. Bcast parametresini çıkarın yeter. Host önemli bir parametredir. Unix in gethostbyname() fonksiyonunun çağrılmasıdır ve /etc/host.conf, nsswitch.conf, resolv.conf ile kontrol edilir.
[ALT AĞLAR]
Projemizi oluşturalım. Üç tane alt ağımız olsun 1. ağda 5 makine (birisi DMB) 2. ve 3. ağda 4 makine ve bu iki ağ iki router ile 1. ağa bağlı. bu makinelerin hepsini yukarıdaki bilgiler ışığında deneme deneme ayarlayalım. Bütün makineleri aynı çalışma grubunda olarak düşünelim.
Ağımız şöyle bir şey olacak:
N1.1 N1.2 N1.3(DMB) N1.4 N1.5
---- ---- --------- ---- ----
|| || || || ||
-----------------------------------------------ALT AĞ 1
|| ||
++++++++ ++++++++
+Route1+ +Route2+
++++++++ ++++++++
|| ||
-----------------------ALT AĞ 2 -----------------------ALT AĞ 3
|| || || || || || || ||
N2.1 N2.2 N2.3 N2.4(WINS) N3.1 N3.2 N3.3 N3.4
Evet sanırım artık gözünüzde de canlanıyor :) makinelerimizi açalım ve neler olduğuna bakalım. N1.3, 1. alt ağda; N2.3 2. alt ağda; N3.3 3. alt ağda WINS olsun.(namı değer kdeni ağ parçalarının LMBleri ). Makineler paylaşılan kaynakları broadcast mesajı halinde yollamaya başlar ve LMB ler bunları kaydeder. Hangisinin isminin ne olduğu ve hangş servisi verdiği. Her bir alt ağ için her bir LMB kendi alt ağları için yetkili isim çözümlemesi yapar. Yerel ağdaki makinelerin görünmesi local broadcasta bağlıdır, broadcastların Routerlardan geçemediğini düşünürsek diğer ağlardaki makinelerin aynı çalışma grubunda olmasına rağmen görülmemesinin nedeni anlaşılmış olur.Diğer ağdaki browse listesi alındığında gelen isim çöümlmesi ağdaki bilgisayarlar için yetkisizdir (non-authoritative.) Bu noktada hiçbir alt ağ birbirlerini aynı grupta göremezler. Ağ yapılandırılması bu kadarla bitmiyor tabi. Düzgün ayarladık ya... 2. ağın LMB si atağa geçer ve WINS e sorar. Benim DMB 'm kim? WINS de DMB nin ip adresini verir. Artık broadcastı bıraktık, UDP port 138 i kullanacağız. DMB ye 2. alt ağın LMB si ben 2. ağın yetkili LMB siyim der ve listesini senkronize eder.(NetServerEnum2) DMB bunu anladığı anda senkronize işlemine geçilir ve artık alt ağ 1 ve alt ağ2 birbirini görebilmektedirler (non-authoritative olarak tabi) Aynı olayları 3. alt ağ neden yapamasın :) ve sonucta herkes mutlu sona ulaşır. Birbirlerini non-authoritative olarak görürler tabi. Senkronize işlemi böylece devam eder. 3. ağın LMB si 1. ağ ile senkronize olduğu anda 2. ağı görebilir ama 2. ağdaki 3. ağı göremez. Bi senkronizeye daha ihtiyaç vardır. Şimdi routerların bozulduğunu düşünelim. Makine isimleri senkronize olduğu icin alt ağlardan yapılan erişimler yarım saat parçalar halinde dolaşır (sonuç olumsuzdur) makine isimleri hala ağ komşularında gözüktüğü halde. Eğer WINS in tarafından kesilirse bu durumda yerel ağ diğer ağlardan ayrılmış olur. Bu durumda DNS e de erişim olanağı ortadan kalkar.
[ÇALIŞMA Grubu]
Samba sunucumuzu bu sefer DMB olarak ayarlayalım. Burada DMB olan samba sunucumuz NT nin oluşturduğu Primary Domain Controller değildir. Ama NT Domaini içinde aynı işi görürler. Samba sunucumuz LMB lerden aldığı listeleri toplar. Bu makinenin asıl işi alt ağların bribiri ile senkronizasyonunu sağlamaktır. Her çalışma grubu için ayrı DMB olması gerektiğini söylemeye gerek var mı bilmiyorum. Bunun ayarı için gene samba ayar dosyasına geçiyoruz ve [global] bölüme
domain master = yes
satırı ekliyoruz. Tercihen aynı makine ait olduğu alt ağ için LMB de olmalı. Demek ki ayar dosyamız şöyle oluşacak:
[global]
domain master = yes
local master = yes
preferred master = yes
os level = 65
Gene isterseniz aynı makineyi WINS olarak kullanabilirsiniz. Diğer alt ağlardaki LMB lerin ayarlarında dikkat etmeniz gereken nokta ise "domain master = no " opsiyonu. Burada yeni karşılaştığımız preferred master ve os leel parametreleri nmbd nin os level i 65 olarak belirtilen samba serverı browser olarak seçebilmesine yardım ediyor. Eğer LMB olarak bir NT makine kurmak isterseniz samba ayarlarını şöyle yapmalısınız:
domain master = no
local master = no
preffered master = no
os level = 0
DOMAIN için ayarlar:
Eğer samba sunucunuzu bir NT domaini içinde kullanacaksanız, DMB olarak ayar yapmayın. Primary Domain Controller öntanımlı oalrak bu işi o domain için yapıyordur zaten.Eğer samba sunucunuz DMB NetBIOS isimlerini WINS ile PDC nin yerine kayıt ederse bir çok aksaklık olabilir. Bu sebeple ayar dosyamız şöyle olmalı:
somain master = no
local master = yes
preferred master = yes
os level = 65
Her ne kadar locla master olması için ayarlarımızı yaptıysak da bu aslında bir kavga sonucu bellio olur :) Eleme broadcast mesajları ile yapılır. Anca kön tanımlı olarak samba nın öncüllüğünün az olması diğerlerinin LMB olması anlamına gelmektedir. Bunu engelllemek için os level parametresi kullanmıştık. 0-255 arası olan bu seviyeler sambanın savaşı kazanması için ayarlanmalıdır. Bu seviyeyi "2" olarak yapmak WFW ve win9* makinelerin kaybetmesine yeter ancak NTAS 32 seviyesini kullanır. Bu yüzden 34 olarak seçmek bunları da alt edecektir. Ancak hala bir tehlike vardır. Diğer samba sistemler! Bu yüzden bu ayarlar a ağa göre değişir. Ağ yöneticisi olmak o kadar kolay değil :)).
[DOMAIN MASTER SAMBA]
Eğer Samba sunucunuzu DMB olarak ayarladıysanız LMB olarak da ayarlamanız tavsiye edilir. Çünkü samba sunucunuz tüm yerel ağınızda ya da geniş alan ağınızda DMB olabilmek için önce LMB olmak zorundadır (broadcast hesabı ;) Dikkat edilmesi gereken bir nokta da Bir NT domaini adıyla bir çalışma grubunun adının aynı olmamasıdır. Samba master duyurularını 12 dakikada bir yapar ve LMB ler ile birlikte senkronize olur. Sambayı DMB olarak kullanacaksanız Os level'i yüksek tutmaya çalışın. WINS kurmayı da unutmuyoruz değil mi :) isterseniz WINS olmadigi zaman broadcast ile neler olduğuna bir bakalım. LMB ler diğer alt ağlarda bulunan DMB lere ulaşamaz, böylece onların ağındaki NetBIOS isimleri çözümlenemez. WINS kullanılırsa LMB istek sırasında diğer LMB lerin DMB ye kayıtlı olduğu sürece WINS ile bağlantı kurup buradan ip çözümlenecektir.
[NETWORK LOGON]
Yukarıdaki bilgiler yardımyla SAMBA sunucuyu master browser yapacak şekilde ayarlayın. Ihtiyacınıza göre LMB/DMB. WINS sunucu kurun. Bütün istemcilerinizde bu iki ayarı yapan.
Şimdi netlogon isimli bir dizini paylaştırmalıyız.
[netlogon]
path = /boot/netlogon
writable=no
guest ok = no
Uyarı: Bu dizine yazma hakkı vermeyin, buna ihtiyaç yoktur. Linux güvenlik anlayışında da ihtiyacınız olmayan bir servis vermek güvenliği bozar. Gene bir güvenlik tedbiri olarak sıradan kullanıcıların dosyaları değiştirmemesi veya yeni dosyalar eklememesi için bu kullanıcıların girişinin engellenmesi uygundur.
[global]
domain logons = yes
logon script = scripts%U.bat
Bu eklentilerle alandan gelen logon isteklerine cevap verecek hale getirdik ve logon sağlandığı anda çalışacak betiklerin yerini belirttik. Bunların kusursuz olarak çalışabilmesi için "securetty = user" veya "securetty = server" olmalı. Share seviyesindeki güvenlik doğru çalışmayabilir.
Çoğu kullanıcı "roaming profiilleri" kullanmak ister. O zaman yapması gereken değişklik
logon path = /boot/profile/%U
satırı iş görücektir. Eğer başka bir sunucuda ise
logon path = \sunucupaylaşımadıtamyol%Ubaşkadizin
şeklindedir.Bazı istemciler bunların gerçek olup olmadığını kontrol etmek için browse etmeye çalışıyorlar. Bu yüzden bu dizinler browseable olmalı.
Win9? Için ayarlar:
Yeni bir kullanıcı giriş yaptığı zaman normal şartlarda c:windowsprofileskullanıcı_adı şeklinde bir dizin açılır, bu dizinde start menu, desktop, nethodd, vs bulunur.. Ve user.DAT isimli kayıt dosyası oluşturulur.Windowsun dosya isimleri konusundaki acizliği yüzünden global bölümne bir iki kod daha eklemek gerekecek.
preserve case = yes
short case preserve = yes
case sensitive = no
control panel - - > passwords bölümünde User profiles sekmesinde gerekli olan roaming profile ayarlarını yapınız. Reboot a izin vermeyin!!! sonra control panel - - > networks - - > client for M$ networks sekmesinde preferences bölümünde Log onto NT domain bölümünü seçin ve Primary login i Client for M$ network yapın. Şimdi rebootunuzu yapabilirsiniz.şimdi herşey yolunda giderse biraz değşiik bir giri ekranıyla karşılaşacaksınız. Domain / username /password artık domaine logon olabilirsiniz.Eğer erişiminiz garantilenirse (şifreniz kabul edilip logon olmanıza izin verilirse :)) windowsunuz daha önce böyle bir kullanıcı logon olmadı diyecek ve ayarları kaydedip etmemesi gerektiğini soracak. Tipik olarak windowsun sorduğu her soruya verdiğiniz cavabı verin evet i tıklayın. Desktop, start menu vs.. dizinler istemcilerde yerel olarak cache edilir.yeni olanı eskisiyle değiştirir.eğer bu dizinleri sadece okunabilir yaparsanız her login/out oluşunuzda onları değştiremediğinize dair hata mesajı alırsınız. Umursamayın böylece uzun süre windowsunuzu çökmeden kullanabilirsiniz. Eğer bu profilleri sıfırlamak isterseniz HKEY_LOCAL_MASHINEWindowsCurrentVersionProfileList i biraz değiştireceksiniz. Bir probleminiz olursa Debug seviyesini 10 yapıp deneyin ve hata mesajını bilir bir kişiye söyleyin.
NT WS 4.0 için ayarlar:
Nt de işler biraz daha değişik, NT workstation a login olan bir kullanıcı için Ntuser.dat oluşturulur. Logon path icin yapmanız gereken değşiklik ise "\NTServ%Lprofile" dan ibarettir. Burada NTServ samba sunucumuzun adı :). NT de bir güzellik daha yapabillriz."logon drive" parametresi login olduğu zaman home dizinini bir drive a bağlamak için kullanılabilir "mesela z:" NT profili bir dizinde tutulur. PDS uzantılı bu klasörlerin oluşturulması sırasında samba sunucumuz aciz kalabilir. Bu yüzden bunu el ile oluşturmak zorundasınız. Bunun için bir script yazabilirsiniz. Bu pds nin ne işe yaradığını ben bulamadım. Bilen varsa söylesin bir zahmet. Bu profillerin başarılı bir biçimde yüklenebilmesini sağlamak için iki yolunuz var. Birincisi "security = user" ve "encrypt passwords = yes" parametreleriniz kullanmak. Ikincisi ise gerçek bir nt sunucu kurup, "security = server" ve "password server = xxx.xxx.xxx.xxx" parametreleri. Buradaki xxx.xxx.xxx.xxx sizin nt sunucunun ip numarasıdır.
[DOMAIN istemcisi]
Çoğu microsoft ağlarında en az bir PDC (Primary Domain Controller) ve en az bir BDC (Backup Domain Controller) bulunur. Şimdi samba sunucumuzu PDC ye kayıt ettireceğiz. Bunun için önceliklesistemimizi açıklayalım. Samba sunucumuzun NetBIOS isminin serv1, katılacağı alanın adının da DOM olduğunu kabul edelim. PDC ve BDC lerin isimleri sırasıyla DOMPDC, DOMBDC1, DOMBDC2 olsun. Şimdi samba ile alakalı tüm daemonları kapatıyoruz. Ve şu komutu çalıştırıyoruz.
#smbpasswd -j DOM -r DOMPDC
Burada DOMPDC, SAM(security acces manager) dosyalarına yazma hakkı bulunan yegane makinedir. Şimdi şöyle bir şey göreceksiniz.
Smbpasswd: Joined domain DOM.
Başarılı olduğunun kanıtıdır :). Bu komutun ne yaptığına gelince MAPCP (machine account password change protocol) ile birlikte yeni bir rastlansal MAP (machine account password) yaratır. Bu şifre normal şartlarda "/usr/local/samba/private" dizinindedir. Şöyle bir dosya ismi olacaktır.
DOM.SERV1.mac yani (ntdomain).(samba server).mac . bu dosya root tarafından sahiplenir ve başka hiçbir kullanıcıya okuma izni verilmez. Şimdi samba ayar dosyamızı değiştirelim.
security = domain
workgroup = DOM
password server = DOMPDC DOMBDC1 DOMBDC2
Ayarlarımız bu kadar samba daemonlarını tekrar çalıştırabiliriz.
[M$ ağları ve enkriptasyonu]
LanManager protokolünde kullanılan emkriptasyon ile UNX in kullandığı enkriptasyon birbirine yakındır. Sunucu kullanııc şifrelerinin karıştırılmış olarak bir dosyada saklar. Bu kullanıcıların enkripte edilmemiş şifrelerini alıp Tüm karakterleri büyütüp, ya 14 byte a kadar kesmekle veya 14 byte a kadar null karakterlerle doldurmakla başlar. Bu 14 byte lık değer iki tane 56 bitlik DES anahtarı ile 8 bytlık bir değere ulaşır.Bu değer hashed password olarak bilinir. Windows NT şifresi kullanıcı şifrelerinin unicode kodlamasının MD4 hash tablosu yardımıyla tersinir olmaksızın 16 byte olarak tutulmasıyla oluşur.
Bu kısa açıklamanın ardından ağımıza gidelim ve neler oluyo bakalım. Bir istemcininn samba paylaşımını mount edeceği durumu göz önüne alalım. Sunucu ve istemci aralarında kullanacakları protokolü belirlerler.Samba bu isteğe rastlansal 8 bytlık bir değer ile karşılık verir. Bu "challende" olarak bilinir ve karşılıktan sonra da samba sunucuda tutulur. Har istmin "challenge" ı değişiktir.
İstemci yukarda anlatılan 16 bytlık hashed passwordu sonuna 5 bytlık null değer ekliyerek 3 tane 56 bitlik DES anahtarı ile 8 bytlık challenge değerini encripte eder ve bu istemcinin "response" udur.
SMB çağrılarında [SMBsessionsetuX/SMBtconX(security=user/security=share)] response samba sunucuya gönderilir.NT protokolünde ise bu değerler her iki hash değerleri iki tane 24 bytlık değerler oluşturmak üzere SMB çağrılarında gönderilir.Bundan sonra Samba işe koyulur ve kendi smbpasswd dosyasındaki 16 bytlık hashed değerleri ilk gönderdiği 8 bytlık değeri kullanarak 24 bytlık değere ulaşır. Sonra istemciden aldığı 24 bytlık veriyi bulduğu 24 bytlıkdeğer ile karşılaştırır. Eğer eşleme tutarsa istemcinin erişimine izin verilir. Tersi durumda istemcinin erişimi engellenir(DENY). Dıkkat edeceğiniz gibi samba sunucu enkripte edilmemiş şifreyi bilemiyor. 16 bytlık hashed değeri de networkte dolaşmıyor, yani güvenlik üst seviyeye çıkıyor. Bazıları için bir iki şey daha söyleyelim. SMB enkripte etmeden parolayı ağa yollamaz, ancak 16 bytlık hash değerlerini diskte saklar. Bu bir potansiyel tehlikedir. Her nekadar bu hash değerlerinden de enkripte edilmemiş parolaya ulaşılamasada sunucuda izinsiz erişimi sağlamakta kullanılabilir. Bu yüzden bu hash dosyasının güvenliğini sağlamak zorundasınız. Ancak bu söylediğim her zaman doğru değil. Eski istemcilerle uyumu sağlamak için encriptasyonu kaldırıyoruz ki bir güvenlik açığı oluştuğu malum. Peki neden encripte etmeden kullanalım? Aslında her ikisinin de kednine göre iyi/kötü yanları var. Enkriptasyon kullanıldığında snifferlar bir şey yapamazlar. WinNT sistemler SMB enkriptasyonu kullanmayan sistemleri pek sevmiyorlar ve her bağlantıda şifre istiyor, biraz sıkıcı. Enkriptasyon kullanılmadığında ise şifreler disk üzerinde tutulmuyor. Zaten unix in doğası gereği telnet ftp, mail vs.. standart servisler enkripte edilmiş şifre kullanmazlar, hem unix henmde SMB kullanıcısı olan birinin şifreleri aynı olduğu sürece biri için enkriptasyon kullanmak pek mantıklı değil :) unixin bu kötülüğü için secure shell çıkmış, anlatırız bir ara.NT40 servis pack 3 ile birlikte gelen değişiklik ile enkripte etmeden şifreyi asla yollamıyor bu yüzden registry dosyasını düzenlemeniz gerekecek ya da samba ayar dosyasını enkripte edecek şekilde ayarlayacaksınız. Karar sizin. Biraz da password dosyasından bahsedelim. Unixin hash yöntemiyle SMB nin farklı olduğunu söylemiştik. Unixde bu hash değerinden geri dönüp şifreyi bulmak imkansızdır.Bu yüzden samba için ayrı bir password dosyasının olması şarttır. Bu durumda unix kullanıcıları ile SMB kullanıcılarının arasında bir senkronizasyon gereklidir. Bu problemleri ortadan kaldırmak için mksmbpasswd.sh scriptini kullanırız şöyle ki:
cat /etc/passwd || mksmbpasswd.sh > /usr/etc/smbpasswd
burada verilen yollar sizin sisteminize göre değişebilir. DOsyanın sahibi root olmalı ve modu 600 olmalıdır. Bulunduğu dizinin sahibi de root ve modu da 500 olmalıdır.
username:uid:X...X:X...X:[Account type]:LCT:Long name
Burada önemli bir nokta da her ":" arasında 32 tane "X" karakteri var. ilk 32 tanesi LANMAN protokolü, ikinci 32 tanesi NT için hash password dizisidir. Bu X karakterleri dosya yaratldığında oluşur. Ve Kullanıcı şifre koyunca bu karakterler yerini hexadecimal karakterlerle değişir. Eğer kullanıcıya password vermek istemiyorsanız (asla düşünmeyin) ilk 11 karakteri şöyle değiştirin:
UID:GID:NO PASSWORDX...X:X...X:[U ]:LCT-00000000:name:/home:/shell
ve samba ayar dosyasında şöyle bir değişiklik yapmanız gerekecek.
null passwords = true
Referanslar:
Samba 2.0.5a Documents (asıl kaynak)
Request For Comments (standartlar ve protokoller için.)
http://www.microsoft.com/intdev/cifs (cifs protokolü)
http://samba.org (asıl kaynak)
news://comp.os.linux.networking (netwrok kurulum bazı noktalar)
news://comp.protocols.smb (çeşitli hatırlatmalar)
Kullanılanlar:
P100+48MB ustunde redhat6.0 samba(LMB)+samba(wins)+samba(profile+home+logon server)+dns+dosya sunucusu+ip masq.
P166MMX+64MB ustunde win95 SMB client ve WinNT(PDC+SMB client+logon server)
ağ bileşenleri iki tane 10 MB ağ kartı+kros kablo
Answered
554 days ago |
Read Comments (4)
Read answer