Sigurnost Linuxa KAKO Kevin Fenzi, kevin@scrye.com i Dave Wreski, dave@nic.com verzija 0.9.11, 1. svibnja 1998. Ovaj je dokument opcenit pregled sigurnosnih problema s kojima je suocen administrator Linux sustava. Pokriva opcenitu filozofiju sigurnosti i vise specificnih primjera boljeg osiguravanja vaseg Linux sustava od uljeza. Spominju se i drugi izvori informacija i programa o sigurnosti. NAPOMENA: ovo je beta verzija ovog dokumenta. Poboljsanja, konstruktivne kritike, dodatke i ispravke zahvalno prihvacamo. Posaljite svoje poruke i jednom i drugom autoru. Nemojte zaboraviti "Linux", "security" ili "HOWTO" u Subject: liniji svoje poruke kako bi izbjegli spam filtere i brzo dobili paznju autora. ______________________________________________________________________ Sadrzaj 1. Uvod 1.1 Nove verzije ovog dokumenta 1.2 Komentari 1.3 Odricanje 1.4 Informacije o autorskim pravima 2. Pregled 2.1 Sto ce nam sigurnost? 2.2 Koliko je sigurno sigurno? 2.3 Sto pokusavate zastititi? 2.4 Razvijanje sigurnosne politike 2.5 Nacini osiguravanja vaseg sustava 2.5.1 Sigurnost racunala 2.5.2 Sigurnost vase mreze 2.5.3 Sigurnost pomocu opskurnosti 2.6 Organizacija ovog dokumenta 3. Fizicka sigurnost 3.1 Racunalne brave 3.2 BIOS sigurnost 3.3 Sigurnost programa za dizanje 3.4 xlock i vlock 3.5 Otkrivanje fizickih provala 4. Lokalna sigurnost 4.1 Stvaranje novih racuna 4.2 Sigurnost roota 5. Sigurnost datoteka i datotecnog sustava 5.1 Postavljanje umaska 5.2 Dozvole datoteka 5.3 Provjera cjelovitosti pomocu Tripwirea 5.4 Trojanski konji 6. Sigurnost lozinki i enkripcija 6.1 PGP i kriptografija javnih kljuceva 6.2 SSL, S-HTTP, HTTPS i S/MIME 6.3 Linux x-kernel -- implementacija IPSEC-a 6.4 SSH, stelnet 6.5 PAM - Pluggable Authentication Modules 6.6 Kriptografska IP enkapsulacija (CIPE) 6.7 Kerberos 6.8 Shadow lozinke 6.9 Crack i John the Ripper 6.10 CFS i TCFS 6.11 X11, SVGA i sigurnost prikaza 6.11.1 X11 6.11.2 SVGA 6.11.3 GGI 7. Sigurnost kernela 7.1 Opcije pri kompajliranju kernela 7.2 Kernel uredaji 8. Sigurnost mreze 8.1 Sniferi paketa 8.2 Usluge sustava i tcp_wrapperi 8.3 Provjerite svoje DNS-ove 8.4 identd 8.5 SATAN, ISS i drugi mrezni skeneri 8.6 sendmail, qmail i MTA-ovi 8.7 Denial of Service (poricanje usluga) napadi 8.8 Sigurnost NFS-a 8.9 NIS (bivsi YP) 8.10 Firewallovi 9. Sigurnosne pripreme (prije nego se ukljucite u mrezu) 9.1 Napravite potpun backup svoga stroja 9.2 Izbor dobrog rasporeda backupa 9.3 Backupirajte svoju RPM ili Debian bazu podataka datoteka 9.4 Pracenje logova vaseg sustava 9.5 Primjenite sve nove nadogradnje sustava 10. Sto uciniti tokom i nakon provale 10.1 Narusavanje sigurnosti upravo se odvija 10.2 Narusavanje sigurnosti vec se dogodilo 10.2.1 Zatvaranje rupe 10.2.2 Procjenjivanje stete 10.2.3 Backup, backup, backup! 10.2.4 Pronalazenje uljeza 11. Izvori informacija o sigurnosti 11.1 FTP posluzitelji 11.2 WWW stranice 11.3 Mailing liste 11.4 Knjige -- tiskani materijali za citanje 12. Rjecnik 13. Cesto postavljana pitanja 14. Zakljucak 15. Zahvale 16. Hrvatski prijevod ______________________________________________________________________ 11.. UUvvoodd Ovaj dokument pokriva neke od glavnih problema sigurnosti koji utjecu na sigurnost Linuxa. Govori se o opcoj filozofiji i resursima na mrezi. S problemima sigurnosti preklapa se vise drugih KAKO dokumenata i, gdje je prikladno, na njih ste upuceni. Ovaj dokument NIJE svjez popis sigurnosnih rupa. Puno novih stalno se pojavljuje. Ovaj ce vam dokument reci gdje da potrazite svjeze informacije i izloziti neke opcenite metode sprecavanja takvih rupa. 11..11.. NNoovvee vveerrzziijjee oovvoogg ddookkuummeennttaa Nove verzije ovog dokumenta redovito se salju u comp.os.linux.answers. Takoder se dodaju raznim anonimnim FTP serverima koji takve informacije arhiviraju, ukljucujuci <ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/>. Ovaj bi dokument trebali moci naci i na Linux WWW stranici na <http://sunstie.unc.edu/mdw/linux.html>. Na kraju, najsvjezije verzije ovog dokumenta trebale bi biti dostupne u raznim formatima s <http://scrye.com/~kevin/lsh/>. 11..22.. KKoommeennttaarrii Sve komentare, greske, dodatne informacije i kritike svih vrsta saljite na kevin@scrye.com i dave@nic.com. NAPOMENA: molimo vas, poruku posaljite obojici. Provjerite da li je u Subject:-u poruke "Linux", "security" ili "HOWTO" da izbjegnete Kevinov spam filter. 11..33.. OOddrriiccaannjjee Za sadrzaj ovih dokumenata ne prihvacamo nikakvu odgovornost. Ideje, primjere i drugi sadrzaj koristite na svoju odgovornost. Takoder, ovo je nedovrsena verzija, s mnogim mogucim netocnostima i greskama. Dosta primjera i opisa koriste Red Hat(TM)-ov sustav pakiranja i izgled sustava. Vas ne mora biti jednak. Opisani su samo programi koji se pod odredenim uvjetima mogu koristiti ili iskusati za osobne svrhe. Vecina programa dostupna je u potpunosti, s izvornim kodom, pod GNU-olikim uvjetima. 11..44.. IInnffoorrmmaacciijjee oo aauuttoorrsskkiimm pprraavviimmaa Ovaj dokument je (C) 1998. Kevin Fenzi i Dave Wreski, a distribuira se pod slijedecim uvjetima: · KAKO dokumente moze se reproducirati i distribuirati u cjelosti ili djelomicno, na mediju fizickom ili elektronickom, dok je ova obavijest na svim primjercima. Komercijalna distribucija dopustena je i ohrabrena; medutim, autor bi o takvom distribuiranju zelio biti obavijesten. · Svi prijevodi, izvedeni ili sazeti radovi koji ukljucuju Linux KAKO dokumente moraju biti pod ovom licencom. Dakle, ne smijete napraviti rad izveden iz KAKO-a i nametati dodatna ogranicenja na njegovu distribuciju. Iznimke ovim pravilima moguce su pod odredenim uvjetima; kontaktirajte Linux KAKO koordinatora na dolje danoj adresi. · Ako imate pitanja, kontaktirajte Tima Bynuma, Linux KAKO koordinatora, na linux-howto@sunsite.unc.edu. 22.. PPrreegglleedd Ovaj dokument pokusava objasniti neke postupke i cesto koristene programe koji vas Linux cine sigurnijim. Vazno je da prvo razjasnimo neke osnovne stvari, da steknete temeljna znanja iz sigurnosti prije nego pocnemo. 22..11.. SSttoo ccee nnaamm ssiigguurrnnoosstt?? U promijenjivom svijetu globalnih podatkovnih komunikacija, jeftinih veza na Internet i vrlo brzog razvoja softvera, sigurnost postaje sve vaznija. Sigurnost je sada osnovna potreba jer je globalno racunalstvo po prirodi nesigurno. Na primjer, dok vasi podaci idu iz tocke A u tocku B na Internetu, mozda ce usput proci kroz nekoliko drugih tocaka, dajuci drugim korisnicima priliku da presrecu, i cak mijenjaju, vase podatke. Cak i drugi korisnici na vasem sustavu mogu zlocudno pretvarati vase podatke u nesto nezeljeno. Neodobreni pristup vasem sustavu mogu dobiti uljezi, takozvani ccrraacckkeerrii, koji zatim koriste svoje napredne vjestine u imitiranju vas, u kradi podataka od vas, ili cak onemogucavanju pristupa vasim vlastitim resursima. Ako se jos uvijek pitate koja je razlika izmedu hhaacckkeerraa i crackera, procitajte HHooww ttoo BBeeccoommee AA HHaacckkeerr (kako postati haker) Erica S. Raymonda na <http://sagan.earthspace.net/~esr/faqs/hacker- howto.html>. 22..22.. KKoolliikkoo jjee ssiigguurrnnoo ssiigguurrnnoo?? Najprije, imajte na umu da nijedan racunalni sustav nikad ne moze biti "potpuno siguran". Sve sto mozete je otezati kompromitiranje vaseg sustava. Za prosjecnog kucnog korisnika Linuxa, ne treba puno da obicni kreker ostane na lancu. Za velike Linux korisnike (banke, telekomunikacijske tvrtke, itd.) potrebno je mnogo vise posla. Drugi faktor kojeg treba uzeti u obzir je da, sto je vas sustav sigurniji, sigurnost vam sve vise smeta. U tom balansiranju trebate naci tocku gdje je vas sustav moguce koristiti, ali je jos siguran za vase potrebe. Na primjer, mogli biste od svih koji se na vas sustav spajaju telefonskom vezom traziti da vas sustav nazove njih na njihov kucni broj. To jest sigurnije, ali ako netko nije kod kuce, tesko ce se logirati. Takoder biste mogli svoj Linux sustav ostaviti bez mreze ili veze na Internet, ali to vrlo otezava surfanje WWW-om. Ako ste sustav vece ili srednje velicine, trebali bi razviti "Sigurnosnu politiku" o tome koliko sigurnosti vas sustav zahtijeva i kojim se postupkom ona provjerava. Dobro poznati primjer sigurnosne politike mozete naci na <http://ds.internic.net/rfc/rfc2196.txt>. Nedavno je osvjezen i sadrzi izvrsnu podlogu za sigurnosnu politiku vase tvrtke. 22..33.. SSttoo ppookkuussaavvaattee zzaassttiittiittii?? Prije nego pokusate osigurati svoj sustav, trebate odluciti kolika je prijetnja protiv koje se morate zastititi, koje rizike biste ili ne biste trebali podnijeti i koliko ce na kraju vas sustav biti ranjiv. Proucite svoj sustav i saznajte sto i zasto stitite, koliko je to vrijedno i tko je odgovoran za vase podatke i drugo vlasnistvo. · Rizik je mogucnost da uljez uspije u pokusaju pristupa vasem racunalu. Moze li uljez citati, pisati datoteke, ili izvrsavati programe koji bi vam mogli nastetiti? Moze li vazne podatke obrisati? Sprijeciti vas ili vasu tvrku da obavite vazne poslove? Ne zaboravite, netko s pristupom vasem racunu ili sustavu takoder se moze predstavljati kao vi. Zatim, jedan nesiguran racun na vasem sustavu moze dovesti do kompromitiranja cijele vase mreze. Jedan korisnik kojem je dopusteno logiranje preko rhosts datoteke, ili nesigurna usluga, kao sto je tftp, rizik je koji uljezu omogucava da "prode kroz vrata". Kada uljez jednom dobije korisnicki racun na vasem sustavu ili sustavu nekog drugog, moze ga koristiti za dobivanje pristupa drugom sustavu, ili drugom racunu. · Obicno vam prijeti netko tko zeli neodobren pristup vasoj mrezi ili racunalu. Odlucite kome vjerujete dovoljno da ima pristup vasem racunalu, i koju bi on prijetnju mogao predstavljati. Evo nekoliko vrsta uljeza. Korisno je misliti na razlicite osobine dok osiguravate svoje sustave. ZZnnaattiizzeelljjnnii Ovu vrstu uljeza zapravo zanima koju vrstu sustava i podataka imate. ZZllooccuuddnnii Ova vrsta uljeza zeli ili srusiti vase sustave, ili unakaziti vasu WWW stranicu, ili vam drukcije oduzeti vrijeme i novac za oporavak. UUlljjeezz kkoojjii ssee hhooccee iissttaaccii Ova vrsta uljeza pokusava preko vaseg sustava doci do popularnosti ili slave. Moze vas vazan sustav koristiti za razglasavanje svoje sposobnosti. KKoonnkkuurreenncciijjaa Ove uljeze zanima koje podatke imate na sustavu. Mozda misle da imate nesto sto bi im dobro doslo financijski ili drugacije. · Ranjivost opisuje koliko je dobro vase racunalo zasticeno od drugih mreza i mogucnost neodobrenog pristupa. Sto je na kocki ako netko provali u vas sustav? Naravno da brige kucnog korisnika dinamickog PPP-a nisu jednake brigama tvrtke koja svoje racunalo spaja na Internet ili drugu vecu mrezu. Koliko bi vam vremena trebalo da ponovo nabavite/napravite izgubljene podatke? Vrijeme ulozeno sada moze spasiti deset puta vise vremena poslije ako budete morali ponovno stvoriti podatke koje izgubite. Jeste li u zadnje vrijeme provjerili svoju strategiju backupa i svoje podatke? 22..44.. RRaazzvviijjaannjjee ssiigguurrnnoossnnee ppoolliittiikkee Napravite jednostavnu, opcenitu politiku za svoj sustav, koju vasi korisnici mogu lako razumjeti i postovati. Ona treba zastititi podatke koje cuvate, kao i privatnost korisnika. Neke stvari koje biste mogli dodati je tko ima pristup sustavu (moze li moj prijatelj koristiti moj racun?), kome je dozvoljeno da na sustav instalira softver, tko posjeduje koje podatke, oporavljanje od katastrofe i prikladno koristenje sustava. Opce prihvacena sigurnosna politika pocinje frazom: Sto nije dozvoljeno zabranjeno je. To znaci da ako korisniku ne date pristup usluzi, on je ne smije koristiti dok pristup ne dobije. Provjerite da li to funkcionira na vasem obicnom korisnickom racunu -- reci "ma ne mogu shvatiti ovaj problem s dozvolama, idem jednostavno biti root" moze dovesti do vrlo ocitih sigurnosnih rupa, cak i dosad nepoznatih. 22..55.. NNaacciinnii oossiigguurraavvaannjjaa vvaasseegg ssuussttaavvaa Ovaj dokument ce govoriti o raznim sredstvima osiguravanja stvari za koje ste toliko radili: vase lokalno racunalo, podatke, korisnike, mrezu, cak i vas ugled. Sto ce se dogoditi s vasim ugledom ako uljez obrise podatke nekog vaseg korisnika? Ili vam unakazi WWW stranice? Ili objavi poslovne planove vase tvrke za slijedeci kvartal? Ako planirate mreznu instalaciju, mnogo faktora treba uzeti u obzir prije dodavanja ijednog racunala. Cak i ako imate jednostavan PPP racun ili malen sustav, to ne znaci da uljeze ne zanimate. Veliki, istaknuti sustavi nisu jedine mete -- mnogi uljezi jednostavno zele iskoristiti sto vise sustava bez obzira na njihovu velicinu. Takoder mogu koristiti sigurnosnu rupu u vasem sustavu za pristup drugim sustavima kojima ste spojeni. Uljezi imaju mnogo vremena i mogu izbjeci pogadanje nacina na koji ste osigurali sustav jednostavnim isprobavanjem svih mogucnosti. Ima jos nekoliko razloga zbog kojih bi se uljez mogao zanimati za vase sustave o kojima cemo govoriti poslije. 22..55..11.. SSiigguurrnnoosstt rraaccuunnaallaa Mozda se najvise brige za sigurnost trosi na pojedina racunala. To obicno znaci provjeravanje sigurnosti vaseg sustava uz nadu da svi ostali na mrezi rade isto. Odabir dobrih lozinki, osiguravanje usluga lokalne mreze vaseg posluzitelja, pazljivo odrzavanje korisnickih racuna i nadogradnja programa s poznatim sigurnosnim rupama dio su odgovornosti lokalnog sigurnosnog administratora. Iako je to potpuno nuzno, postaje tezak zadatak ako vasa mreza racunala postane veca. 22..55..22.. SSiigguurrnnoosstt vvaassee mmrreezzee Sigurnost mreze potrebna je koliko i sigurnost lokalnog racunala. Uz vas sustav, ili distribuiranu racunalnu mrezu, Internet, ili stotine, ako ne i tisuce racunala na istoj mrezi ne mozete racunati na sigurnost svakog od njih. Provjeravanje dozvola samo provjerenim korisnicima za koristenje vasih mreznih resursa, gradenje firewalla, koristenje jake enkripcije i provjere da nema izlozenih ili nesigurnih racunala na vasoj mrezi sve su dio duznosti mreznog sigurnosnog administratora. Ovaj ce dokument govoriti o nekim tehnikama za osiguravanje vaseg sustava u nadi da vam pokaze neke nacine sprecavanja pristupanja uljeza u ono sto pokusavate zastititi. 22..55..33.. SSiigguurrnnoosstt ppoommooccuu ooppsskkuurrnnoossttii Jedna vrsta sigurnosti koju je potrebno raspraviti je "sigurnost preko opskurnosti". To se odnosi na stvari poput mijenjanja imena 'root' u 'toor' kako bi se otezala provala u vas sustav kao root -- osjecaj sigurnosti je lazan i dovest ce do vrlo neugodnih posljedica. Budite sigurni da ce svaki napadac na sustav brzo progledati kroz takve prazne sigurnosne mjere. To sto imate malen sustav ili niste istaknuti ne znaci da se uljezi nece zanimati za ono sto imate. U slijedecim dijelovima govorit cemo o onome sto stitite. 22..66.. OOrrggaanniizzaacciijjaa oovvoogg ddookkuummeennttaa Ovaj dokument podijeljen je na vise dijelova. Oni pokrivaju razne vrste sigurnosnih problema. Prvi, o fizickoj sigurnosti, govori o zastiti vaseg racunala od fizickog petljanja. Drugi opisuje kako zastititi vas sustav od petljanja lokalnih korisnika. Treci, o datotekama i sigurnosti datotecnog sustava, pokazuje kako namjestiti datotecne sustave i dozvole na vasim datotekama. Slijedeci, o sigurnosti preko lozinki i enkripcije, govori o koristenju enkripcije za bolju sigurnost vaseg racunala i mreze. Sigurnost kernela govori o mogucnostima kernela koje biste trebali koristiti ili biti svjesni za sigurniji stroj. Sigurnost mreze opisuje kako bolje osigurati svoj Linux sustav od napada s mreze. Sigurnosne pripreme govori o pripremanju vaseg/ih racunala prije nego sto ih umrezite. Slijedeci dio govori sto poduzeti kada otkrijete provalu sustava u toku ili koja se nedavno dogodila. Zatim su nabrojeni drugi izvori informacija o sigurnosti, a na kraju su neka pitanja i odgovori i nekoliko zavrsnih rijeci. Dvije vazne stvari koje trebate shvatiti citajuci ovaj dokument su: · Budite svjesni svog sustava. Provjeravajte logove sustava kao sto je /var/log/messages i pazite na svoj sustav, i · Drugo, drzite svoj sustav svjezim instaliranjem trenutnih verzija softvera i nadogradnjama zbog sigurnosnih opasnosti. To ce vas sustav uciniti znatno sigurnijim. 33.. FFiizziicckkaa ssiigguurrnnoosstt Prvi "sloj" sigurnosti kojeg trebate uzeti u obzir je fizicka sigurnost vasih racunalnih sustava. Tko ima izravan fizicki pristup vasem racunalu? Da li bi trebao? Mozete li zastititi svoje racunalo od njegova petljanja? Da li biste trebali? Koliko fizicke sigurnosti trebate za svoj sustav jako ovisi o vasoj situaciji i/ili financijama. Ako ste kucni korisnik, vjerovatno vam je ne treba puno (iako cete mozda htjeti zastititi svoje racunalo od djece ili neugodnih rodaka). Ako ste u laboratoriju, treba vam poprilicno vise, no korisnici na racunalima ipak moraju moci raditi. Mnogi od slijedecih dijelova bit ce od pomoci. Ako ste u uredu, trebat ce vam ili nece osiguravanje racunala dok ne radite ili dok ste na putu. U nekim tvrtkama ostavljanjem neosigurane konzole mozete zaraditi otkaz. Ocite metode fizicke sigurnosti kao sto su brave na vratima, kablovima, zakljucani kabineti i video kamere sve su dobra ideja, ali izvan dosega ovog dokumenta. :) 33..11.. RRaaccuunnaallnnee bbrraavvee Mnoga moderna PC kucista imaju mogucnost "zakljucavanja". To je obicno brava na prednjem dijelu kucista u kojoj dobiveni kljuc mozete okrenuti u zakljucani ili nezakljucani polozaj. Brave na kucistima mogu pomoci u sprecavanju krade vaseg PC-a, ili otvaranja kucista i izravnog mijenjanja/krade vaseg hardvera. Nekad mogu sprijeciti i resetiranje vaseg racunala uz dizanje sustava s diskete ili drugog hardvera. Te brave rade razlicite stvari, ovisno o podrsci maticne ploce i konstrukciji kucista. Na mnogim PC-ima napravljene su tako da kuciste morate slomiti kako bi ga otvorili. Na drugima ne mozete ukljucivati nove tipkovnice i miseve. Za vise informacija provjerite upute svoje maticne ploce ili kucista. To ponekad moze biti vrlo korisna mogucnost, iako su brave obicno niske kvalitete i vrlo ih je lako otkljucati otpiracem. Neka kucista (najizrazenije Sparcovi i Macovi) imaju kuku otraga tako da, ako provucete kabel, napadac mora prerezati kabel ili slomiti kuciste da bi ga otvorio. Stavljanje sifre ili brave moze biti dobra odbrana od krade stroja. 33..22.. BBIIOOSS ssiigguurrnnoosstt BIOS je najniza razina softvera koja konfigurira ili radi s vasim x86 baziranim hardverom. LILO i druge metode dizanja Linuxa pristupaju BIOS-u kako bi odlucile kako dignuti vase Linux racunalo. Druge platforme na kojem Linux radi imaju slican softver (OpenFirmware na Macovima i novijim Sunovima, Sun boot prom, itd.). Preko BIOS-a mozete sprijeciti napadaca u resetiranju vaseg racunala i mijenjanju vaseg Linux sustava. Pod Linuxom/x86 mnogi PC BIOS-i daju vam mogucnost lozinke pri dizanju sustava. To ne znaci bas puno sigurnosti (BIOS se moze resetirati, ili maknuti ako netko moze do unutrasnjosti kucista), ali moze posluziti kao dobra obrana (to jest, potrajat ce i ostaviti tragove petljanja). Mnogi x86 BIOS-i omogucavaju i odredivanje raznih drugih dobrih sigurnosnih mjera. Provjerite prirucnik svog BIOS-a ili ga razgledajte prilikom slijedeceg dizanja. Neki primjeri: iskljucivanje dizanja s disketa i lozinke za pristup nekim opcijama BIOS-a. Na Linux/Sparc-u vas SPARC EEPROM moze se namjestiti da zahtijeva lozinku pri dizanju. To ce mozda usporiti napadaca. NAPOMENA: Ako imate posluzitelj i stavite lozinku pri dizanju, vas se stroj nece dizati samostalno. Nemojte zaboraviti da cete morati doci i dati lozinku cak i kod nestanka struje. ;( 33..33.. SSiigguurrnnoosstt pprrooggrraammaa zzaa ddiizzaannjjee Razni programi za dizanje Linuxa takoder mogu imati lozinku. Ako koristite LILO, pogledajte opcije rreessttrriicctteedd i ppaasssswwoorrdd. ppaasssswwoorrdd vam trazi lozinku pri dizanju. rreessttrriicctteedd ce dopustiti dizanje sustava _o_s_i_m ako netko odredi opcije na LILO: promptu (kao sto je ssiinnggllee). Naravno, pri postavljanju svih tih lozinki trebat cete ih i popamtiti. :) Takoder nemojte zaboraviti da ce one samo usporiti odlucnog napadaca. To nece sprijeciti da netko digne sustav s diskete i montira vasu root particiju. Ako koristite sigurnost uz svoj program za dizanje sustava, mozete odmah i u BIOS-u svog racunala iskljuciti dizanje s diskete, kao i zastiti ga lozinkom. Ako netko ima informacije o sigurnosti drugih programa za dizanje, rado bismo ih culi (grub, silo, milo, linload, itd.). NAPOMENA: Ako imate posluzitelj i stavite lozinku pri dizanju, vas se stroj nece dizati samostalno. Nemojte zaboraviti da cete morati doci i dati lozinku cak i kod nestanka struje. ;( 33..44.. xxlloocckk ii vvlloocckk Ako s vremena na vrijeme odlutate od svog stroja, lijepo je moci "zakljucati" svoju konzolu da nitko ne petlja po njoj ili gleda sto ste radili. Ovo mogu dva programa: xlock i vlock. xlock zakljucava X prikaz. Trebao bi doci sa svakom Linux distribucijom koja podrzava X. Za vise opcija provjerite njegovu man stranicu, ali opcenito mozete pokrenuti xlock iz bilo kojeg xterma na svojoj konzoli i on ce zakljucati prikaz i traziti lozinku za otkljucavanje. vlock je jednostavan mali program kojim zakljucavate neke ili sve virtualne konzole na svojem Linux stroju. Mozete zakljucati samo onu u kojoj radite ili sve. Ako zakljucate samo jednu, drugi mogu doci i koristiti konzolu, ali ne i vas vty dok ga ne otkljucate. vlock dolazi s Red Hat Linuxom, ali to ne mora vrijediti za vasu distribuciju. Naravno da ce zakljucavanje konzole sprijeciti petljanje drugih u vas posao, ali ne sprijecava resetiranje stroja ili prekid vaseg posla na neki drugi nacin. Takoder ne sprijecava pristup vasem racunalu s drugog racunala na mrezi i uzrokovanje problema. 33..55.. OOttkkrriivvaannjjee ffiizziicckkiihh pprroovvaallaa Prva stvar na koju uvijek treba paziti je kad se vas stroj dignuo. Posto je Linux robustan i stabilan OS, stroj bi se trebao ponovo dizati kada ga VI spustite za nadogradnje OS-a, izmjenu hardvera ili nesto slicno. Ako se stroj dignuo bez vaseg sudjelovanja, trebalo bi se upaliti svjetlo za uzbunu. Mnogi nacini kompromitiranja vaseg racunala zahtijevaju da ga uljez resetira. Provjerite znakove petljanja na kucistu i podrucju racunala. Iako mnogi uljezi iz logova ciste tragove svoga prisustva, dobra je ideja provjeriti ih i potraziti bilo kakve nejasnosti. Neke stvari koje trebate provjeriti u logovima: · Kratki ili nepotpuni logovi. · Logovi s cudnim oznakama vremena. · Logovi s netocnim dozvolama ili vlasnistvom. · Znakovi ponovnog dizanja sustava ili ukljucivanja usluga. · Nedostajuci logovi. · su zapisi ili logini iz cudnih mjesta. O podacima iz logova sustava govorit cemo kasnije. 44.. LLookkaallnnaa ssiigguurrnnoosstt Slijedeca stvar koju trebate pogledati je osigurnost vaseg sustava protiv napada lokalnih korisnika. Jesmo li mi to rekli _l_o_k_a_l_n_i_h korisnika? Da. Dobivanje pristupa lokalnom korisniku jedna je od prvih stvari koju uljezi u sustav pokusaju na svom putu do rootovog racuna. Uz nedostatke lokalne sigurnosti, zatim mogu "nadograditi" svoj obicni korisnicki pristup do administratora kroz razne bagove i jadno namjestene lokalne usluge. Ako svoju lokalnu sigurnost ucinite dobrom, uljez ce naici na jos jednu prepreku. Lokalni korisnici mogu uzrokovati dosta stete na vasem sustavu cak i (posebno) ako su stvarno oni za koje se predstavljaju. Davanje racuna ljudima koje ne poznajete ili za koje nemate kontaktnih informacija vrlo je losa ideja. 44..11.. SSttvvaarraannjjee nnoovviihh rraaccuunnaa Korisnicke racune trebali biste davati zadovoljavajuci samo minimalne potrebe zadatka koji obavljaju. Ako svom desetgodisnjem sinu date racun, mozda cete htjeti da on ima pristup samo word procesoru ili programu za crtanje i ne moze brisati tude podatke. Nekoliko dobrih pravila procjenjivanja kod dopustanja pristupa drugih ljudi vasem Linux stroju: · Dajte im minimalne privilegije koje su im potrebne. · Budite svjesni kada/od kamo se logiraju, ili bi se trebali logirati. · Budite sigurni i zbrisite njihov racun kada im vise nije potreban. Mnogi racuni lokalnih korisnika koji se koriste u provalama sigurnosti nisu koristeni mjesecima ili godinama. Posto ih nitko ne koristi, idealno su sredstvo napada. 44..22.. SSiigguurrnnoosstt rroooottaa Najtrazeniji racun na vasem racunalu je racun administratora. On ima vlast nad cijelim strojem, a mozda i nad drugim strojevima na mrezi. Sjetite se da bi rootov racun trebali koristiti samo za vrlo kratke, odredene zadatke, a uglavnom biti obicni korisnik. Biti root cijelo vrijeme vrlo vrlo vrlo je losa ideja. Nekoliko trikova da ne zabrljate svoj vlastiti stroj dok ste root: · Kada pokrecete neku slozenu naredbu, prvo je pokusajte pokrenuti u ne-destruktivnom nacinu... Posebno naredbe koje koriste nadopunjavanje: tj., ako hocete pokrenuti rm foo*.bak, umjesto toga prvo napisite ls foo*.bak i provjerite da li cete obrisati nezeljene datoteke. Koristenje naredbe echo umjesto destruktivnih naredbi takoder ponekad pomaze. · Neki ljudi misle da tu pomaze touch /-i. Tako ce vas naredbe poput rm -rf * pitati da li stvarno zelite obrisati sve te datoteke. (Zato sto vasa ljuska prvo nadopuni datoteku -i koju rm tretira kao opciju.) To nece pomoci kod rm naredbi bez *. ;( · Postanite root samo za pojedine posebne zadatke. Ako ne znate kako nesto napraviti, vratite se u ljusku obicnog korisnika dok niste _s_i_g_u_r_n_i sto root treba obaviti. · Staza je vrlo vazna za root korisnika. Naredbena staza, odnosno PATH varijabla okruzja, odreduje mjesta na kojima ljuska trazi prorgame. Pokusajte ograniciti stazu za root korisnika sto je vise moguce i nikad nemojte koristiti ., odnosno "trenutni direktorij", u svojem PATH-u. Takoder nemojte u PATH-u imati direktorije u koje se moze pisati jer to omogucava napadacima mijenjanje ili smjestanje novih izvrsnih datoteka u vasu naredbenu stazu tako da postanu root slijedeci put kada vi pokrenete tu naredbu. · Nikad nemojte koristiti rlogin/rsh/rexec (takozvane rr--uuttiilliittiieess) alate kao root. Oni su podlozni mnogim napadima i vrlo opasni kada ih pokrece root. Nikad ne stvarajte .rhosts datoteku za roota. · Datoteka /etc/securetty sadrzi popis terminala s kojih se root moze logirati. Tu su predefinirane (na Red Hat Linuxu) samo virtualne konzole (vty-i). Budite vrlo pazljivi kod dodavanja bilo cega drugog ovoj datoteci. Trebali biste moci logirati se s daljine kao obicni korisnik, a zatim, ako trebate, su (po mogucnosti preko ssh- a ili drugog enkriptiranog kanala), tako da nema potrebe za mogucnoscu izravnog logiranja kao root. · Uvijek budite spori i odlucni dok ste root. Vasi postupci mogu utjecati na mnogo stvari. Razmislite prije tipkanja! · Ako svakako morate dopustiti nekome (po mogucnosti vrlo provjerenom) nadkorisnicki pristup na vasem racunalu, ima nekoliko alata koji vam mogu pomoci. sudo omogucava korisnicima da koriste svoju lozinku za pristup ogranicenom skupu naredbi kao root. Na primjer, to omogucava korisniku da izbacuje i montira pokretljive medije na vasem Linux stroju, ali nema drugih root privilegija. sudo ima i logove svih uspjesnih i neuspjesnih pokusaja pokretanja tako da mozete otkriti tko je za sto koristio koju naredbu. Zato sudo dobro radi cak i na mjestima gdje vise ljudi ima pristup rootu tako da se mogu vidjeti pocinjene promjene. Iako se sudo moze koristiti za davanje odredenih privilegija odredenom korisniku za odredene zadatke, ima nekoliko nedostataka. Trebalo bi ga koristiti samo za ogranicen skup zadataka, kao sto ponovno pokretanje servera ili dodavanje novih korisnika. Svaki program koji nudi izlaz u ljusku dat ce korisniku pristup rootu. Na primjer, to vrijedi za vecinu editora. Takoder, nevin program poput /bin/cat moze se koristiti za prepisivanje datoteka tako da se pristup rootu moze zlocudno iskoristavati. sudo smatrajte sredstvom za vodenje racuna i ne ocekujte da zamijeni roota i uz to bude siguran. 55.. SSiigguurrnnoosstt ddaattootteekkaa ii ddaattootteeccnnoogg ssuussttaavvaa Nekoliko minuta pripreme i planiranja prije ukljucivanja u mrezu moze pomoci u zastiti sustava i podataka koji su na njima pohranjeni. · Ne bi trebalo biti razloga za dopustanje pokretanja SUID/SGID programa iz korisnickih home direktorija. Za particije na koje mogu pisati drugi osim roota koristite nosuid opciju u /etc/fstab. Mozda cete iskoristiti i nodev i noexec na korisnickim home particijama, kao i na /var, koje zabranjuju izvrsavanje programa i stvaranje znakovnih ili blok uredaja, koji ionako ne bi trebali biti potrebni. · Ako izvozite datotecne sustave preko NFS-a, konfigurirajte /etc/exports sa sto je vise moguce restriktivnim pristupom. To znaci nekoristenje metaznakova, nedopustanje pisanja na / i montiranje samo-za-citanje kad god je moguce. · Konfigurirajte korisnicki umask za stvaranje datoteka sto restriktivnije. Uobicajene su vrijednosti 022, 033, te najogranicenija 077, a dodaju se u /etc/profile. · Umjesto predefiniranog unlimited stavite granice na zauzece datotecnog sustava. Ogranicenja po korisniku mozete mijenjati koristenjem resource-limits PAM modula i /etc/pam.d/limits.conf. Na primjer, ogranicenja za grupu korisnici mogla bi izgledati ovako: @korisnici hard core 0 @korisnici hard nproc 50 @korisnici hard rss 5000 Ovo zabranjuje stvaranje core datoteka, ogranicava broj procesa na 50 i koristenje memorije na 5 MB po korisniku. · Datoteke /var/log/wtmp i /var/run/utmp sadrze zapise o logiranju svih korisnika sustava. Cjelovitost ove datoteke mora se odrzati jer se ona preko nje mozete saznati kada i od kamo je korisnik (ili moguci uljez) usao na vas sustav. Ove datoteke takoder bi trebale imati dozvole 644, bez utjecaja na normalan rad sustava. · immutable bit moze se koristiti za sprecavanje slucajnog brisanja ili prepisivanja datoteke koja mora biti zasticena. Takoder sprecava simbolicko vezanje na tu datoteku, sto su koristili napadi brisanja /etc/passwd i /etc/shadow. Za vise informacija o immutable bitu pogledajte man stranicu chattr(1). · SUID i SGID datoteke na vasem sustavu moguc su sigurnosni rizik i pazljivo ih treba pratiti. Zbog toga sto ti programi daju posebne privilegije korisniku koji ih je pokrenuo, potrebno je osigurati da se nesigurni programi ne instaliraju. Omiljeni krekerski trik je iskoristiti SUID root programe, a zatim ostaviti SUID program kao straznji ulaz za slijedeci put, cak i ako je izvorna rupa zacepljena. Nadite sve SUID/SGID programe na svom sustavu i pratite njihovo stanje, tako da ste svjesni bilo kakvih promjena koje bi mogle znaciti moguceg uljeza. Koristite slijedecu naredbu za trazenje svih SUID/SGID programa na sustavu: root# find / -type f \( -perm -04000 -o -perm -02000 \) Slobodno pomocu chmod(1) maknite SUID ili SGID dozvole na sumnjivom programu, a zatim ih vratite ako bas bude potrebno. · Datoteke u koje svi mogu pisati, pogotovo datoteke sustava, mogu biti sigurnosna rupa ako kreker pristupi vasem sustavu i izmijeni ih. Takoder, direktoriji u koje svi mogu pisati opasni su jer omogucuju krekeru da po zelji dodaje ili brise datoteke. Za lociranje svih datoteka u koje svi mogu pisati koristite ovu naredbu: root# find / -perm -2 -print i provjerite zasto svi mogu pisati u njih. Tokom normalnog rada bit ce nekoliko takvih datoteka, ukljucujuci neke iz /dev i simbolicke veze. · Datoteke bez vlasnika takoder mogu pokazati da je uljez pristupio vasem sustavu. Datoteke koje nemaju vlasnika ili ne pripadaju grupi mozete naci naredbom: root# find / -nouser -o -nogroup -print · Trazenje .rhosts datoteka takoder bi trebalo biti dio vasih uobicajenih duznosti administratora jer one ne bi smjele biti dopustene na vasem sustavu. Zapamtite, kreker treba samo jedan nesiguran racun da mozda dobije pristup vasoj cijeloj mrezi. Sve .rhosts datoteke na sustavu mozete naci ovom naredbom: root# find /home -name .rhosts -print · Na kraju, prije mijenjanja dozvola na bilo kojoj datoteci sustava, budite sigurni da znate sto radite. Nikad ne mijenjajte dozvole datoteci jer to izgleda kao lak nacin za rjesavanje problema. Uvijek odlucite zasto datoteka ima takve dozvole prije nego sto ih promijenite. 55..11.. PPoossttaavvlljjaannjjee uummaasskkaa Naredba umask moze se koristiti za mijenjanje predefiniranih dozvola stvorenih datoteka. To je oktalni komplement zeljenog moda datoteke. Ako se datoteke stvaraju bez ikakve brige o njihovim dozvolama, korisnik bi mogao nenamjerno dati dozvole za citanje ili pisanje nekome tko ih ne bi trebao imati. Tipicni umaskovi su 022, 027 i 077 koji je najrestriktivniji. Obicno se umask postavlja u /etc/profile tako da vrijedi za sve korisnike sustava. Na primjer, mozda imate red koji izgleda ovako: # Postavlja predefinirani umask korisnika umask 033 Provjerite da li je umask roota 077, sto ce iskljuciti dozvole za citanje, pisanje ili izvrsavanje drugim korisnicima, osim ako ih izricito ne promijenite preko chmod(1). Ako koristite Red Hat i njihov nacin stvaranja ID-ova korisnika i grupa (UUsseerr PPrriivvaattee GGrroouuppss -- osobne grupe korisnika), za umask je dovoljno koristiti 002, zahvaljujuci cinjenici da je svaki korisnik u svojoj grupi. 55..22.. DDoozzvvoollee ddaattootteekkaa Vazno je osigurati da vase datoteke sustava nisu otvorene editiranju korisnika i grupa koji takvu administraciju ne trebaju obavljati. UNIX razdvaja kontrolu pristupa datotekama i direktorijima po tri osobine: vlasnik, grupa i ostali. Vlasnik moze biti samo jedan, grupa moze imati bilo koliko clanova, te svi ostali. Brzo objasnjenje UNIX dozvola: VVllaassnniissttvvoo:: Koji korisnik/ci i grupa/e ima/ju kontrolu nad postavljanjem dozvola za datoteku i njenog roditelja. DDoozzvvoollee:: Bitovi sposobni za namjestanje ili resetiranje koji omogucuju odredene vrste pristupa. Dozvole za direktorije mogu imati drukcije znacenje od jednakih dozvola datoteka. CCiittaannjjee:: · sposobnost pregledavanja sadrzaja datoteke · sposobnost pregledavanja direktorija PPiissaannjjee:: · sposobnost dodavanja podataka ili mijenjanja datoteke · sposobnost brisanja i micanja datoteka u direktoriju IIzzvvrrssaavvaannjjee:: · sposobnost pokretanja izvrsne datoteke ili skripte ljuske · sposobnost trazenja u direktoriju, uz dozvolu za citanje SSaavvee TTeexxtt atribut: (za direktorije) Ljepljivi (ssttiicckkyy) bit kod direktorija takoder ima drukcije znacenje. Ako je postavljen na direktoriju, korisnik smije brisati samo datoteke koje posjeduje ili za koje ima izricitu dozvolu za pisanje, cak i kada ima dozvolu za pisanje u direktorij. Ovo je napravljeno za direktorije poput /tmp u koje svi mogu pisati, ali gdje nije pozeljno da bilo koji korisnik po volji brise datoteke. Ljepljivi bit prikazuje se kao t u dugom ispisu direktorija. SSUUIIDD aattrriibbuutt:: ((zzaa ddaattootteekkee)) Ovo opisuje sseett--uusseerr--iidd (postavi ID korisnika) dozvole datoteke. Kada je SUID mod pristupa ukljucen u dozvolama vlasnika i datoteka izvrsna, procesi koji ju pokrenu dobivaju pristup resursima sustava koje ima vlasnik datoteke. To je uzrok mnogih buffer overflow rupa. SSGGIIDD aattrriibbuutt:: ((zzaa ddaattootteekkee)) Ako je postavljen u dozvolama grupe, taj bit kontrolira sseett-- ggrroouupp--iidd stanje datoteke. Ponasa se kao i SUID, osim sto se odnosi na grupu. Da bi to imalo ucinka datoteka takoder mora biti izvrsna. SSGGIIDD aattrriibbuutt:: ((zzaa ddiirreekkttoorriijjee)) Ako SGID bit ukljucite na direktoriju (preko chmod g+s direktorij), datoteke stvorene u tom direktoriju imat ce grupu koju ima direktorij. VVii vlasnik datoteke GGrruuppaa grupa kojoj pripadate SSvvii svi na sustavu, osim vlasnika i clanova grupe Primjer na datoteci: -rw-r--r-- 1 kevin korisnici 114 Aug 28 1997 .zlogin 1. bit - direktorij? (ne) 2. bit - citanje za vlasnika? (da, za kevina) 3. bit - pisanje za vlasnika? (da, za kevina) 4. bit - izvrsavanje za vlasnika? (ne) 5. bit - citanje za grupu? (da, za korisnici) 6. bit - pisanje za grupu? (ne) 7. bit - izvrsavanje za grupu? (ne) 8. bit - citanje za sve? (da, za sve) 9. bit - pisanje za sve? (ne) 10. bit - izvrsavanje za sve? (ne) Evo primjera minimalnih polozaja dozvola koji su potrebni za opisane radnje. Mozda cete htjeti dati vise dozvola, ali ovo pokazuje sto znace te minimalne dozvole: -r-------- Vlasniku dopusta citanje datoteke --w------- Vlasniku dopusta mijenjanje i brisanje datoteke ---x------ Vlasnik moze izvrsiti ovaj program, ali ne skriptu ljuske, kojoj jos treba dozvola za citanje ---s------ Izvrsit ce se uz UID vlasnika -------s-- Izvrsit ce se uz GID vlasnika -rw------T Ne osvjezava se "vrijeme zadnje promjene". Obicno se koristi za swap datoteke ---t------ Bez ucinka (bivsi ljepljivi bit). Primjer na direktoriju: drwxr-xr-x 1 kevin korisnici 114 Aug 28 1997 .zlogin 1. bit - direktorij? (da, s puno datoteka) 2. bit - citanje za vlasnika? (da, za kevina) 3. bit - pisanje za vlasnika? (da, za kevina) 4. bit - izvrsavanje za vlasnika? (da, za kevina) 5. bit - citanje za grupu? (da, za korisnici) 6. bit - pisanje za grupu? (ne) 7. bit - izvrsavanje za grupu? (da, za korisnici) 8. bit - citanje za sve? (da, za sve) 9. bit - pisanje za sve? (ne) 10. bit - izvrsavanje za sve? (ne, za sve) Evo primjera minimalnih polozaja dozvola koji su potrebni za opisane radnje. Mozda cete htjeti dati vise dozvola, ali ovo pokazuje sto znace te minimalne dozvole: dr-------- Sadrzaj se moze pregledati, ali ne se atributi ne mogu procitati d--x------ U direktorij se moze uci i koristiti u potpunim stazama za izvrsavanje dr-x------ A sada atribute moze citati vlasnik d-wx------ Sad se datoteke mogu stvarati/brisati, cak i ako direktorij nije trenutni d------x-t Sprecava brisanje datoteka od strane drugih korisnika s mogucnoscu pisanja. Koristi se za /tmp d---s--s-- Bez ucinka Konfiguracijske datoteke sustava (obicno u /etc obicno imaju dozvole 640 (-rw-r-----) i posjeduje ih root. Ovisno o sigurnosnim potrebama vaseg sustava to mozete i promijeniti. Nikad ne ostavljajte dozvolu za pisanje grupe ili sviju na datoteci sustava. Neke konfiguracijske datoteke, kao sto je /etc/shadow, trebao bi moci citati samo root, a direktoriji u /etc trebali bi biti barem nedostupni ostalima. SSUUIIDD sskkrriippttee lljjuusskkee SUID skripte ljuske ozbiljan su sigurnosni rizik i zato ih kernel nece kao takve izvrsavati. Ma koliko vi mislili da je ona sigurna, takvu skriptu mogu iskoristiti krekeri za dobivanje root pristupa. 55..33.. PPrroovvjjeerraa ccjjeelloovviittoossttii ppoommooccuu TTrriippwwiirreeaa Jos jedan dobar nacin otkrivanja lokalnih (a i mreznih) napada na vas stroj je provjera cjelovitosti, kao sto je Tripwire. Tripwire izracunava niz checksumova za sve vase vazne programe i konfiguracijske datoteke i usporeduje ih s podacima o prijasnjim, dobro poznatim vrijednostima. Tako ce se pokazati sve promjene datoteka. Dobra je ideja instalirati Tripwire na disketu i zatim je fizicki zastititi od pisanja. Na taj nacin uljezi ne mogu petljati sa samim Tripwireom ili mijenjati podatke. Kad Tripwire jednom namjestite, dobro je pokretati ga kao dio vasih normalnih duznosti sigurnosnog administratora da vidite da li nesto promijenjeno. Cak mozete dodati crontab zapis koji svake noci pokrece Tripwire s diskete i salje vam rezultate. Nesto kao: # postavljamo adresu MAILTO=kevin # pokrecemo Tripwire 15 05 * * * root /usr/local/adm/tcheck/tripwire poslat ce vam izvjestaj svakog jutra u 5:15. Tripwire je dar s neba za otkrivanje uljeza prije nego sto biste ih inace primjetili. Posto se na prosjecnom sustavu mijenja mnogo datoteka, morate pazljivo razlikovati aktivnost krekera i svoj vlastiti rad. 55..44.. TTrroojjaannsskkii kkoonnjjii Trojanski konj dobio je ime po poznatoj prijevari iz Homerovog velikog knjizevnog djela. Ideja je u tome da napravite program ili izvrsnu datoteku koja izgleda sjajno i koju ce drugi ljudi nabaviti i pokrenuti kao root. Zatim mozete kompromitirati njihov sustav dok ne paze. Dok oni misle da program koji su upravo skinuli radi jedno (a to moze biti i istina), on takoder ponistava osiguranje. Pazite koje programe instalirate na svoje racunalo. Red Hat nudi MD5 provjeru i PGP potpise, RPM datoteke tako da se mozete uvjeriti da instalirate pravu stvar. Druge distribucije imaju slicne metode. Nikad ne pokrecite program za kojeg nemate izvornog koda ili dobro poznatu izvrsnu datoteku kao root! Malo ce napadaca izvorni kod izloziti oku javnosti. Iako to moze biti dosta slozeno, provjerite da li izvorni kod programa nabavljate s izvornog mjesta distribucije. Ako cete ga pokretati kao root, provjerite sami ili netko kome vjerujete izvorni kod. 66.. SSiigguurrnnoosstt lloozziinnkkii ii eennkkrriippcciijjaa Jedna od najvaznijih nacina osiguranja koji se koriste u danasnje vrijeme su lozinke. Vazno je da vi i svi vasi korisnici imate sigurne, nepogodive lozinke. Vecina novijih Linux distribucija dolaze s programom passwd koji ne dopusta lozinke koje je lako pogoditi. Provjerite da li je vas passwd svjez i da li ima takve mogucnosti. Dublje ulazenje u temu enkripcije izvan je dosega ovog dokumenta, ali potreban je barem uvod. Enkripcija je vrlo korisna, mozda cak i potrebna u ovakvom dobu. Postoji mnogo nacina enkriptiranja podataka, svaki sa svojim osobinama. Vecina Unixa (ni Linux nije iznimka) za enkriptiranje lozinki primarno koriste jednosmjerni algoritam enkriptiranja zvan DES (DData EEncryption SStandard -- standard enkripcije podataka). Takve enkriptirane lozinke pohranjuju se u (obicno) /etc/passwd ili (neuobicajenije) /etc/shadow. Kada se pokusate logirati, sto god upisete ponovo se enkriptira i usporeduje s zapisom u datoteci u kojoj su vase lozinke. Ako se slazu, to mora biti ista lozinka i ulaz vam je dopusten. Iako je DES dvosmjeran algoritam enkripcije (mozete enkriptirati i dekriptirati poruku ako imate prave kljuceve) varijanta koju vecina Unixa koristi jednosmjerna je. Dakle, ne bi trebalo biti moguce obrnuti smjer enkripcije i dobiti lozinku iz sadrzaja /etc/passwd (odnosno /etc/shadow). Napadi grubom silom kao sto je Crack ili John the Ripper (v. dolje) cesto pogode lozinke ako one nisu dovoljno slucajne. PAM moduli (v. dolje) omogucavaju koristenje razlicitog nacina enkripcije lozinki (MD5 ili slicno). O izabiranju dobre lozinke mozete procitati na <http://consult.cern.ch/writeup/security/security_3.html>. 66..11.. PPGGPP ii kkrriippttooggrraaffiijjaa jjaavvnniihh kklljjuucceevvaa Kriptografija javnih kljuceva, koju koristi i PGP, koristi jedan kljuc za enkripciju i jedan za dekripciju. Tradicionalno, kriptografija koristi za enkripciju isti kljuc kao i za dekripciju. Taj "osobni kljuc" mora biti poznat obje strane i na neki nacin sigurno prenesen od jedne do druge. Kriptografija javnih kljuceva ponistava potrebu sigurnog prenosenja kljuca koji se koristi za enkripciju pomocu koristenja dva odvojena kljuca, javnog kljuca i osobnog kljuca. Javni kljuc svake osobe dostupan je svakome za enkripciju, no osobni kljuc ima samo ta osoba kako bi dekriptirala poruke sifrirane tocnim javnim kljucem. I kriptografija javnih i kriptografija osobnih kljuceva imaju svoje prednosti -- o tim razlikama govori se u RRSSAA CCrryyppttooggrraapphhyy FFAAQQ, navedenom na kraju ovog dijela. PGP (PPretty GGood PPrivacy -- prilicno dobra privatnost) na Linuxu je dobro podrzan. Verzije 2.6.2 i 5.0 dobro funkcioniraju. Za dobar uvod u PGP i kako ga koristiti pogledajte PPGGPP FFAAQQ, <http://www.pgp.com/service/export/faq/55faq.cgi>. Pazite da uzmete verziju koja odgovara vasoj zemlji, jer se prema ogranicenjima izvoza iz SAD-a jaka enkripcija smatra vojnim oruzjem i njeno prenosenje u elektronskom obliku izvan zemlje je zabranjeno. Tu je i vodic korak-po-korak u konfiguriranju PGP na Linuxu, koji se moze naci na <http://mercury.chem.pitt.edu/~angel/LinuxFocus/English/November1997/article7.html>. Napisan je za medunarodnu verziju PGP-a, ali lako se primjeni na verziju za SAD. Mozda ce vam trebati i zakrpa za neke od najnovijih Linux verzija koja se moze naci na <ftp://sunsite.unc.edu/pub/Linux/apps/crypto>. Vise informacija o kriptografiji moze se naci u RRSSAA CCrryyppttooggrraapphhyy FFAAQQ na <http://www.rsa.com/rsalabs/newfaq/>. Tu cete naci informacije o stvarima kao sto je "Diffie-Hellman", "kriptografija javnih kljuceva", "digitalne potvrde", itd. 66..22.. SSSSLL,, SS--HHTTTTPP,, HHTTTTPPSS ii SS//MMIIMMEE Korisnike cesto zanimaju razlike izmedu raznih sigurnosnih i enkripcijskih protokola, te njihovo koristenje. Iako ovo nije dokument o enkripciji, bilo bi dobro da razjasnimo sto je sto i gdje naci vise informacija. SSSSLL:: (SSecure SSockets LLayer) metoda je enkripcije koju je razvio Netscape za sigurnost preko Interneta. Podrzava nekoliko razlicitih enkripcijskih protokola i omogucava autentifikaciju klijenta i posluzitelja. SSL radi na razini prijenosa stvarajuci sigurni kanal podataka i tako moze transparentno enkriptirati mnoge vrste podataka. To cete najcesce vidjeti pregledavajuci u Communicatoru siguran dokument sa sigurnog posluzitelja, a sluzi kao osnova sigurnih komunikacija pomocu Communicatora, kao i mnoge druge enkripcije podataka Netscape Communicationsa. Vise informacija moze se naci na <http://www.consensus.com/security/ssl-talk-faq.html>. Informacije o drugim Netscapeovim sigurnosnim implementacijama i dobra pocetna tocka za ove protokole nalazi se na <http://home.netscape.com/info/security-doc.html>. SS--HHTTTTPP:: S-HTTP je jos jedan protokol koji omogucava sigurne usluge preko Interneta. Napravljen je da pruzi povjerljivost, provjerenost, cjelovitost i nezamjenjivost istovremeno podrzavajuci mehanizme za rad s vise kljuceva i kriptografske algoritme kroz pregovaranje opcija izmedu strana umijesanih u svaku transakciju. S-HTTP je ogranicen na poseban program koji ga implementira i svaku poruku posebno enkriptira. (iz RRSSAA CCrryyppttooggrraapphhyy FFAAQQ, str. 138) SS//MMIIMMEE - S/MIME, odnosno SSecure MMultipurpose IInternet MMail EExtension, enkripcijski je standard koji se koristi za enkriptiranje elektronske poste i drugih tipova poruka preko Interneta. To je otvoren standard kojeg razvija RSA, pa se nadamo da cemo ga uskoro vidjeti i na Linuxu. Vise informacija o S/MIME-u moze se naci na <http://home.netscape.com/assist/security/smime/overview.html>. 66..33.. LLiinnuuxx xx--kkeerrnneell ---- iimmpplleemmeennttaacciijjaa IIPPSSEECC--aa Uz CIPE i druge oblike enkripcije podataka, za Linux postoji i implementacija IPSEC-a. IPSEC je rezultat napora IETF-a u stvaranju kriptografski sigurnih komunikacija na razini IP mreza, koji takoder pruza autentifikaciju, cjelovitost, kontrolu pristupa i povjerljivost. Informacije o IPSEC-u i Internet nacrtu mogu se naci na <http://www.ietf.org/html.charters/ipsec-charter.html>. Tamo su i veze na druge protokole koji rade s kljucevima, te IPSEC mailing lista i arhive. Linux implementacija koja se razvija na Sveucilistu Arizone koristi x- kernel, objektno bazirani okvir za implementiranje mreznih protokola, a moze se naci na <http://www.cs.arizona.edu/xkernel/hpcc- blue/linux.html>. Najjednostavnije receno, x-kernel je nacin prenosenja poruka na razini kernela, sto olaksava implementaciju. Kao i drugi oblici kriptografije, ne distribuira se zajedno s kernelom zbog ogranicenja u izvozu. 66..44.. SSSSHH,, sstteellnneett SSH (SSecure SShhell -- sigurna ljuska) i stelnet su programi koji vam omogucavaju rad na udaljenim sustavima kroz enkriptiranu vezu. SSH je skup programa koji se koriste kao sigurna zamjena za rlogin, rsh i rcp. Za enkriptiranje izmedu dva racunala koristi kriptografiju javnih kljuceva, kao i za provjeru korisnika. Moze se koristiti za sigurno logiranje na udaljeno racunalo ili kopiranje podataka izmedu racunala ujedno sprecavajuci napade izmedu (sseessssiioonn hhiijjaacckkiinngg -- otimanje sesije) i DNS ssppooooffiinngg (varanje). Sazimat ce vase veze i osiguravati X11 veze izmedu racunala. SSH-ove WWW stranice su <http://www.cs.hut.fi/ssh/>. SSH mozete koristiti i sa svoje Windows radne stanice na svoj Linux SSH posluzitelj. Ima nekoliko besplatnih Windows implementacija klijenta, ukljucujuci onu na <http://guardian.htu.tuwien.ac.at/therapy/ssh/>, kao i komercijalnu implementaciju DataFellowsa na <http://www.datafellows.com>. SSLeay je besplatna implementacija Netscapeovog Secure Sockets Layer protokola, kao i nekoliko aplikacija, kao sto je Secure telnet, modul za Apache, nekoliko baza podataka, te nekoliko algoritama ukljucujuci DES, IDEA i Blowfish. Koristeci taj library napravljena je sigurna zamjena za telnet koja enkriptira telnet vezu. Za razliku od SSH-a, stelnet koristi SSL, SSecure SSockets LLayer, koji je razvio Netscape. Secure telnet i Secure FTP mozete naci pocevsi od SSSSLLeeaayy FFAAQQ, dostupnog na <http://www.psy.uq.oz.au/~ftp/Crypto/>. 66..55.. PPAAMM -- PPlluuggggaabbllee AAuutthheennttiiccaattiioonn MMoodduulleess Novije verzije distribucije Red Hat Linux isporucuju se s jedinstvenom shemom autentifikacije zvanom "PAM". PAM vam omogucava mijenjanje metoda i potreba autentificiranja u letu te enkapsuliranje svih lokalnih autentifikacijskih metoda bez ponovnog kompajliranja ijednog programa. Konfiguracija PAM-a je izvan dosega ovog dokumenta, ali potrudite se i pogledajte WWW stranice PAM-a za vise informacija. <http://www.kernel.org/pub/linux/libs/pam/index.html> Samo neke od stvari koje mozete s PAM-om: · Koristiti nesto sto nije DES za enkripciju svojih lozinki (sto ih cini tezim za probijanje grubom silom). · Postaviti ogranicenja koristenja za sve svoje korisnike tako da ne mogu izvoditi ddeenniiaall ooff sseerrvviiccee napade (broj procesa, kolicina memorije, itd.). · Ukljuciti shadow lozinke u letu. · Odredenim korisnicima dozvoliti da se logiraju samo u odredeno vrijeme s odredenog mjesta. Samo nekoliko sati nakon instaliranja i konfiguriranja svog sustava mozete sprijeciti mnoge napade prije nego sto se i dogode. Na primjer, koristite PAM za iskljucivanje koristenja .rhosts datoteka na sustavu u home direktorijima korisnika dodavanjem ovih redova /etc/pam.d/login: # # Korisnicima onemogucavamo rsh/rlogin/rexec # login auth required pam_rhosts_auth.so no_rhosts 66..66.. KKrriippttooggrraaffsskkaa IIPP eennkkaappssuullaacciijjaa ((CCIIPPEE)) Najvazniji cilj ovog softvera je pruziti mogucnost sigurne (od prisluskivanja, kao i analiza prometa, te ubacivanja krivotvorenih poruka) veze podmreza preko nesigurne paketne mreze kao sto je Internet. CIPE (CCryptographic IIPP EEncapsulation) podatke enkriptira na mreznoj razini. Paketi koji putuju izmedu racunala enkriptirani su. Enkripcija se izvodi blizu same podrske koja salje i prima pakete. To je razlicito od SSH-a koji podatke enkriptira na vezi, na razini socketa. Logicka veza izmedu programa na razlicitim racunalima enkriptirana je. CIPE se moze koristiti za ttuunnnneelllliinngg kako bi stvorili VViirrttuuaall PPrriivvaattee NNeettwwoorrkk (virtualnu privatnu mrezu). Enkripcija na niskom nivou ima prednost sto moze transparentno raditi izmedu dvije mreze spojene u VPN, bez ikakvog mijenjanja aplikacija. Sazeto iz dokumentacije CIPE-a: IPSEC standardi definiraju skup protokola koje se moze koristiti (medu ostalim) za izgradnju enkriptiranih VPM-ova. Medutim, IPSEC je relativno tezak i slozen skup protokola s mnogo opcija, potpune implementacije jos uvijek se rijetko koriste, a neka pitanja (kao sto je rad s kljucevima) jos nisu do kraja rijesena. CIPE koristi jednostavniji pristup u kojem se mnoge stvari (kao sto je izbor algoritma enkripcije) mogu promijeniti samo pri instalaciji. To ogranicava prilagodljivost, ali omogucava jednostavnu (i zato djelotvornu, u kojoj je lako pronaci greske) implementaciju. Vise informacija moze se naci na <http://www.inka.de/~bigred/devel/cipe.html>. Kao i drugi oblici kriptografije, ne distribuira se s kernelom zbog ogranicenja u izvozu. 66..77.. KKeerrbbeerrooss Kerberos je sustav autentifikacije koji je razvio Athena projekt na MIT-u. Kada se korisnik logira, Kerberos ga autentificira (preko lozinke) i daje mu nacin dokazivanja identiteta drugim posluziteljima i racunalima razbacanim na mrezi. Ovu autentifikacija cesto koriste programi kao sto je rlogin kako bi korisniku omogucili logiranje na druga racunala bez lozinke (umjesto datoteke .rhosts). Autentifikaciju takoder koristi sustav poste kako bi se zajamcila isporuka poste pravoj osobi, kao i istinit identitet posiljatelja. Ukupni ucinak instaliranja Kerberosa i brojnim drugih programa koji s njime dolaze je gotovo potpuna eliminacija mogucnosti da korisnik prevari sustav da je netko drugi. Nazalost, instalacija Kerberosa vrlo je temeljita i zahtijeva promjene ili zamjene mnogih standardnih programa. Vise informacija o Kerberosu moze se naci na <http://www.veritas.com/common/f/97042301.htm>, a izvorni kod na <http://nii.isi.edu/info/kerberos/>. (iz SStteeiinn,, JJeennnniiffeerr GG..,, CClliiffffoorrdd NNeeuummaann,, aanndd JJeeffffrreeyy LL.. SScchhiilllleerr.. ""KKeerrbbeerrooss:: AAnn AAuutthheennttiiccaattiioonn SSeerrvviiccee ffoorr OOppeenn NNeettwwoorrkk SSyysstteemmss.."" UUSSEENNIIXX CCoonnffeerreennccee PPrroocceeeeddiinnggss,, DDaallllaass,, TTeexxaass,, zziimmaa 11999988..) 66..88.. SShhaaddooww lloozziinnkkee Shadow lozinke nacin su cuvanja vasih enkriptiranih lozinki nedostupnim obicnom korisniku. Obicno su te enkriptirane lozinke pohranjene u datoteci /etc/passwd gdje ih svi mogu procitati. Zatim mogu pokrenuti programe za pogadanje lozinke i pokusati ju saznati. Shadow lozinke te informacije pohranjuju u datoteku /etc/shadow koju mogu citati samo privilegirani korisnici. Da bi shadow lozinke funkcionirale, svi vasi programi kojima treba pristup informacijama o lozinci moraju se ponovo kompajlirati kako bi ih podrzavali. PAM (vec spomenut) vam takoder omogucava da samo ukljucite shadow modul i ne zahtijeva ponovno kompajliranje izvrsnih datoteka. Ako je to potrebno, za daljne informacije pogledajte SShhaaddooww PPaasssswwoorrdd HHOOWWTTOO. Dostupan je na <http://sunsite.unc.edu/LDP/HOWTO/Shadow-Password-HOWTO.html>. Sada je relativno zastario i nije potreban distribucijama koje podrzavaju PAM. 66..99.. CCrraacckk ii JJoohhnn tthhee RRiippppeerr Ako iz nekog razloga vas passwd program ne sili tesko pogodive lozinke, mozda cete htjeti pokrenuti program za razbijanje lozinki i provjeriti da li su lozinke vasih korisnika sigurne. Programi za razbijanje lozinki zasnovani su na jednostavnoj ideji. Isprobaju svaku rijec u rjecniku i zatim njihove varijacije. Svaku enkriptiraju i provjeravaju da li se slaze s vasom enkriptiranom lozinkom. Ako da, unutra su. Vise ih je u divljini... Dva najzapazenija su Crack i John the Ripper <http://www.false.com/security/john/index.html>. Zauzet ce vam dosta procesorskog vremena, ali bi vam trebali reci da li bi napadac mogao uci koristeci ih, ako ih pokrenete prije njega i obavijestite korisnike sa slabim lozinkama. Primjetite da bi napadac prije toga morao iskoristiti neku drugu rupu da bi dobio vasu passwd (Unixov /etc/passwd) datoteku, ali one su cesce nego sto mislite. 66..1100.. CCFFSS ii TTCCFFSS CFS (Cryptographic File System -- kriptografski datotecni sustav) je metoda enkriptiranja cijelog datotecnog sustava koji korisnicima omogucava pohranjivanje enkriptiranih datoteka. Koristi NFS posluzitelj koji radi na lokalnom stroju. RPM-ovi se nalaze na <http://www.replay.com/redhat/>, a vise informacija o tome kako to sve radi na <ftp://ftp.research.att.com/dist/mab/>. TCFS (Transparent Cryptographic File System -- transparentni...) poboljsava CFS, dodavajuci vise integracije s datotecnim sustavom, tako da je proziran korisnicima koji ga koriste. Vise informacija na <http://edu-gw.dia.unisa.it/tcfs/>. 66..1111.. XX1111,, SSVVGGAA ii ssiigguurrnnoosstt pprriikkaazzaa 66..1111..11.. XX1111 Vazno je da osigurate svoj graficki prikaz kako bi sprijecili napadace u stvarima kao sto je: krada vasih lozinki dok ih tipkate bez da ste toga svjesni, citanje dokumenata ili informacija koje citate na svom ekranu ili cak koristenje rupe za pristup nadkorisnika. Pokretanje X aplikacija preko mreze takoder moze biti igranje s vatrom koje omogucuje njuskalima da gledaju cijelu vasu interakciju s udaljenim sustavom. X ima vise mehanizama za kontrolu pristupa. Najjednostavniji od njih zasniva se na imenu racunala. xhost mozete koristiti za odredivanje racunala kojima je dozvoljen pristup vasem prikazu. To uopce nije sigurno. Ako netko ima pristup vasem racunalu moze koristiti xhost + svoje racunalo i lako uci. Takoder, ako dopustate pristup neprovjerenom stroju, svatko moze gledati vas prikaz. Ako koristite xdm (XX DDisplay MManager) za logiranje, imate puno bolju metodu pristupa: MIT-MAGIC-COOKIE-1. Generira se 128-bitni kolacic i sprema u vasu .Xauthority datoteku. Ako zelite omoguciti pristup svom prikazu s drugog racunala, koristite naredbu xauth i informacije u vasoj .Xauthority datoteci kako bi se samo toj vezi dozvolio pristup. Procitajte X-na-daljinu mini-KAKO, dostupan na <http://meta.mioc.hr/X-na-daljinu.html>. Mozete koristiti i ssh (v. ssh, gore) za sigurne X veze. To ima prednost transparentnosti krajnjem korisniku, a znaci da mrezom kolaju samo enkriptirani podaci. Za vise informacija o sigurnosti u X-u pogledajte man stranicu Xauthority. Najsigurnije je koristiti xdm za logiranje na svoju konzolu, a zatim ssh za pokretanje X programa s udaljenih racunala. 66..1111..22.. SSVVGGAA SVGAlib programi obicno su SUID-root kako bi mogli pristupiti grafickoj kartici vaseg Linux sustava. To ih cini vrlo opasnima. Ako se sruse, obicno morate ponovo dignuti racunalo da bi dobili koristivu konzolu. Provjerite da su SVGA programi koje imate autenticni i da im se moze barem ponesto vjerovati. Jos bolje, nemojte ih uopce imati. 66..1111..33.. GGGGII Linux GGI (GGeneric GGraphics IInterface -- projekt opceg grafickog sucelja) projekt pokusava rjesiti nekoliko problema grafickih sucelja na Linuxu. GGI ce malen dio video koda pomaknuti u kernel, a zatim kontrolirati pristup grafickom sustavu. To znaci da ce GGI moci bilo kada dovesti vasu konzolu u dobro stanje. Takoder ce omoguciti sigurne kljuceve za upozorenje da na vasoj konzoli ne rade trojanski konji koji se predstavljaju kao login. <http://synergy.caltech.edu/~ggi/> 77.. SSiigguurrnnoosstt kkeerrnneellaa Ovo je opis konfiguracijskih opcija kernela koje se odnose na sigurnost i objasnjene njihove funkcije i koristenja. Zbog toga sto kernel kontrolira mrezni rad vaseg racunala, vazno je da je on vrlo siguran te da mu se ne moze nastetiti. Kako bi sprijecili neke od najnovijih mreznih napada, trebali biste pokusati odrzati verziju svog kernela svjezom. Nove kernele mozete naci na <ftp://ftp.kernel.org/>. 77..11.. OOppcciijjee pprrii kkoommppaajjlliirraannjjuu kkeerrnneellaa IIPP:: DDrroopp ssoouurrccee rroouutteedd ffrraammeess ((CCOONNFFIIGG__IIPP__NNOOSSRR)) Ova bi opcija trebala biti ukljucena. Source routed okviri u paketu sadrze cijeli put do svog odredista. To znaci da ruteri kroz koje paket prolazi ne moraju pregledati paket, pa ga samo proslijeduju. To moze dovesti do ulaska podataka u sustav koji mozda iskoristavaju sigurnosnu rupu. IIPP:: FFiirreewwaalllliinngg ((CCOONNFFIIGG__IIPP__FFIIRREEWWAALLLL)) Ova je opcija potrebna samo ako cete konfigurirati svoj stroj kao firewall, koristiti masquerading ili zelite zastititi svoju radnu stanicu koja se povezuje modemom od necijeg ulazenja kroz PPP sucelje. IIPP:: ffoorrwwaarrddiinngg//ggaatteewwaayyiinngg ((CCOONNFFIIGG__IIPP__FFOORRWWAARRDD)) Ako ukljucite IP forwarding (prosljedivanje), vas Linux sustav u biti postaje ruter. Ako je vas stroj na mrezi, mozete proslijedivati podatke s jedne mreze na drugu, i mozda potkopavati firewall koji je postavljen da to sprijeci. Normalni dial-up korisnici ovo ce iskljuciti, a ostali bi se korisnici trebali usredotociti na sigurnosne implikacije. Racunala koja su firewalli ovo trebaju ukljuceno, zajedno sa softverom za firewall. IP prosljedivanje mozete dinamicki ukljucivati naredbom: root# echo 1 > /proc/sys/net/ipv4/ip_forward te iskljucivati naredbom: root# echo 0 > /proc/sys/net/ipv4/ip_forward Ta datoteka (i mnoge druge datoteke u /proc) uvijek ce izgledati duge 0 znakova, ali to zapravo nije istina. Ovo je nova opcija kernela, pa provjerite da li koristite verziju 2.0.33 ili noviju. IIPP:: ffiirreewwaallll ppaacckkeett llooggggiinngg ((CCOONNFFIIGG__IIPP__FFIIRREEWWAALLLL__VVEERRBBOOSSEE)) Ova opcija pruza informacije o paketima koje je vas firewall primio, kao sto je posiljatelj, primatelj, port, itd. IIPP:: aallwwaayyss ddeeffrraaggmmeenntt ((CCOONNFFIIGG__IIPP__AALLWWAAYYSS__DDEEFFRRAAGG)) Inace je ova opcija iskljucena, ali ako postavljate firewall ili masquerading, trebat cete ju ukljuciti. Kada se podaci salju od jednog do drugog racunala, nisu uvijek poslani u jednom paketu, nego fragmentirani u vise komada. Problem s time je sto se broj porta pohranjuje samo u prvom fragmentu. To znaci da netko moze ubaciti informacije u ostale pakete za vasu vezu, koje tamo ne bi smjele biti. IIPP:: ssyynn ccooookkiieess ((CCOONNFFIIGG__SSYYNN__CCOOOOKKIIEESS)) SYN napad je DoS (DDenial oof SService -- poricanje usluge) napad koji zauzima sve resurse vaseg racunala, zbog cega ga vi morate ponovo dignuti. Nema razloga da ovo u normalnoj situaciji ne ukljucite. PPaacckkeett SSiiggnnaattuurreess ((CCOONNFFIIGG__NNCCPPFFSS__PPAACCKKEETT__SSIIGGNNIINNGG)) Ovo je opcija iz 2.1 serije kernela koja ce za vecu sigurnost potpisivati NCP pakete. Obicno je mozete ugasiti, ali tu je ako vam je potrebna. IIPP:: FFiirreewwaallll ppaacckkeett nneettlliinnkk ddeevviiccee ((CCOONNFFIIGG__IIPP__FFIIRREEWWAALLLL__NNEETTLLIINNKK)) Ovo je stvarno zgodna opcija koja vam omogucava analizu prvih 128 bajtova paketa iz programa u korisnickom prostoru, kako bi odlucili da li cete primiti ili odbaciti paket na osnovu njegove valjanosti. 77..22.. KKeerrnneell uurreeddaajjii Na Linuxu ce vam u osiguranju pomoci i nekoliko blok i znakovnih uredaja. Kroz dva uredaja /dev/random i /dev/urandom kernel stalno daje slucajne podatke. I /dev/random i /dev/urandom bi trebali biti dovoljno sigurni za koristenje u generiranju PGP kljuceva, SSH izazova i drugim primjenama gdje su potrebni sigurni, slucajni brojevi. Napadaci ne bi smjeli moci predvidjeti slijedeci broj na temelju bilo kojeg pocetnog niza brojeva iz tih izvora. Ulozeno je mnogo napora u osiguravanju da su brojevi koje dobijete odatle slucajni u svakom smislu rijeci slucajni. Jedina je razlika sto /dev/random-u ponestane brojeva i pa morate cekati da ih se vise nakupi. No, na nekim sustavima, moze dugo cekati na novi ulaz korisnickih podataka u sustav. Zato prije koristenja /dev/random morate biti pazljivi. (Mozda je najbolje rjesenje reci korisniku da udara po tipkovnici dok mu ne kazete "U redu, dosta je" dok generirate osjetljive kljuceve.) /dev/random pruza vrlo kvalitetnu entropiju, generiranu mjerenjem vremena izmedu interruptova i slicno. Ako nema dovoljno komada slucajnih podataka, blokira se. /dev/urandom je slican, ali kada je zaliha entropije mala, dat ce vam kriptografski jaku izmjenu onoga sto ima. To nije sigurno, ali je dovoljno vecini aplikacija. Mozda cete citati iz tih uredaja koristeci nesto kao: root# head -c 6 /dev/urandom | uuencode - To ce na konzoli ispisati sest slucajnih znakova prikladnih za generiranje lozinke. Za opis algoritma pogledajte /usr/src/linux/drivers/char/random.c. Hvala Theodoreu Y. Ts'ou, Jonu Lewisu i drugima s Linux-kernel mailing liste sto su mi (Daveu) pomogli s ovim. 88.. SSiigguurrnnoosstt mmrreezzee Sigurnost mreze postaje sve vise vazna jer ljudi na njoj provode sve vise vremena. Kompromitiranje sigurnosti mreze cesto je puno lakse nego kompromitiranje lokalne ili fizicke sigurnosti, te puno cesce. Ima vise dobrih alata koji ce vam pomoci u osiguravanju mreze, a sve vise ih se isporucuje s Linux distribucijama. 88..11.. SSnniiffeerrii ppaakkeettaa Jedan od najcescih nacina na koji uljez dobiva pristup vise racunala na vasoj mrezi je pokretanjem snifera paketa na vec osvojenom racunalu. Taj "snifer" samo na Ethernet portu slusa stvari kao sto je "Password", "Login" i "su" u toku paketa i zatim promet koji slijedi zapisuje. Na taj nacin napadac dobiva lozinke za sustave u koje nije ni pokusao provaliti. Lozinke u cistom tekstu osobito su ranjive na takav napad. PRIMJER: racunalo A je kompromitirano. Napadac instalira snifer. Snifer zapazi administratora koji se logira u racunalo B s racunala C. Dobiva osobnu lozinku administratora dok se logira na B. Zatim administrator pokrece su da bi rijesio neki problem. Sada napadac ima lozinku za racunalo B. Napon toga administrator nekome dopusta da se s njegovog racuna logira na racunalo Z na nekoj drugoj mrezi. Sada napadac ima login/lozinku za racunalo Z. U danasnja vremena napadac vise ne mora ni kompromitirati racunalo da bi to izveo, moze jednostavno donijeti i laptop ili PC u zgradu i prikvaciti se na vasu mrezu. Koristenje ssh ili drugih metoda enkriptiranja lozinki onemogucava ovaj napad. Stvari kao sto je APOP za POP racune takoder ga sprecavaju. (Obicni POP logini vrlo su ranjivi na njega, kao i sve ostalo sto preko veze salje citljive lozinke.) 88..22.. UUsslluuggee ssuussttaavvaa ii ttccpp__wwrraappppeerrii Cim svoj Linux sustav stavite na _b_i_l_o _k_o_j_u mrezu, prvo morate pogledati koje usluge trebate ponuditi. Usluge koje ne morate nuditi treba iskljuciti tako da se brinete o jednoj stvari manje, a napadaci imaju manje mjesta za iskoristavanje rupa. Pod Linuxom ima vise nacina za iskljucivanje usluga. Mozete pogledati svoju /etc/inetd.conf datoteku i vidjeti koje usluge nudi inetd. Iskljucite one nepotrebne komentiranjem (stavite # na pocetku reda), a zatim svom inetd procesu posaljite SIGHUP. Takoder mozete obrisati (ili zakomentirati) usluge u svojoj /etc/services datoteci. To znaci da lokalni klijenti takoder nece moci naci uslugu (tj., ako maknete FTP i pokusate FTP-ati drugo racunalo sa svoga, dobit cete poruku "usluga nepoznata"). Obicno nema potrebe brisati usluge jer time ne dobivate nikakvo dodatno osiguranje. Ako lokalni korisnik zeli koristiti FTP cak i ako ste ga zakomentirali, mogu samo reci svom klijentu da koristi standardni FTP port i raditi potpuno normalno. Neke od usluga koje cete zeljeti ostaviti su: · FTP · telnet · mail, kao sto je POP3 ili IMAP · identd · time (vrijeme) Ako znate da odredeni paket uopce necete koristiti, mozete ga i u potpunosti obrisati. rpm -e na distribuciji Red Hat obrisat ce cijeli paket. Na Debianu dpkg vjerojatno obavlja isti posao. Zatim, stvarno cete zeljeti iskljuciti rsh/rlogin/rcp programe, kao i pokretanje logina (koristi ga rlogin), shella (koristi ga rcp) i execa (koristi ga rsh) u /etc/inetd.conf. Ti su protokoli iznimno nesigurni i bili su uzrok mnogih rupa. Trebate provjeriti svoj /etc/rc.d/rcB.d, gdje je B run level vaseg sustava da vidite da li se u tom direktoriju pokrecu posluzitelji koji nisu potrebni. Datoteke u /etc/rc.d/rcB.d zapravo su simbolicke veze na direktorij /etc/rc.d/init.d. Ako preimenujete datoteku u direktoriju init.d, prestat ce vrijediti sve simbolicke veze iz /etc/rc.d/rcB.d. Ako zelite iskljuciti uslugu samo za odredeni run level, odgovarajucoj datoteci u ime stavite malo s umjesto velikog S, kao sto je S45dhcpd. Ako imate rc datoteke u BSD stilu, programe koji vam nisu potrebni potrazite u /etc/rc*. Vecina distribucija Linuxa isporucuje se s tcp_wrapperi, koji "zamataju" sve vase TCP usluge. inetd poziva tcp_wrapper (tcpd) umjesto pravog posluzitelja. Zatim tcpd provjerava racunalo koje zahtijeva uslugu i poziva pravi posluzitelj ili odbija pristup tome racunalu. tcpd vam omogucava ogranicavanje pristupa vasim TCP uslugama. Trebali biste napraviti /etc/hosts.allow i dodati samo ona racunala kojima je potreban pristup uslugama vaseg stroja. Ako ste kucni korisnik s modemskom vezom, predlazemo vam odbijanje pristupa svima. tcpd takoder logira neuspjesne pokusaje pristupa uslugama, tako da saznate kad ste pod napadom. Ako dodate nove usluge, konfigurirajte ih tako da za TCP koriste tcp_wrapper. Na primjer, obicni korisnik s modemskom vezom moze sprijeciti spajanje drugih na njegov stroj zadrzavajuci pritom mogucnost skidanja poste i uspostavljanja veza na Internet. Ako to zelite, mozete dodati ove redove svojem /etc/hosts.allow: ALL: 127 I, naravno, /etc/hosts.deny bi ovako izgledao: ALL: ALL sto ce sprijeciti vanjska spajanja na vase racunalo, ali ostaviti mogucnost unutarnjeg povezivanja na posluzitelje na Internetu. 88..33.. PPrroovvjjeerriittee ssvvoojjee DDNNSS--oovvee Odrzavanje DNS informacija o svim strojevima na vasoj mrezi svjezim moze pomoci u povecavanju sigurnosti. U slucaju povezivanja neodobrenog stroja na vasu mrezu lako cete ga prepoznati po nedostatku DNS zapisa. Mnoge se usluge mogu konfigurirati da ne prihvacaju veze s racunala koje nemaju valjane DNS zapise. 88..44.. iiddeennttdd identd je malen program koji obicno pokrece inetd. On vodi racuna o tome koji korisnik koristi koju TCP uslugu, a zatim to prijavljuje onima koji to traze. Mnogi ljudi ne razumiju korisnost identda, pa ga iskljucuju ili blokiraju sve vanjske zahtijeve za njega. identd nije tu da pomogne udaljenim racunalima. Nema nacina na koji mozete saznati da li su podaci koje ste dobili od udaljenog identda tocni ili ne. U identd zahtjevima nema autentifikacije. Zasto bi ga onda pokrenuli? Jer pomaze _v_a_m_a i jos je jedna ispomoc u pracenju. Ako vas identd nije kompromitiran, onda znate da udaljenim racunalima govori korisnicko ime ili UID ljudi koji koriste TCP usluge. Ako se administrator udaljenog stroja obrati vama i kaze da je taj i taj korisnik pokusavao upasti na njihov stroj, lako mozete poduzeti mjere protiv tog korisnika. Ako nemate identd, morat cete proci kroz puno puno logova, saznati tko je bio logiran u to vrijeme, te opcenito izgubiti puno vise vremena za pronalazenje korisnika. identd koji se isporucuje s vecinom distribucija konfigurabilniji je nego sto mnogi misle. Za odredene korisnike ga mozete ugasiti (mogu napraviti datoteku .noidentd), mozete biljeziti sve identd zahtjeve (preporucam), cak ga mozete natjerati da vrati UID umjesto korisnickog imena, ili cak NO-USER. 88..55.. SSAATTAANN,, IISSSS ii ddrruuggii mmrreezznnii sskkeenneerrii Postoji vise raznih softverskih paketa za skeniranje strojeva i mreza na osnovu portova i usluga. SATAN i ISS dva su poznatija. Oni se povezu s ciljnim racunalom (ili svim takvim na mrezi) na svim mogucim portovima, pokusavajuci saznati koje se tamo nude usluge. Na osnovu tih informacija mozete naci racunalo ranjivo na odredenu rupu na posluzitelju. SATAN (SSecurity AAdministrator's TTool for AAnalyzing NNetworks -- alat sigurnosnog administratora za analizu mreza) je port skener s WWW suceljem. Moze se konfigurirati za laganu, srednju ili temeljitu provjeru na racunalu ili mrezi racunala. Pametno je nabaviti SATAN i skenirati svoje racunalo ili mrezu i popraviti pronadene probleme. Budite sigurni da ste SATAN dobili sa sunsitea ili uglednog FTP ili WWW posluzitelja. Preko mreze se distribuirala trojanska kopija SATAN- a. <http://www.trouble.org/~zen/satan/satan.html> ISS (IInternet SSecurity SScanner) je jos jedan port skener. Brzi je od SATAN-a i zbog toga bolji za vece mreze. Medutim, SATAN pruza vise detalja. Abacus-Sentry je komercijalni port skener s www.psionic.com. Pogledajte njegovu WWW stranicu za vise informacija: <http://www.psionic.com>. OOttkkrriivvaannjjee ppoorrtt sskkeenneerraa Postoje neki alati koji ce vas uzbuniti tokom testiranja SATAN- om, ISS-om ili drugim programima za skeniranje. No, slobodno koristenje tcp_wrappera i redovito provjeravanje logova dat ce isti rezultat. Cak i pri najslabijoj jacini SATAN ostavlja tragove u log datotekama na standardnom Red Hat sustavu. 88..66.. sseennddmmaaiill,, qqmmaaiill ii MMTTAA--oovvii Jedna od najvaznijih usluga koju mozete ponuditi je posluzitelj poste. Nazalost, to je i jedna od najranjivijih, zbog broja zadataka koje obavlja i privilegija koje obicno treba. Ako koristite sendmail, vrlo je vazno odrzavati verziju svjezom. sendmail ima dugu, dugu povijest sigurnosnih rupa. Uvijek budite sigurni da imate najnoviju verziju. <http://www.sendmail.org/> Ako vam je dosta nadogradivanja sendmaila svaki tjedan, mozete se prebaciti na qmail. qmail je ispocetka oblikovan s paznjom na sigurnost. Brz je, stabilan i siguran. <http://www.qmail.org> 88..77.. DDeenniiaall ooff SSeerrvviiccee ((ppoorriiccaannjjee uusslluuggaa)) nnaappaaddii Kod Denial of Service napada napadac pokusava neki resurs zauzeti toliko da on nije u stanju odgovarati na dobre zahtjeve, odnosno uskratiti dobrim korisnicima pristup vasem stroju. Broj takvih napada u zadnjih je nekoliko godina vrlo porastao. Neki od najpopularnijih i najnovijih navedeni su dolje. Medutim, novi se stalno pojavljuju, pa je ovo samo nekoliko primjera. Za svjezije informacije citajte Linux liste o sigurnosti i bugtraq listu i arhive. SSYYNN ffllooooddiinngg SYN flooding (SYN "poplava") je mrezni DoS napad. Iskoristava "kruzenje" u nacinu na koji se stvaraju TCP veze. Noviji Linux kerneli (2.0.30 i vise) imaju nekoliko konfigurabilnih opcija za sprecavanje SYN flood napada koji ljudima onemogucavaju pristup vasem racunalu ili uslugama. Za pravilnu zastitu u kernelu pogledajte dio o sigurnosti kernela. PPeennttiiuumm FF0000FF ggrreesskkaa Nedavno je otkriveno da niz asembliranih naredbi poslan pravom Intel Pentium procesuru resetira racunalo. To vrijedi za svaki stroj s Pentium procesorom (ne klonovima, niti Pentiumom Pro ili PII), bez obzira na koji operacijski sustav koristi. Linux kernel 2.0.32 i bolji sadrze zaobilaznicu za ovu gresku koja sprecava rusenje racunala. Kernel 2.0.33 ima bolju verziju rjesenja i preporuca se prije 2.0.32. Ako radite na Pentiumu, odmah se nadogradite! PPiinngg ffllooooddiinngg Ping flooding je jednostavan DoS napad grubom silom. Napadac vasem racunalu salje "poplavu" ICMP paketa. Ako to rade s racunala s boljom propusnoscu mreze od vaseg, vase nece moci poslati nista na mrezu. Varijacija ovog napada, zvana ssmmuurrffiinngg vasem stroju salje ICMP pakete s povratnom adresom _v_a_s_e_g stroja, tako ih je teze otkriti. Vise informacija o smurf napadu mozete naci na <http://www.quadrunner.com/~chuegen/smurf.txt>. Ako ikada budete pod ping flood napadom, koristite alat kao sto je tcpdump kako bi otkrili odakle paketi dolaze (ili se cini da dolaze), a zatim s tim informacijama kontaktirajte svog ISP-a. Ping floodovi najlakse se zaustavljaju na razini rutera ili koristenjem firewalla. PPiinngg oo'' DDeeaatthh Ping o' Death napad rezultat je dolazecih IICCMMPP EECCHHOO RREEQQUUEESSTT paketa vecih od onog sto moze podnijeti kernel struktura za pohranjivanje tih podataka. Zbog toga sto slanje jednog velikog (65 510 bajtova) ping paketa mnogim sustavima uzrokuje njihovo rusenje ovaj je problem ubrzo rjesen i vise se o njemu ne treba brinuti. TTeeaarrddrroopp//NNeeww TTeeaarr Jedan od najnovijih napada koji iskoristava gresku u kodu za IP fragmentaciju na Linuxu i Windowsima. Rjesen je u verziji kernela 2.0.33 i ne zahtijeva odabiranje bilo koje opcije pri kompajliranju kernela. Cini se da Linux nije ranjiv na newtear napad. Vecinu koda koji iskoristava rupe i detaljnije informacije kako rade mozete naci na <http://www.rootshell.com> koristenjem pretrazivanja. 88..88.. SSiigguurrnnoosstt NNFFSS--aa NFS (NNetwork FFile SSystem -- mrezni datotecni sustav) je vrlo rasprostranjen protokol za dijeljenje datoteka. Omogucava posluziteljima na kojima radi nfsd i mountd da "izvoze" cijele datotecne sustave drugim strojevima koji imaju podrsku za NFS u svojim kernelima (ili drukciju podrsku ako to nisu Linuxi). mountd vodi racune o montiranim datotecnim sustavima u /etc/mtab i moze ih pokazati preko naredbe showmount. Mnogi sustavi koriste NFS za posluzivanje home direktorija korisnicima, tako da nije vazno s kojeg se stroja u tom dijelu logiraju jer ce uvijek imati svoje datoteke. U izvozenju datotecnih sustava moguc je manji stupanj "sigurnosti". Mozete natjerati nfsd da mapira vanjskog root korisnika (UID=0) na nobody (nitko) korisnika, onemogucavajuci im potpun pristup datotekama koje se izvoze. Medutim, posto pojedini korisnici imaju svoj pristup (ili barem isti UID) datotekama, udaljeni se nadkorisnik moze logirati ili su-ati na njihov racun i imati potpun pristup datotekama. To je samo mala smetnja napadacu koji ima pristup montiranju vasih udaljenih datotecnih sustava. Ako bas morate koristiti NFS, provjerite da li izvozite samo onim strojevima kojima je to nuzno. Nikad ne izvozite cijeli svoj root direktorij, izvozite samo potrebne direktorije. Za vise informacija o NFS-u procitajte NNFFSS HHOOWWTTOO: <http://sunsite.unc.edu/mdw/HOWTO/NFS-HOWTO.html>. 88..99.. NNIISS ((bbiivvssii YYPP)) NIS (NNetwork IInformation SServices -- mrezna informativna usluga, bivsi YP) je sredstvo distribuiranja informacija skupini racunala. NIS master sadrzi informacijske tabele koje pretvara u NIS map datoteke. Te se mape onda nude preko mreze omogucavajuci NIS klijent strojevima dobivanje informacija o loginu, lozinki, home direktoriju i ljusci (sve informacije iz standardnog /etc/passwd). To korisnicima omogucava mijenjanje lozinke jednom, koje zahvaca sve stroje u NIS domeni. NIS uopce nije siguran. To nikad nije ni trebao biti. Trebao je biti jednostavan i koristan. Svatko tko moze pogoditi ime vase NIS domene (bilo gdje na mrezi) moze dobiti primjerak vase passwd datoteke i koristiti Crack i John the Ripper na lozinkama vasih korisnika. Moguce je i prisluskivanje NIS-a i mnoge vrste prljavih trikova. Ako morate koristiti NIS, budite barem svjesni opasnosti. Postoji puno sigurnija zamjena za NIS, NIS+. Za vise informacija pogledajte NNIISS HHOOWWTTOO: <http://sunsite.unc.edu/mdw/HOWTO/NIS- HOWTO.html>. 88..1100.. FFiirreewwaalllloovvii Firewallovi su sredstvo ogranicavanja protoka informacija u i iz vase lokalne mreze. Obicno je firewall stroj spojen i na Internet i na vas LAN, tako da se Internetu iz vaseg LAN-a moze pristupiti samo kroz njega. Na taj nacin firewall kontrolira sto prolazi vezom izmedu Interneta i vaseg LAN-a. Postoji vise vrsta i nacina postavljanja firewalla. Linux strojevi prilicno su dobri i jeftini firewallovi. Kod za firewall moze se ugraditi ravno u 2.0 i bolje kernele. ipfwadm, alat u korisnickom prostoru, omogucava vam mijenjanje u letu tipova mreznog prometa koje propustate. Odredene vrste mreznog prometa mozete i logirati. Firewallovi su vrlo korisna i vazna tehnika osiguravanja vase mreze. Vazno je da shvatite kako nikad ne smijete misliti da, samo zato sto imate firewall, ne trebate sigurne strojeve iza njega. To je smrtna greska. Pogledajte vrlo dobar FFiirreewwaallll HHOOWWTTOO na svojoj najsvjezijoj sunsite arhivi za vise informacija o firewallima pod Linuxom. <http://sunsite.unc.edu/mdw/HOWTO/Firewall-HOWTO.html> Vise informacija takoder se moze naci u IIPP--MMaassqquueerraaddee mmiinnii--HHOOWWTTOO: <http://sunsite.unc.edu/mdw/HOWTO/mini/IP-Masquerade.html>- Vise informacija o ipfwadmu (alatu kojim mozete mijenjati opcije svog firewalla) moze se naci na njegovoj WWW stranici: <http://www.xos.nl/linux/ipfwadm/>. 99.. SSiigguurrnnoossnnee pprriipprreemmee ((pprriijjee nneeggoo ssee uukklljjuucciittee uu mmrreezzuu)) Dakle, provjerili ste svoj sustav, odlucili da je dovoljno siguran i spremni ste ga ukljuciti u mrezu. Nekoliko je stvari koje bi sada trebali obaviti kako bi bili spremni u slucaju da se upad stvarno dogodi, tako da uljeza brzo mozete onemoguciti i oporaviti se te nastaviti rad. 99..11.. NNaapprraavviittee ppoottppuunn bbaacckkuupp ssvvooggaa ssttrroojjaa Rasprava o metodama backupa i pohranjivanja izvan je dosega ovog dokumenta, ali nekoliko rijeci vezanih uz backup i sigurnost: Ako na particiji imate manje od 650 MB podataka, CD-R kopiranje podataka je dobra metoda (jer je s njime tesko kasnije petljati, a ako se pravilno pohrani moze trajati dugo vremena). Trake i druge medije na koje se ponovo moze pisati treba zastiti od pisanja cim je vas backup potpun i provjeren za sprecavanje petljanja. Osigurajte da su vasi backupi pohranjeni u sigurnom podrucju iskljucenom iz mreza. Dobar backup osigurava dobru pocetnu tocku za vracanje sustava u normalno stanje. 99..22.. IIzzbboorr ddoobbrroogg rraassppoorreeddaa bbaacckkuuppaa Ciklus od sest traka lako je odrzavati. To se odnosi na cetiri vrpce tijekom tjedna, jednu za parne petke i jednu za neparne petke. Svaki dan obavljajte inkrementalni backup, a svaki petak potpuni. Ako napravite odredene promjene ili sustavu dodate vazne podatke, backup ce vam dobro doci. 99..33.. BBaacckkuuppiirraajjttee ssvvoojjuu RRPPMM iillii DDeebbiiaann bbaazzuu ppooddaattaakkaa ddaattootteekkaa U slucaju provale mozete iskoristiti svoju RPM bazu podataka datoteka kao sto koristite Tripwire, ali samo ako ste sigurni da nije mijenjana. Kopirajte RPM bazu na disketu i stalno ju drzite izvan mreze. Debian distribucija vjerojatno ima nesto slicno. Tocnije, datoteke /var/lib/rpm/fileindex.rpm i /var/lib/rpm/packages.rpm najvjerojatnije nece stati na jednu disketu. Sazete bi trebale stati svaka na svoju. Sada, ako je vas sustav kompromitiran, mozete koristiti naredbu: root# rpm -Va za provjeru svake datoteke na sustavu. Pogledajte man stranicu RPM-a -- postoje neke opcije za manje poruka. To znaci da ce se, svaki put kada se sustavu doda novi RPM, RPM baza morati ponovo arhivirati. Vi odlucite sto vam je draze -- prednosti ili nedostaci. 99..44.. PPrraacceennjjee llooggoovvaa vvaasseegg ssuussttaavvaa Vrlo je vazno da informacije koje dolaze od sysloga nisu kompromitirane. Dati dozvole za citanje i pisanje u /var/log samo ogranicenom broju korisnika dobar je pocetak. Svakako pratite sto se tamo biljezi, posebno za aauutthh. Visestruki neuspjesni logini, na primjer, mogu znaciti pokusaj provale. Gdje cete naci log datoteke ovisi o vasoj distribuciji. Na Linux sustavu koji slijedi LLiinnuuxx FFiilleessyysstteemm SSttaannddaarrdd, kao sto je Red Hat, potrazit cete ih u /var/log i tamo provjeravati messages, mail.log i druge. Gdje vasa distribucija logira stvari saznat cete u svojoj /etc/syslog.conf datoteci. To je datoteka koja govori syslogd-u (demonu za logiranje sustava) gdje da logira razne poruke. Takoder cete mozda htjeti konfigurirati svoju skriptu ili demon za rotiranje logova, tako da logovi traju dulje i da imate vise vremena za njihovo pregledavanje. Na novijim distribucijama Red Hata pogledajte paket logrotate. Druge distribucije vjerojatno imaju slican proces. Ako je s vasim logovima netko petljao, pokusajte saznati kada je petljanje pocelo i s cim je sve izgleda petljano. Postoje li dugi periodi vremena za koje nema podataka? Dobra je ideja provjeriti backup traka (ako ih imate) za izvorne log datoteke. Uljez obicno mijenja logove kako bi prikrio tragove, ali svejedno ih treba provjeravati za cudne stvari. Mozda primjetite kako je uljez pokusavao uci ili iskoristiti sigurnosnu rupu kako bi dobio rootov racun. Mozda vidite logove prije nego sto ih uljez stigne izmjeniti. Trebali biste odvojiti auth od drugih logova, kao sto su pokusaji koristenja su za zamjenu korisnika, pokusaje logina i druge informacije o korisnicima. Ako je to moguce, konfigurirajte syslog da salje kopije svih najvaznijih podataka na siguran sustav. To ce sprijeciti uljeza u prikrivanju tragova preko brisanja svojih pokusaja logina/su-a/FTP- a/itd. Pogledajte man stranicu syslog.conf i opciju @@. Na kraju, log datoteke su mnogo nekorisnije kada ih nitko ne cita. Oduzmite si malo vremena svako malo i pogledajte svoje logove, te probajte shvatiti kako izgleda obican dan. To ce vam pomoci u uocavanju neobicnih stvari. 99..55.. PPrriimmjjeenniittee ssvvee nnoovvee nnaaddooggrraaddnnjjee ssuussttaavvaa Vecina korisnika Linuxa instalira s CD-ROM-a. Zbog brzog ritma sigurnosnih ispravaka, stalno izlaze novi (ispravljeni) programi. Prije nego sto se povezete s mrezom, pametno je provjeriti FTP posluzitelj svoje distribucije (na primjer ftp.redhat.com) i nabaviti sve novije pakete otkad ste primili CD-ROM distribucije. Cesto takvi paketi sadrze vazne sigurnosne ispravke, pa je pametno instalirati ih. 1100.. SSttoo uucciinniittii ttookkoomm ii nnaakkoonn pprroovvaallee Dakle, jeste li slijedili neke od ovih (ili drugih) savjeta i otkrili provalu? Najprije trebate ostati stalozeni. Panicni postupci mogu uzrokovati vise stete od napadaca. 1100..11.. NNaarruussaavvaannjjee ssiigguurrnnoossttii uupprraavvoo ssee ooddvviijjaa Uocavanje narusavanja sigurnosti koje se upravo odvija moze biti napeto. Vasa reakcija imat ce velike posljedice. Ako je narusavanje kojeg gledate fizicko, vjerojatno ste uocili nekoga tko je provalio u vas dom, ured ili laboratorij. Trebate obavijestiti lokalne vlasti. U laboratoriju ste mozda vidjeli kako netko pokusava otvoriti kuciste ili resetirati stroj. Ovisno o vasem autoritetu i postupcima, mozete ih zamoliti da prestanu ili pozvati svoje lokalno osiguranje. Ako ste uocili lokalnog korisnika koji pokusava narusiti vasu sigurnost, prvo trebate potvrditi da je on stvarno onaj za kojeg mislite da je on. Provjerite odakle se logirao. Je li to racunalo s kojeg se i normalno logiraju? Ne? Onda ga kontaktirajte neelektronskim sredstvima. Na primjer, pozovite ih telefonom ili odsetajte do njihovog ureda/doma i razgovarajte s njima. Ako kazu da su logirani, mozete ih zatraziti da objasne sto su radili ili da to prestanu raditi. Ako nisu i nemaju blage veze o cemu govorite, taj dogadaj vjerojatno zahtjeva dodatnu istragu. Pazite na takve dogadaje i skupite puno informacija prije nego nekoga optuzite. Ako ste otkrili mreznom narusavanje, najprije (ako mozete) iskljucite mrezu. Ako su spojeni modemom, iskljucite kabel modema, a ako su spojeni Ethernetom, iskljucite kabel Etherneta. To ce ih sprijeciti u daljnjem nanosenju stete, a vjerojatno ce to shvatiti kao problem u mrezi, a ne razotkrivanje. Ako ne mozete iskljuciti mrezu (imate vrlo zaposlen posluzitelj ili nemate fizicku kontrolu nad svojim racunalima), slijedeci najbolji korak je onemogucavanje veza s uljezovog racunala pomocu tcp_wrappera ili ipfwadma. Ako ne mozete iskljuciti sve ljude sa stroja na kojem je uljez, morat cete se zadovoljiti iskljucivanjem korisnickog racuna. Primjetite da to nije jednostavno. Morate paziti na .rhosts datoteke, FTP pristup i hrpu straznjih vrata). Nakon sto ste ucinili nesto od navedenog (iskljucili mrezu, onemogucili pristup sa njegovog racunala i/ili iskljucili njegov racun), morate mu ubiti sve procese i odlogirati ih. Slijedecih nekoliko minuta morate pazljivo gledati na svoj stroj jer ce napadac pokusati uci ponovno. Mozda ce koristiti drugi racun i/ili mreznu adresu. 1100..22.. NNaarruussaavvaannjjee ssiigguurrnnoossttii vveecc ssee ddooggooddiilloo Uocili ste narusavanje koje se vec dogodilo ili ste ga uocili i iskljucili (jos bolje) napadaca iz sustava. Sto sad? 1100..22..11.. ZZaattvvaarraannjjee rruuppee Ako mozete otkriti nacin na koji je napadac usao u vas sustav, pokusajte zatvoriti rupu. Na primjer, mozda vidite nekoliko zapisa o FTP-u bas prije nego sto se korisnik logirao. Iskljucite FTP uslugu i provjerite da li postoji novija verzija ili neka od listi zna rjesenje. Provjerite sve svoje log datoteke i pogledajte da li na vasim listama i stranicama o sigurnosti ima novih rupa koje mozete ispraviti. Calderine sigurnosne ispravke mozete naci na <http://www.caldera.com/tech-ref/security/>. Red Hat jos nije odvojio sigurnosne ispravke od ispravaka gresaka, no ispravci za njihovu distribuciju nalaze se na <http://www.redhat.com/errata>. Vrlo je vjerojatno da ce, ako je jedna tvrtka izdala sigurnosnu ispravku, to ubrzo uciniti i ostale. Ako ne izbacite napadaca, vjerojatno ce se vratiti. Ne samo na vase racunalo, nego negdje na vasu mrezu. Ako je pokrenuo snifer paketa, velike su sanse da ima pristup drugim lokalnim strojevima. 1100..22..22.. PPrrooccjjeennjjiivvaannjjee sstteettee Najprije procjenite stetu. Sto je naruseno? Ako imate provjeru cjelovitosti kao sto je Tripwire, pokrenite ju i ona ce vam reci. Ako ne, morat cete sami pogledati sve svoje najvaznije podatke. Posto je Linux sustave sve lakse i lakse instalirati, mozete svoje konfiguracijske snimiti na sigurno, obrisati svoj disk/ove i ponovno instalirati, a zatim vratiti korisnicke datoteke iz backupa i konfiguracijske datoteke. To ce osigurati nov, cist sustav. Ako morate spasavati datoteke s kompromitiranog sustava, budite posebno pazljivi s programima koje vratite jer to mogu biti trojanski konji koje je postavio uljez. 1100..22..33.. BBaacckkuupp,, bbaacckkuupp,, bbaacckkuupp!! Redovit backup dar je s neba za sigurnosne probleme. Ako je vas sustav kompromitiran, potrebne podatke mozete vratiti s backupa. Naravno, neki podaci su vrijedni i napadacu, i on ce ga ne samo unistiti, vec i ukrasti i imati svoje kopije, ali barem cete jos uvijek imati podatke. Provjerite nekoliko proslih backupa prije nego vratite datoteku s kojom je petljano. Uljez je mozda kompromitirao vase datoteke prije puno vremena, a vi ste mogli napraviti mnogo uspjesnih backupa kompromitirane datoteke! Narvno, mnostvo je sigurnosnih briga s backupima. Potrudite se da su na sigurnom mjestu. Budite svjesni tko im ima pristup. (Ako napadac moze doci do vasih backupa, ima pristup do svih vasih podataka, a da vi toga niste ni svjesni.) 1100..22..44.. PPrroonnaallaazzeennjjee uulljjeezzaa U redu, izbacili ste uljeza i sredili sustav, ali jos niste gotovi. Iako ce vjerojatno vecina uljeza ostati neuhvacena, trebate prijaviti napad. Napad prijavite administratoru sustava s kojeg je napadac napao vas sustav. Mozete ga naci pomocu whois ili internicove baze podataka. Mozete mu poslati e-mail sa svim primjenjivim zapisima u logu i datumima i vremenima. Ako ste uocili jos nesto posebno za svog uljeza, spomenite i to. Nakon sto ste poslali e-mail, trebali biste ga (ako ste toliko zapeli) i nazvati telefonom. Ako taj administrator uoci vaseg napadaca, onda on moze kontaktirati administratora sustava odakle je dosao i tako dalje. Dobri hakeri cesto koriste mnogo posrednih sustava. Neki (ili mnogi) od njih mozda ni ne znaju da su napadnuti. Pokusati doci do krekerovog pocetnog sustava moze biti tesko. Ljubaznim ponasanjem prema administratorima od njih mozete dobiti puno pomoci. Takoder biste trebali obavijestiti sigurnosne organizacije kojih ste dio (CERT ili slicno). 1111.. IIzzvvoorrii iinnffoorrmmaacciijjaa oo ssiigguurrnnoossttii Tamo vani ima _p_u_n_o dobrih stranica o sigurnosti UNIX-a opcenito i specificno Linuxa. Vrlo je vazno da se pretplatite na jednu (ili vise) sigurnosnih mailing listi i pratite sigurnosne ispravke. Vecina takvih listi ima vrlo malo prometa i vrlo su informativne. 1111..11.. FFTTPP ppoosslluuzziitteelljjii CERT je CComputer EEmergency RResponse TTeam (skupina za hitnu racunalnu pomoc). Cesto salju uzbune o trenutnim napadima uz ispravke. <ftp://ftp.cert.org/> Replay ima arhive mnogih programa za sigurnost. Posto su izvan SAD-a, ne moraju postovati americka kriptografska ogranicenja. <ftp://ftp.replay.com/> Matt Blaze je autor CFS-a i sjajan promicatelj sigurnosti. <ftp://ftp.research.att.com/pub/mab/> tue.nl je odlican sigurnosni FTP server u Nizozemskoj. <ftp://ftp.win.tue.nl/pub/security/> 1111..22.. WWWWWW ssttrraanniiccee TThhee HHaacckkeerr FFAAQQ je FAQ o hakerima: <http://www.solon.com/~seebs/faqs/hacker.html> COAST arhiva ima velik broj Unix sigurnosnih programa i informacija: <http://www.cs.purdue.edu/coast/> Rootshell.com su odlicne stranice za trazenje rupa koje trenutno krekeri koriste: <http://www.rootshell.com/> BUGTRAQ objavljuje savjete o sigurnosnim problemima: <http://www.netspace.org/lsv-archive/bugtraq.html> CERT, CComputer EEmergency RResponse TTeam (skupina za hitnu racunalnu pomoc), objavljuje savjete o cestim napadima na Unix platforme: <http://www.cert.org/> Dan Farmer je autor SATAN-a i mnogih drugih sigurnosnih alata, a njegove stranice imaju neke zanimljive ankete o sigurnosti kao i sigurnosne alate: <http://www.trouble.org> The Linux security WWW dobre su stranice za informacije o sigurnosti Linuxa: <http://www.aoy.com/Linux/Security/> Reptile na svojim stranicama ima dosta dobrih informacija o Linux sigurnosti: <http://207.237.120.45/linux/> Infilsec ima engine za ranjivosti koji vam kaze na sto je ranjiva vasa platforma: <http://www.infilsec.com/vulnerabilities/> CIAC redovito objavljuje sigurnosne biltene o cestim rupama: <http://ciac.llnl.gov/cgi-bin/index/bulletins> Dobra pocetna tocka za Linux Pluggable Authentication Modules (ukljucivi moduli za autentifikaciju) moze se naci na <http://www.kernel.org/pub/linux/libs/pam/>. 1111..33.. MMaaiilliinngg lliissttee BUGTRAQ: za pretplatu na BUGTRAQ posaljite poruku na listserv@netspace.org s retkom subscribe bugtraq u tijelu poruke. (Za arhive pogledajte gore navedeno.) CIAC: posaljite poruku na majordomo@tholia.llnl.gov. U _t_i_j_e_l_u (ne Subject:-u) poruke stavite (jedno ili drugo ili oboje) subscribe ciac- bulletin. 1111..44.. KKnnjjiiggee ---- ttiisskkaannii mmaatteerriijjaallii zzaa cciittaannjjee Postoji vise dobrih knjiga o sigurnosti. Ovaj dio navest ce ih nekoliko. Uz knjige specificno o sigurnosti, sigurnost je pokrivena i u dosta drugih knjiga o administriranju sustava. D. Brent Chapman i Elizabeth D. Zwicky: BBuuiillddiinngg IInntteerrnneett FFiirreewwaallllss 1. izdanje, rujan 1995. ISBN: 1-56592-124-0 Simson Garfinkel i Gene Spafford: PPrraaccttiiccaall UUNNIIXX && IInntteerrnneett SSeeccuurriittyy 2. izdanje, travanj 1996. ISBN: 1-56592-148-8 Deborah Russell i G.T. Gangemi, Sr.: CCoommppuutteerr SSeeccuurriittyy BBaassiiccss 1. izdanje, srpanj 1991. ISBN: 0-937175-71-4 Olaf Kirch: LLiinnuuxx NNeettwwoorrkk AAddmmiinniissttrraattoorr''ss GGuuiiddee 1. izdanje, sijecanj 1995. ISBN: 1-56592-087-2 Simson Garfinkel: PPGGPP:: PPrreettttyy GGoooodd PPrriivvaaccyy 1. izdanje, prosinac 1994. ISBN: 1-56592-098-8 David Icove, Karl Seger i William VonStorch (savjetodavni urednik Eugene H. Spafford): CCoommppuutteerr CCrriimmee AA CCrriimmeeffiigghhtteerr''ss HHaannddbbooookk 1. izdanje, kolovoz 1995. ISBN: 1-56592-086-4 1122.. RRjjeeccnniikk HHoosstt Racunalni sustav povezan na mrezu. (racunalo, sustav) FFiirreewwaallll Komponenta ili skup komponenti koje ogranicavaju pristup izmedu zasticene mreze i Interneta ili izmedu drugih skupina mreza. BBaassttiioonn hhoosstt Racunalni sustav koji mora biti vrlo osiguran jer je ranjiv na napade, obicno zato sto je izlozen Internetu i glavna tocka kontakta korisnika internih mreza. Ime je dobio po vrlo utvrdenim gradevinama na vanjskim zidovima srednjevjekovnih dvoraca. Bastioni nadgledaju kriticna podrucja obrane, obicno uz jake zidove, prostor za dodatne trupe i ponekad korisne lonce pune kipuceg ulja za obeshrabrivanje napadaca. DDuuaall--hhoommeedd hhoosstt Opce namjenski racunalni sustav koji ima barem dva mrezna sucelja. PPaacckkeett Osnovna jedinica komunikacije na Internetu. (paket) PPaacckkeett ffiilltteerriinngg Radnja koju obavlja uredaj kako bi selektivno kontrolirao tok podataka u i iz mreze. Filtri paketa odobravaju ili blokiraju pakete, obicno tokom njihovog usmjeravanja iz jedne u drugu mrezu (najcesce iz Interneta u internu mrezu i obratno). Da bi postigli filtriranje paketa, postavljate skup pravila koji odreduje vrste paketa (koji su sa ili za odredenu IP adresu ili port) koje se proslijeduju i koje vrste se blokiraju. (filtriranje paketa) PPeerriimmeetteerr nneettwwoorrkk Mreza dodana izmedu zasticene mreze i vanjske mreze, kako bi pruzila dodatni sloj sigurnosti. Cesto se naziva DMZ. PPrrooxxyy sseerrvveerr Program koji se bavi s vanjskim posluziteljima umjesto internih klijenata. Klijenti proxya razgovaraju s proxy posluziteljima, koji odobrene zahtjeve klijenata prenose stvarnim posluziteljima, a odgovore natrag klijentima. DDeenniiaall ooff SSeerrvviiccee Napad kod kojeg napadac zauzima resurse na vasem racunalu za stvari koje ono ne bi smjelo raditi tako sprecavajuci normalno koristenje vasih mreznih resursa za potrebne stvari. BBuuffffeerr oovveerrffllooww Uobicajeni stil kodiranja nikad ne alocira "dovoljno velike" buffere i ne provjerava da li je presao njihovu velicinu. Kada se takvi bufferi prepune, izvrsni program (demon ili set-uid program) moze se natjerati na neke cudne stvari. Obicno to radi prepunjavanjem povratne adrese funkcije na stacku da pokazuje na drugu lokaciju. IIPP ssppooooffiinngg IP spoofing je slozen tehnicki napad koji se sastoji od nekoliko dijelova. To je sigurnosna rupa koja radi tjeranjem racunala da vjeruju da ste vi netko tko zapravo niste. Opsiran clanak o tome objavili su daemon9, route i infinity u Phrack Magazine, 48. broj, 7. godina. AAuutteennttiiccaattiioonn Mogucnost saznavanja da su primljeni podaci jednaki podacima koji su poslani i da je navedeni posiljatelj stvarni posiljatelj. (autentifikacija) NNoonn--rreeppuuddiiaattiioonn Mogucnost primatelja da dokaze kako je posiljatelj nekih podataka stvarno poslao te podatke, iako posiljatelj poslije moze poricati da je ikad poslao te podatke. (nezamjenjivost) 1133.. CCeessttoo ppoossttaavvlljjaannaa ppiittaannjjaa 1. Je li sigurnije kompajlirati drajver izravno u kernel umjesto kao modul? Odgovor: Neki misle da je bolje iskljuciti mogucnost ucitavanja podrske za uredaje preko modula jer uljez tako moze ucitati trojanski modul ili sam ucitati modul koji bi utjecao na sigurnost sustava. Medutim, da bi ucitali modul, morate biti root. U datoteke modula moze pisati takoder samo root. To znaci da je uljezu potreban pristup rootu da bi ubacio modul. Ako uljez dobije pristup rootu, ima puno ozbiljnijih stvari o kojima treba brinuti nego da li ce ucitati modul. Moduli sluze za dinamicko ucitavanje podrske za odredene uredaje koji se mozda rjede koriste. Na strojevima koji su posluzitelji ili firewallovi na primjer, to je vrlo nevjerojatno. Iz tih razloga, za posluzitelje kompajliranje izravno u kernel ima vise smisla. Takoder, moduli su sporiji od izravne podrske u kernelu. 2. Logiranje kao root s udaljenog stroja uvijek je neuspjesno. Odgovor: Procitajte dio o sigurnosti roota. To je ucinjeno namjerno kako bi se udaljeni korisnici sprijecili u pokusajima spajanja telnetom na vase racunalo kao root, sto je ozbiljna sigurnosna rupa. Ne zaboravite, moguci uljezi vrijeme imaju na svojoj strani i mogu automatski traziti vasu lozinku. 3. Kako da ukljucim shadow lozinke na svom Red Hatu 4.2 ili 5.0? Odgovor: Shadow lozinke su mehanizam spremanja vasih lozinki u datoteku koja nije uobicajena /etc/passwd. To ima nekoliko prednosti. Prva je sto je shadow datoteka, /etc/shadow, citljiva samo za roota, za razliku od /etc/passwd, koja mora ostati citljiva za sve. Druga je prednost sto vi kao administrator mozete ukljuciti ili iskljuciti racune bez da svi znaju stanje racuna drugih korisnika. Onda se datoteka /etc/passwd koristi za pohranjivanje imena korisnika i grupa, koje koriste programi kao sto je /bin/ls za pretvaranje UID-a u odgovarajuce ime korisnika u sadrzaju direktorija. Datoteka /etc/shadow sadrzi samo korisnicko ime i njegovu lozinku, te mozda informacije o racunu, kao sto je datum njegova istjecanja, itd. Ukljuciti shadow lozinke mozete naredbom pwconv kao root. Trebala bi se pojaviti datoteka /etc/shadow koju bi trebale koristiti i aplikacije. Posto koristite RH 4.2 ili bolji, PAM moduli ce se automatski prilagoditi promjeni koristenja normalne /etc/passwd u shadow lozinke, bez ikakvih drugih promjena. Posto vas zanima osiguravanje vasih lozinki, mozda ce vas takoder zanimati generiranje dobrih lozinki na pocetku. Za to mozete koristiti pam_cracklib modul, dio PAM-a. Vasu lozinku provjerava protiv Crack librarya kako bi vam otkrio da li ju je prelako pogoditi iz programa za razbijanje lozinki. 4. Kako da ukljucim Apache SSL prosirenja? Odgovor: a. Nabavite SSLeay 0.8.0 ili noviji s <ftp://ftp.psy.uq.oz.au/pub/Crypto/SSL/>. b. Kompajlirajte, testirajte i instalirajte ga! c. Nabavite izvorni kod Apache 1.2.5. d. Nabavite Apache SSLeay prosirenja s <ftp://ftp.ox.ac.uk/pub/crypto/SSL/apache_1.2.5+ssl_1.13.tar.gz>. e. Otpakirajte ga u direktoriju s izvornim kodom apache 1.2.5 i zakrpite Apache prema README-u. f. Konfigurirajte ga i kompajlirajte. Mozete pogledati i <http://www.replay.com>, gdje se nalaze mnogi vec kompajlirani paketi, i to izvan SAD-a. 5. Kako da radim s korisnickim racunima, ali zadrzim sigurnost? Odgovor: distribucija Red Hat, posebno 5.0, sadrzi velik broj alata za mijenjanje svojstava korisnickih racuna. · Programi pwconv i unpwconv mogu se koristiti za pretvaranje u i iz shadow lozinki. · Programi pwck i grpck mogu se koristiti za provjeravanje pravilne organizacije passwd i group datoteka. · Programi useradd, usermod i userdel mogu se koristiti za dodavanje, brisanje i mijenjanje korisnickih racuna. Programi groupadd, groupmod i groupdel cine isto za grupe. Svi ovi programi svjesni su shadowa -- dakle, ako ukljucite shadow lozinke, koristit ce /etc/shadow za informacije o lozinkama, ako ne, nece. Za daljnje informacije pogledajte odgovarajuce man stranice. 6. Kako mogu odredene HTML dokumente zastititi lozinkom koristeci Apache? Odgovor: Kladim se da niste znali za <http://www.apacheweek.com/>, ne? Informacije o autentifikaciji korisnika mozete naci na <http://www.apacheweek.com/features/userauth>, kao i druge naputke za sigurnost WWW-a na <http://www.apache.org/docs/misc/security_tips.html>. 1144.. ZZaakklljjuuccaakk Ako se pretplatite na mailing liste za sigurnosne uzbune i pratite trenutne verzije, mozete jako popraviti sigurnost svoga stroja. Ako pazite na svoje log datoteke i redovito pokrecete nesto poput Tripwirea, mozete i vise. Na kucnom racunalu nije tesko odrzavati razumnu razinu sigurnosti. Na poslovnim strojevima potrebno je vise napora, ali Linux moze biti itekako sigurna platforma. Zahvaljujuci prirodi njegovog razvoja, sigurnosni ispravci izlaze puno brze nego za komercijalne operacijske sustave, sto Linux cini idealnim kada je sigurnost u pitanju. 1155.. ZZaahhvvaallee Ove informacije skupljene su iz mnogih izvora. Hvala slijedecim ljudima koji su izravno ili neizravno pridonijeli: · Rob Riggs, rob@DevilsThumb.com · S. Coffin, scoffin@netcom.com · Viktor Przebinda, viktor@CRYSTAL.MATH.ou.edu · Roelof Osinga, roelof@eboa.com · Kyle Hasselbacher, kyle@carefree.quux.soltec.net · David S. Jackson, dsj@dsj.net · Todd G. Ruskell, ruskell@boulder.nist.gov · Rogier Wolff, R.E.Wolff@BitWizard.nl 1166.. HHrrvvaattsskkii pprriijjeevvoodd Najnovija verzija ovog prijevoda moze se naci na <http://dokumentacija.linux.hr/Sigurnost-KAKO.html>. Odrzava ga Matej Vela, mvela@public.srce.hr. Svi su prilozi, primjedbe i prijedlozi dobrodosli.