Sigurnost mreže postaje sve više važna jer ljudi na njoj provode sve više vremena. Kompromitiranje sigurnosti mreže često je puno lakše nego kompromitiranje lokalne ili fizičke sigurnosti, te puno češće.
Ima više dobrih alata koji će vam pomoći u osiguravanju mreže, a sve više ih se isporučuje s Linux distribucijama.
Jedan od najčešćih načina na koji uljez dobiva pristup više računala na vašoj mreži je pokretanjem snifera paketa na već osvojenom računalu. Taj "snifer" samo na Ethernet portu sluša stvari kao što je "Password", "Login" i "su" u toku paketa i zatim promet koji slijedi zapisuje. Na taj način napadač dobiva lozinke za sustave u koje nije ni pokušao provaliti. Lozinke u čistom tekstu osobito su ranjive na takav napad.
PRIMJER: računalo A je kompromitirano. Napadač instalira snifer. Snifer
zapazi administratora koji se logira u računalo B s računala C. Dobiva
osobnu lozinku administratora dok se logira na B. Zatim administrator
pokreće su
da bi riješio neki problem. Sada napadač ima lozinku za
računalo B. Napon toga administrator nekome dopušta da se s njegovog računa
logira na računalo Z na nekoj drugoj mreži. Sada napadač ima login/lozinku
za računalo Z.
U današnja vremena napadač više ne mora ni kompromitirati računalo da bi to izveo, može jednostavno donijeti i laptop ili PC u zgradu i prikvačiti se na vašu mrežu.
Korištenje ssh ili drugih metoda enkriptiranja lozinki onemogućava ovaj napad. Stvari kao što je APOP za POP račune također ga sprečavaju. (Obični POP logini vrlo su ranjivi na njega, kao i sve ostalo što preko veze šalje čitljive lozinke.)
Čim svoj Linux sustav stavite na bilo koju mrežu, prvo morate pogledati koje usluge trebate ponuditi. Usluge koje ne morate nuditi treba isključiti tako da se brinete o jednoj stvari manje, a napadači imaju manje mjesta za iskorištavanje rupa.
Pod Linuxom ima više načina za isključivanje usluga. Možete pogledati svoju /etc/inetd.conf datoteku i vidjeti koje usluge nudi inetd. Isključite one nepotrebne komentiranjem (stavite # na početku reda), a zatim svom inetd procesu pošaljite SIGHUP.
Također možete obrisati (ili zakomentirati) usluge u svojoj /etc/services datoteci. To znači da lokalni klijenti također neće moći naći uslugu (tj., ako maknete FTP i pokušate FTP-ati drugo računalo sa svoga, dobit ćete poruku "usluga nepoznata"). Obično nema potrebe brisati usluge jer time ne dobivate nikakvo dodatno osiguranje. Ako lokalni korisnik želi koristiti FTP čak i ako ste ga zakomentirali, mogu samo reći svom klijentu da koristi standardni FTP port i raditi potpuno normalno.
Neke od usluga koje ćete željeti ostaviti su:
Ako znate da određeni paket uopće nećete koristiti, možete ga i u potpunosti
obrisati. rpm -e
na distribuciji Red Hat obrisat će cijeli paket. Na
Debianu dpkg
vjerojatno obavlja isti posao.
Zatim, stvarno ćete željeti isključiti 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
vašeg sustava da vidite da li se u tom direktoriju pokreću poslužitelji koji
nisu potrebni. Datoteke u /etc/rc.d/rcB.d
zapravo su simboličke
veze na direktorij /etc/rc.d/init.d. Ako preimenujete datoteku
u direktoriju init.d
, prestat će vrijediti sve simboličke veze iz
/etc/rc.d/rcB.d
. Ako želite isključiti uslugu samo za određeni
run level, odgovarajućoj datoteci u ime stavite malo s
umjesto
velikog S
, kao što je S45dhcpd
.
Ako imate rc datoteke u BSD stilu, programe koji vam nisu potrebni potražite
u /etc/rc*
.
Većina distribucija Linuxa isporučuje se s tcp_wrapperi, koji "zamataju" sve vaše TCP usluge. inetd poziva tcp_wrapper (tcpd) umjesto pravog poslužitelja. Zatim tcpd provjerava računalo koje zahtijeva uslugu i poziva pravi poslužitelj ili odbija pristup tome računalu. tcpd vam omogućava ograničavanje pristupa vašim TCP uslugama. Trebali biste napraviti /etc/hosts.allow i dodati samo ona računala kojima je potreban pristup uslugama vašeg stroja.
Ako ste kućni korisnik s modemskom vezom, predlažemo vam odbijanje pristupa svima. tcpd također logira neuspješne pokušaje pristupa uslugama, tako da saznate kad ste pod napadom. Ako dodate nove usluge, konfigurirajte ih tako da za TCP koriste tcp_wrapper. Na primjer, obični korisnik s modemskom vezom može spriječiti spajanje drugih na njegov stroj zadržavajući pritom mogućnost skidanja pošte i uspostavljanja veza na Internet. Ako to želite, možete dodati ove redove svojem /etc/hosts.allow:
ALL: 127
I, naravno, /etc/hosts.deny bi ovako izgledao:
ALL: ALLšto će spriječiti vanjska spajanja na vaše računalo, ali ostaviti mogućnost unutarnjeg povezivanja na poslužitelje na Internetu.
Održavanje DNS informacija o svim strojevima na vašoj mreži svježim može pomoći u povećavanju sigurnosti. U slučaju povezivanja neodobrenog stroja na vašu mrežu lako ćete ga prepoznati po nedostatku DNS zapisa. Mnoge se usluge mogu konfigurirati da ne prihvaćaju veze s računala koje nemaju valjane DNS zapise.
identd je malen program koji obično pokreće inetd. On vodi računa o tome koji korisnik koristi koju TCP uslugu, a zatim to prijavljuje onima koji to traže.
Mnogi ljudi ne razumiju korisnost identda, pa ga isključuju ili blokiraju sve vanjske zahtijeve za njega. identd nije tu da pomogne udaljenim računalima. Nema načina na koji možete saznati da li su podaci koje ste dobili od udaljenog identda točni ili ne. U identd zahtjevima nema autentifikacije.
Zašto bi ga onda pokrenuli? Jer pomaže vama i još je jedna ispomoć u praćenju. Ako vaš identd nije kompromitiran, onda znate da udaljenim računalima govori korisničko ime ili UID ljudi koji koriste TCP usluge. Ako se administrator udaljenog stroja obrati vama i kaže da je taj i taj korisnik pokušavao upasti na njihov stroj, lako možete poduzeti mjere protiv tog korisnika. Ako nemate identd, morat ćete proći kroz puno puno logova, saznati tko je bio logiran u to vrijeme, te općenito izgubiti puno više vremena za pronalaženje korisnika.
identd koji se isporučuje s većinom distribucija konfigurabilniji je nego
što mnogi misle. Za određene korisnike ga možete ugasiti (mogu napraviti
datoteku .noidentd
), možete bilježiti sve identd zahtjeve (preporučam),
čak ga možete natjerati da vrati UID umjesto korisničkog imena, ili čak
NO-USER.
Postoji više raznih softverskih paketa za skeniranje strojeva i mreža na osnovu portova i usluga. SATAN i ISS dva su poznatija. Oni se povežu s ciljnim računalom (ili svim takvim na mreži) na svim mogućim portovima, pokušavajući saznati koje se tamo nude usluge. Na osnovu tih informacija možete naći računalo ranjivo na određenu rupu na poslužitelju.
SATAN (Security Administrator's Tool for Analyzing
Networks -- alat sigurnosnog administratora za analizu mreža) je port
skener s WWW sučeljem. Može se konfigurirati za laganu, srednju ili
temeljitu provjeru na računalu ili mreži računala. Pametno je nabaviti SATAN
i skenirati svoje računalo ili mrežu i popraviti pronađene probleme. Budite
sigurni da ste SATAN dobili sa sunsitea
ili uglednog FTP ili WWW
poslužitelja. Preko mreže se distribuirala trojanska kopija SATAN-a.
http://www.trouble.org/~zen/satan/satan.html
ISS (Internet Security Scanner) je još jedan port skener. Brži je od SATAN-a i zbog toga bolji za veće mreže. Međutim, SATAN pruža više detalja.
Abacus-Sentry je komercijalni port skener s www.psionic.com
. Pogledajte
njegovu WWW stranicu za više informacija:
http://www.psionic.com.
Postoje neki alati koji će vas uzbuniti tokom testiranja SATAN-om, ISS-om ili drugim programima za skeniranje. No, slobodno korištenje tcp_wrappera i redovito provjeravanje logova dat će isti rezultat. Čak i pri najslabijoj jačini SATAN ostavlja tragove u log datotekama na standardnom Red Hat sustavu.
Jedna od najvažnijih usluga koju možete ponuditi je poslužitelj pošte. Nažalost, to je i jedna od najranjivijih, zbog broja zadataka koje obavlja i privilegija koje obično treba.
Ako koristite sendmail, vrlo je važno održavati verziju svježom. sendmail ima dugu, dugu povijest sigurnosnih rupa. Uvijek budite sigurni da imate najnoviju verziju. http://www.sendmail.org/
Ako vam je dosta nadograđivanja sendmaila svaki tjedan, možete se prebaciti na qmail. qmail je ispočetka oblikovan s pažnjom na sigurnost. Brz je, stabilan i siguran. http://www.qmail.org
Kod Denial of Service napada napadač pokušava neki resurs zauzeti toliko da on nije u stanju odgovarati na dobre zahtjeve, odnosno uskratiti dobrim korisnicima pristup vašem stroju.
Broj takvih napada u zadnjih je nekoliko godina vrlo porastao. Neki od najpopularnijih i najnovijih navedeni su dolje. Međutim, novi se stalno pojavljuju, pa je ovo samo nekoliko primjera. Za svježije informacije čitajte Linux liste o sigurnosti i bugtraq listu i arhive.
SYN flooding (SYN "poplava") je mrežni DoS napad. Iskorištava "kruženje" u načinu na koji se stvaraju TCP veze. Noviji Linux kerneli (2.0.30 i više) imaju nekoliko konfigurabilnih opcija za sprečavanje SYN flood napada koji ljudima onemogućavaju pristup vašem računalu ili uslugama. Za pravilnu zaštitu u kernelu pogledajte dio o sigurnosti kernela.
Nedavno je otkriveno da niz asembliranih naredbi poslan pravom Intel Pentium procesuru resetira računalo. 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 sadrže zaobilaznicu za ovu grešku koja sprečava rušenje računala. Kernel 2.0.33 ima bolju verziju rješenja i preporuča se prije 2.0.32. Ako radite na Pentiumu, odmah se nadogradite!
Ping flooding je jednostavan DoS napad grubom silom. Napadač vašem računalu šalje "poplavu" ICMP paketa. Ako to rade s računala s boljom propusnošću mreže od vašeg, vaše neće moći poslati ništa na mrežu. Varijacija ovog napada, zvana smurfing vašem stroju šalje ICMP pakete s povratnom adresom vašeg stroja, tako ih je teže otkriti. Više informacija o smurf napadu možete naći na http://www.quadrunner.com/~chuegen/smurf.txt.
Ako ikada budete pod ping flood napadom, koristite alat kao što je tcpdump kako bi otkrili odakle paketi dolaze (ili se čini da dolaze), a zatim s tim informacijama kontaktirajte svog ISP-a. Ping floodovi najlakše se zaustavljaju na razini rutera ili korištenjem firewalla.
Ping o' Death napad rezultat je dolazećih ICMP ECHO REQUEST paketa većih od onog što može podnijeti kernel struktura za pohranjivanje tih podataka. Zbog toga što slanje jednog velikog (65 510 bajtova) ping paketa mnogim sustavima uzrokuje njihovo rušenje ovaj je problem ubrzo rješen i više se o njemu ne treba brinuti.
Jedan od najnovijih napada koji iskorištava grešku u kodu za IP fragmentaciju na Linuxu i Windowsima. Rješen je u verziji kernela 2.0.33 i ne zahtijeva odabiranje bilo koje opcije pri kompajliranju kernela. Čini se da Linux nije ranjiv na newtear napad.
Većinu koda koji iskorištava rupe i detaljnije informacije kako rade možete naći na http://www.rootshell.com korištenjem pretraživanja.
NFS (Network File System -- mrežni datotečni sustav) je vrlo
rasprostranjen protokol za dijeljenje datoteka. Omogućava poslužiteljima
na kojima radi nfsd i mountd da "izvoze" cijele datotečne sustave drugim
strojevima koji imaju podršku za NFS u svojim kernelima (ili drukčiju
podršku ako to nisu Linuxi). mountd vodi račune o montiranim datotečnim
sustavima u /etc/mtab i može ih pokazati preko naredbe
showmount
.
Mnogi sustavi koriste NFS za posluživanje home direktorija korisnicima, tako da nije važno s kojeg se stroja u tom dijelu logiraju jer će uvijek imati svoje datoteke.
U izvoženju datotečnih sustava moguć je manji stupanj "sigurnosti". Možete natjerati nfsd da mapira vanjskog root korisnika (UID=0) na nobody (nitko) korisnika, onemogućavajući im potpun pristup datotekama koje se izvoze. Međutim, pošto pojedini korisnici imaju svoj pristup (ili barem isti UID) datotekama, udaljeni se nadkorisnik može logirati ili su-ati na njihov račun i imati potpun pristup datotekama. To je samo mala smetnja napadaču koji ima pristup montiranju vaših udaljenih datotečnih sustava.
Ako baš morate koristiti NFS, provjerite da li izvozite samo onim strojevima kojima je to nužno. Nikad ne izvozite cijeli svoj root direktorij, izvozite samo potrebne direktorije.
Za više informacija o NFS-u pročitajte NFS HOWTO: http://sunsite.unc.edu/mdw/HOWTO/NFS-HOWTO.html.
NIS (Network Information Services -- mrežna informativna usluga, bivši YP) je sredstvo distribuiranja informacija skupini računala. NIS master sadrži informacijske tabele koje pretvara u NIS map datoteke. Te se mape onda nude preko mreže omogućavajući NIS klijent strojevima dobivanje informacija o loginu, lozinki, home direktoriju i ljusci (sve informacije iz standardnog /etc/passwd). To korisnicima omogućava mijenjanje lozinke jednom, koje zahvaća sve stroje u NIS domeni.
NIS uopće nije siguran. To nikad nije ni trebao biti. Trebao je biti
jednostavan i koristan. Svatko tko može pogoditi ime vaše NIS domene (bilo
gdje na mreži) može dobiti primjerak vaše passwd
datoteke i koristiti
Crack i John the Ripper na lozinkama vaših korisnika. Moguće je i
prisluškivanje NIS-a i mnoge vrste prljavih trikova. Ako morate koristiti
NIS, budite barem svjesni opasnosti.
Postoji puno sigurnija zamjena za NIS, NIS+. Za više informacija pogledajte NIS HOWTO: http://sunsite.unc.edu/mdw/HOWTO/NIS-HOWTO.html.
Firewallovi su sredstvo ograničavanja protoka informacija u i iz vaše lokalne mreže. Obično je firewall stroj spojen i na Internet i na vaš LAN, tako da se Internetu iz vašeg LAN-a može pristupiti samo kroz njega. Na taj način firewall kontrolira što prolazi vezom između Interneta i vašeg LAN-a.
Postoji više vrsta i načina postavljanja firewalla. Linux strojevi prilično su dobri i jeftini firewallovi. Kod za firewall može se ugraditi ravno u 2.0 i bolje kernele. ipfwadm, alat u korisničkom prostoru, omogućava vam mijenjanje u letu tipova mrežnog prometa koje propuštate. Određene vrste mrežnog prometa možete i logirati.
Firewallovi su vrlo korisna i važna tehnika osiguravanja vaše mreže.
Važno je da shvatite kako nikad ne smijete misliti da, samo zato što imate
firewall, ne trebate sigurne strojeve iza njega. To je smrtna greška.
Pogledajte vrlo dobar Firewall HOWTO na svojoj najsvježijoj
sunsite
arhivi za više informacija o firewallima pod Linuxom.
http://sunsite.unc.edu/mdw/HOWTO/Firewall-HOWTO.html
Više informacija također se može naći u IP-Masquerade mini-HOWTO: http://sunsite.unc.edu/mdw/HOWTO/mini/IP-Masquerade.html-
Više informacija o ipfwadmu (alatu kojim možete mijenjati opcije svog firewalla) može se naći na njegovoj WWW stranici: http://www.xos.nl/linux/ipfwadm/.