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 <http://www.samba.org/>. 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 <http://www.samba.org/> in preberite njihovo dokumentacijo. Upam, da vam bo ta dokument uporaben.