Samba Server: Korak za korakom Ying Zhang, prevedel: Damir Horvat, damir.horvat@ibe.si 19. september 1999 Prevod skripte "Samba Server, Step-by-Step Guide" by Ying Zhang ______________________________________________________________________ Kazalo 1. Zahvala 2. Predstavitev 2.1 Pravno stališče 2.2 Ozadje 3. Zahteve 3.1 Nastavitveni načrt 3.2 Kako do Sambe 4. Namestitev Sambe 5. Kreiranje 5.1 Nov uporabnik in skupina 5.2 Imenik 5.3 Imenik 5.4 Pregled datoteke 5.5 Kreiranje datoteke Imhosts 6. Uporaba SWAT 6.1 Varovanje SWAT 6.2 Poganjanje SWAT 6.3 Nastavitev Sambe 7. Zagon Sambe 7.1 Testiranje Sambe 8. Nastavitev Windows sistema 9. Varovanje Sambe 9.1 S Sambo 9.2 Filtriranje portov 9.2.1 Uporaba ipfwadm 9.2.2 Uporaba ipchains 10. Zaključek ______________________________________________________________________ 1. Zahvala Hvala vsem, ki so me kakorkoli spodbujali k uporabi Linuxa in Sambe, in mi pomagali s svojimi nasveti in odgovori na moja, ne vedno pametna vprašanja. Hvala Ying Zhang-u za njegovo Samba Server, Step-by-Step Guide skripto. Hvala tudi celotnemu timu razvijalcev Sambe za dobro opravljeno delo! 2. Predstavitev Ta dokument vas bo popeljal skozi nastavitev Sambe na vaši Linux mašini. Na koncu tega dokumenta boste imeli: ˇ nastavljeno Sambo server na vaši Linux mašini s skupno rabo ˇ nastavljene Windows 95/98 kliente za dostop do Linux mašine Ta dokument (HOW-TO) ni zamenjava za odlično dokumentacijo, ki pride skupaj z distribucijo Sambe. Namenjen je hitro in delujočo nastavitev Sambe. Preberite tudi originalno dokumentacijo Sambe! 2.1. Pravno stališče Ne jamčim točnost in pravilnost informacij, ki jih predstavljam v tem dokumentu. V nikakršnem smislu nisem povezan z Samba team-om in vse kar opisujem tukaj je v osnovi tisto, kar sem naredil za delovanje Samba serverja na moji Linux mašini. Ne krivite mene, če se karkoli izjalovi. Vse delate na lastno odgovornost! Po drugi strani pa, če imate kakršnokoli vprašanje, komentar ali predlog, mi lahko pošljete email na damir.horvat@ibe.si. Po svojih najboljših močeh se bom potrudil in vam odgovoril, ali vas vsaj usmeril k boljšim izvirom pomoči. Dokument je preveden z dovoljenjem avtorja. 2.2. Ozadje Moje domače lokalno omrežje sestavljajo trije računalniki, ena Linux in dve Windows 98 mašini. Linux mašina opravlja malo morje procesov, eden od njih je tudi serviranje datotek mojima Win98 računalnikoma preko Samba serverja. Za lažje razumevanje, sem dal vsem trem mašinam imena. Moja Linux mašina je Homer, dve Win98 mašini pa sta Lisa in Bart. Vsi trije pa pripadajo delovni skupini Simpsons. Homerjev IP naslov je 192.168.0.1, Bartov 192.168.0.2 in Lisin 192.168.0.3. Delovne dokumente, domače naloge in ostale osebne dokumente bom shranjeval v imeniku skupne rabe (shared directory) z imenom data. Ta imenik bo dostopen z obeh Win 98 mašin (mapiran kot M: disk). Rad bi imel tudi imenik skupne rabe, do katerega bi imel dostop vsakdo; to bo imenik public. Ta bo dostopen iz obeh Win98 mašin in tudi vsakemu, ki bo imel račun (account) na Homerju. Na koncu, Homer bo tudi primarni WINS server za moje lokalno omrežje, tako da ni potrebno imeti datoteke imhosts na Lisi in Bartu. 3. Zahteve V nastajanju tega dokumenta predpostavljam, da imate: ˇ osnovno znanje kaj Samba je in za kaj jo želite ˇ delujoče TCP/IP omrežje ˇ delujočo Linux mašino na katero boste namestili Sambo ˇ potrebne pakete za kompajliranje Linux programov ˇ delujoče Windows 95/98 mašine pripravljene za povezovanje ˇ da nimate že nameščene Sambe; če jo imate, jo zaustavite in odstranite 3.1. Nastavitveni načrt Sedaj morate narditi načrt, kako boste nastavili Sambo. Napisal vam bom svojega; nekatere stvari bodo mogoče prišle v poštev tudi za vas. Homer ima nameščen RedHat Linux 5.1 z 2.2.3 kernelom, zato bom opisal namestitev Sambe za RedHat (z RPM-ji). Če uporabljate drugo distribucijo Linuxa, verjetno ne boste mogli dobesedno slediti kaj delam jaz, zato imejte to v mislih! Bart in Lisa imata oba nameščene Windows 98. Ne bo velikih razlik, če imate Windowse 95. Če imate nameščene Windows NT, bodo koraki malce drugačni, vendar koncept je enak. Ker imam v mreži samo tri računalnike, nisem zaskrbljen glede varnosti. Uporabljal bom "share level" stopnjo varnosti v Sambi. V resnici sam uporabljam en račun na obeh, Lisi in Bartu, in TweakUI za samodejno prijavo. 3.2. Kako do Sambe V času pisanja tega dokumenta je 2.0.3 zadnja stabilna verzija Sambe. Potrebovali boste izvorno kodo, datoteka je samba-2.0.3.tar.gz, ki jo dobite na domači strani Sambe . 4. Namestitev Sambe Najprej razširite izvorno kodo Sambe. Predpostavljam, da ste jo prenesli v imenik /tmp in naredite naslednje (ni še potrebno da ste root): $ tar -zxvf samba-2.0.3.tar.gz Če je šlo vse v redu in niste dobili nobenih sporočil o napakah, bi morali imeti razširjene datoteke v imeniku samba-2.0.3. Skupaj s Sambo pride kup paketnih skript. Najzanimivejše so tiste, ki naredijo RPM pakete za nas. Pa naredimo tako (sedaj morate biti root): $ su # cd samba-2.0.3/packaging/RedHat # sh makerpms.sh To bo vzelo nekaj časa, dokler se naredijo RPM paketi. Če je šlo kaj po zlu, bo potrebno, uh, pač prebrati dokumentacijo Sambe. Če je šlo dobro, sta bili narejeni naslednji datoteki: ˇ /usr/src/redhat/RPMS/i386/samba-2.0.3-19990228.i386.rpm ˇ /usr/src/redhat/RPMS/i386/samba-2.0.3-19990228.src.rpm Super ne? Dobro, pa namestimo to Sambo: # rpm -Uvh /usr/src/redhat/RPMS/i386/samba-2.0.3-19990228.i386.rpm A je lahko sploh enostavneje? Sedaj bomo naredili novega uporabnika in novo skupino, nato pa nov imenik. Priredili bomo nekaj datotek za uporabo "Samba Web Administration Tool - SWAT". 5. Kreiranje Hmm, tudi kakšno boljše ime bi si lahko spomnil, vendar bomo tukaj kreirali (naredili) uporabiške račune, imenike, skupine in datoteke. 5.1. Nov uporabnik in skupina Ker bomo uporabljali "share level" stopnjo varnosti, moramo narediti gost račun (guest account). Ta uporabnik bo smbuser in bo pripadal skupini smb. Vse datoteke, ki jih Bart in Lisa pišeta v imenika skupne rabe, data in public, bodo v lasti smbuser-ja in pripadale v skupino smb. Če imate Linuxconf, uporabite to za umazano delo. Drugače pa uporabite ukaza useradd in groupadd za kreiranje novih računov. 1. Naredite skupino smb 2. Naredite uporabnika smbuser, domači imenik naj bo v /home/public Preprečite prijavo za račun smbuser, ker se dejansko nihče ne bo prijavljal pod tem imenom. 5.2. Imenikpub Sedaj naj bi že imeli imenik /home/public. Bil naj bi v lasti smbuser-ja in pripadal skupini smb. Ker bodo vse datoteke v tem imeniku vedno pripadale skupini smb, bomo tako nastavili SGID. Vsak bo imel možnost branja in pisanja v ta imenik, zato bodo dovoljenja nastavljena tako: # chown smbuser:smb /home/public # chmod 2777 /home/public Vsaka datoteka, ki je narejena v imeniku /home/public pripada skupini smb, ne glede na to, kdo jo naredi. 5.3. Imenikdata Moj data imenik je v /home/samba/data. Ta imenik bo dostopen samo določenim ljudem, tistim, ki pripadajo smb skupini. to naredimo takole: # mkdir /home/samba # chown smbuser:smb /home/samba # chmod 2770 /home/samba # mkdir /home/samba/data # chown smbuser:smb /home/samba/data # chmod 2770 /home/samba/data Tudi na te imenike sem nastavil SGID tako, da vse, kar se naredi v teh imenikih pripada smb skupini. Ker hočem tudi jaz imeti dostop do teh imenikov, se dodam v smb skupino. To lahko naredim z Linixconf ukazom, ali pa ročno spremenim datoteko /etc/group. 5.4. Pregled datotekehosts Imeli naj bi datoteko /etc/hosts, ki mapira imena gostiteljev (host names) v IP naslove. Moja izgleda takole: # /etc/hosts 127.0.0.1 localhost localhost.localdomain 192.168.0.1 homer 192.168.0.2 bart 192.168.0.3 lisa 5.5. Kreiranje datoteke Imhosts Imhosts datoteka mapira imena gostiteljev (host names) ali IP naslove LanManager-ju imena računalnikov. Normalno bi verjetno radi imeli enaka imena za LanManager-ja in imena gostiteljev: # /etc/Imhosts localhost homer bart bart lisa lisa Izgleda malo smešno, ampak stvar na levi strani je ime gostitelja, stvar na desni pa ime LanManager-ja. 6. Uporaba SWAT Za uporabo SWAT moramo preveriti /etc/services in /etc/inetd.conf datoteke. Po originalnih nastavitvah SWAT dela na portu 901. To sicer lahko spremenimo, vendar pustimo zaenkrat tako. Poglejmo datoteko /etc/services, če vsebuje naslednjo vrstico: swat 901/tcp #Add swat service used via inetd Če jo imate, potem dobro. Če je nimate, jo dodajte na konec datoteke. Potem preverimo datoteko /etc/inetd.conf, če vsebuje vrstico: swat stream tcp nowait.400 root /usr/sbin/swat swat 6.1. Varovanje SWAT Če vas varovenje SWAT ne zanima, lahko preskočite to poglavje. Jaz sam se počutim mnogo bolje, če mi "TCP wrappers" ščitijo SWAT. Spremenim prejšnjo vrstico takole: swat stream tcp nowait.400 root /usr/sbin/tcpd /usr/sbin/swat Če ne veste kaj so "TCP wrappers", potem preberite man strani: # man hosts.allow Vaš /etc/hosts.deny naj ima vrstico, ki pravi ALL:ALL. Dodajmo še to v vašo datoteko /etc/hosts.allow: # swat: 127.0.0.1 192.168.0. To dovoljuje Homerju, Lisi in Bartu dostop do SWAT. 6.2. Poganjanje SWAT Najprej še enkrat zaženimo datoteko inetd: # killall -HUP inetd Sedaj pojdite z najljubšim internet brskalnikom na naslov: http://192.168.0.1:901. Če je vse u redu, bi morali vnesti uporabniško ime in geslo. Za uporabniško ime vnesite root, za geslo pa vaše root geslo. 6.3. Nastavitev Sambe SWAT sedaj dela. Probajte vse gumbe in se spoznajte s njim. SWAT kreira /etc/smb.conf za vas. Sedaj bomo malo pogoljfali. Namesto, da bi šli skupaj čez vsako vrstico datoteke /etc/smb.conf, vam bom napisal svojo (imeni računalnika in delovne skupine sta spremenjeni, da zaščitim svojo sistemsko indetifikacijo). Preglejte to in preprosto skopirajte v svojo /etc/smb.conf datoteko. Ne pozabite je prirediti za svoj sistem: # Samba config file created usin SWAT # from bart (192.168.0.2) # Date: 1999/02/02 18:27:26 #Global parametes workgroup = SIMPSONS server string = Samba SMB Server interfaces = 192.168.0.1/24 127.0.0.1/24 bind interfaces only = Yes security = SHARE log file = /var/log/samba/log. %m max log size = 50 read bmpx = No time server = Yes socket options = TCP_NODELAY os level = 65 preferred master = Yes dns proxy = No wins support = Yes guest account = smbuser hide dot files = No [public] comment = Public path = /home/public read only = No create mask = 0664 directory mask = 0775 guest ok = Yes [data] comment = Data path = /home/samba/data read only = No create mask = 0660 directory mask = 0770 guest ok = Yes 7. Zagon Sambe Sambo lahko zaženete na dva načina: uporabite SWAT ali z ukazom v konzoli. Če bi radi uporabili SWAT, pojdite na stran STATUS in kliknite start SMBD in NMBD. Če je bila Samba že zagnana, pritisnite stop in še enkrat start, da boste videli nastavitveno datoteko. Za zagon Sambe z ukazom v konzoli: # /etc/rc.d/init.d/smb stop # /etc/rc.d/init.d/smb start Če niste opazili nobenih napak, potem vse deluje. No pa jo testirajmo. 7.1. Testiranje Sambe Poglejmo, kaj sploh dela: # smbclient -L localhost Mogoče vpraša za geslo. Če, pritisnite Enter, in videti bi morali nekaj podobnega: Domain=[SIMPSONS] OS=[Unix] Server=[Samba 2.0.3] Sharename Type Comment --------- ---- ------- public Disk Public data Disk Data IPC$ IPC IPC Service (Samba SMB Server) Server Comment ----- ------- HOMER Samba SMB server Workgroup Master --------- ------ SIMPSONS HOMER Vse u redu? Super! Sedaj nam preostaneta le še stroja z Windows. 8. Nastavitev Windows sistema Ker Samba server dela na Homerju, je sedaj čas, da se posvetimo tudi Bartu in Lisi. Ta del je veliko lažji. Najprej se prepričajmo, da so mrežne komponente pravilno nameščene in da v Nastavitve/Nadzorna plošča/Sistem/Upravitelj naprav ni nobenih konfliktov. Pazite da so v Mrežnih nastavitvah/zavihek Osebna izkaznica navedena pravilna imena računalnika in delovne skupine. Za naš primer: Bart naj bi imel ime računalnika Bart in delovno skupino Simpsons. Enako za Liso. Nadzor dostopa naj bo na ravni skupne rabe. V lastnostih, pa obkljukajmo Wins server za Homerja. Da bi spremembe začele veljati, je potrebno znova zagnati računalnik. Ko se Windowsi naložijo, bi morali v Omrežni soseščini videti tudi Samba Server. V naslednjem poglavju si bomo ogledali, kako zaščititi Sambo pred zunanjimi napadi. 9. Varovanje Sambe Vsakič ko dodate servis, je vaša mašina bolj ispostavljena crackerjem. Tukaj bomo obravnavali zaščito Samba serverja. 9.1. S Sambo V Sambini nastavitveni datoteki /etc/smb.conf lahko povemo, katerim portom naj prisluškuje: interfaces = 192.168.0.1/24 127.0.0.1/24 bind interfaces only = Yes Tukaj seveda navedite vaše naslove IP. Ker sem nezaupljiv, bom dodal še eno plast varovanja, filtriranje portov. 9.2. Filtriranje portov SMB uporablja port 137-139. Da bi bil varen, blokiram oba TCP in UDP porta 137-139. Če uporabljate 2.0 verzijo kernela, boste verjetno uporabljali program ipfwadm. Z jedrom 2.1 in 2.2, uporabljajte ipchains. 9.2.1. Uporaba ipfwadm Dodajte naslednje vrstice v vašo datoteko /etc/rc.local: ipfwadm -I -P tcp -a deny -S any/0 137:139 -W eth0 ipfwadm -I -P udp -a deny -S any/0 137:139 -W eth0 ipfwadm -O -P tcp -a deny -S any/0 137:139 -W eth0 ipfwadm -O -P udp -a deny -S any/0 137:139 -W eth0 9.2.2. Uporaba ipchains Dodajte naslednje vrstice v vašo datoteko /etc/rc.local: ipchains -A input -p tcp -j DENY --destination port 137:139 -i eth0 ipchains -A input -p ucp -j DENY --destination port 137:139 -i eth0 ipchains -A output -p tcp -j DENY --destination port 137:139 -i eth0 ipchains -A output -p ucp -j DENY --destination port 137:139 -i eth0 10. Zaključek S tem zaključujem ta mini Korak za Korakom vodič skozi namestitev Samba Serverja. Ta dokument nikakor ne nadomešča originalne dokumentacije! Če potrebujete več informacij, pojdite na naslov in preberite njihovo dokumentacijo. Upam, da vam bo ta dokument uporaben.