[ tzeljko @ 18.11.2002. 14:49 ] @
Evo mali tekst o sigurnosti linux sistema.

*intruder - ovako cu zvati hackera/crackera/lamera ili kako god ...
Po mom misljenju, kad se radi o security-u, najbitnije je da razmisljamo kao intruder. Najbitnije je da znamo sta bi mi uradili ako bi dobili root access na nekoj masini, a samim tim bi znali kako i da se odbranimo od toga.
Intruder kada udje kao root, njegov zadatak je da sebe sakrije tako da izgleda kao da nije ni bio logovan, i naravno da ostavi backdoor("zadnja vrata") kako bi ponovo mogao neopazeno da udje na sistem, a pritom da se ne trudi ponovo da dobije root access. Ovo se postize koriscenjem takozvanih RootKit-eva.
Rootkit - to je alatka/skup alatki koje nam omogucavaju da se sakrijemo na sistemu. Koliko sam ja upoznat sa ovim stvarima, postoje dve vrste rootkita. Prvi(losiji) je onaj rootkit koji u sebi sadrzi programe poput ps, ls, du, netstat ...., i kad ga instaliramo na doticnoj masini on samo zameni postojece istoimene programe ali sada ti programi dobijaju dodatne funkcije za koje administrator nije ni svestan da postoje. ps nece prikazati odredjene procese koje navedemo pri njegovom "preuredjivanju". ls nece izlistati fajlove koje navedemo pri njegovom "preuredjivanju".... i tako dalje. Tako da administrator kad izvrsi komandu ps -aux nece primetiti recimo backdoor da je pokrenut, a takodje nece primetiti sa netstat nijednu sumnjivu konekciju.
Nacin da otkrijemo da imamo ove silne programcice zamenjene moze biti na primer koriscenjem md5sum programa. Ovaj program uzima jedinstven otisak fajla koji ne moze biti isti za dva razlicita fajla. Prilikom instaliranja sistema pozeljno je da se pogledaju md5sum-ovi ovih gore navedenih programa i da se zapisu negde na sigurno mesto(papir, file ....). Zatim povremeno(recimo jednom dnevno/nedeljno/mesecno...) pogledaju trenutni md5sum-ovi ovih programa i da se uporede sa onim zapisanim. E tu ima jedna caka koju intruderi koriste a to je da takodje zamene i sam md5sum program tako da on prikazuje prvobitne sumove iako su promenjeni(tacnije ni ne proverava md5sum za te programe nego samo ispise one prvobitne koji su bili pre instaliranja rootkita). Naravno za sve postoji resenje pa i za ovo. Treba samo nakon instalacije linuxa kopirati md5sum na disketu i posle samo njega koristiti pri proveri ovih fajlova.
Druga opcija za resenje koje je korisno u borbi protiv ovih rootkita je to da doticne programe iskopiramo na neko sakriveno mesto na sistemu, i da ih renameujemo(pa mozda cak i da im promenimo velicinu da intruder sa programom find nebi mogao da pronadje ove programe), pa posle da koristimo te programe kad ocemo da proverimo da li ima sumnjivih stvari na sistemu. Pozeljno je takodje da se pri koriscenju ovih stvari koje sam naveo iskljuci logovanje komandi, da intruder nebi mogao da pronadje sta ste vi radili, naravno osim ako nije ostavio sniffer). Ako je u pitanju bash shell, ovo postizemo tako sto ukucamo komandu unset HISTFILE (za ostale shellove nisam siguran, mada mozete pogledati man pages od shella koji vas zanima siguran sam da pise).

Druga vrsta rootkita(naprednija) je preko Kernel Modula.
Jednostavno, napravi se modul koji ce sve ovo da sakriva. Nemoguce ga je pronaci na prethodne nacine jer nista nije menjano vec sve kernel sam radi. Takodje modul kada se ucita nevidi se ni na listi ucitanih modula(komanda lsmod ). Nacin na koji mozemo pronaci ovakav modul je veoma komplikovan, ali jedno je sigurno: modul mora biti nekako ucitan pri bootovanju sistema. Zato mora da se nalazi u nekoj od rc skripti. Ali opet ga nije lako pronaci jer intruder(podrazumevam da je malo pametniji) sigurno nije stavio ime modula da bude hackmodule.so nego je koristio neko standardno ime od nekog modula koji vec postoji i standardno je ucitan, a pritom se ni ne koristi na sistemu, pa vam ovo moze zakomplikovati zivot. Ostaje vam samo da proveravate svaki modul pojedinacno i da iskljucite svaki za koji ste sigurni da vam ne treba. Druga alternativa(mnogo korisnija) je da pri instalaciji linuxa normalno kompajlirate kernel(podrazumevam da je server u pitanju), i da iskljucite Kernel Module Support, i sve sto vam 100% treba ukljucite direktno u kernel, a ostalo iskljucite. Ovim ste se obezbedili od mogucih lkm rootkita koji vas mogu zadesiti.

Takodje, ako je intruder malo gluplji, on ce da izbrise sistemske logove, ali ce ostaviti log na serveru preko koga je upao(tipa wuftpd). Tako da jednostavnim pregledom loga koji sadrzi podatke o logovanju preko ovog servisa, mozete pronaci vaseg intrudera.

Jos jedna varijanta koja je danas sve vise zastupljena, je ta da se syslogd podesi tako da sve logove salje na drugu masinu koja je u mrezi. Tu drugu masinu podesite tako da nema access na internet i otvorite samo port za syslogd, pogasite sve ostale portove sa nekim firewall-om(preporucujem iptables) i resili ste se muka. Logovi su uvek tu.

Jos jedna varijanta koju mozete da koristite je ta da se malo preradi bash shell ili koji shell vec koristitie, tako da pri svakom aktiviranju shella, posalje jedan mail gde vi pozelite, sa listom svih konekcija ili sta god vam padne napamet. (hvala sallletu na ovoj ideji).

Ima jos alternativa(ako ste mozda i paranoicni icon_wink.gif) ili vam je mozda neophodno da sacuvate sistem posto poto)a to je da postavljate raznorazni software tipa IDS (Intrusion Detection System). Nekim od IDS-eva mozete recimo fizicki zabraniti menjanje/brisanje odredjenog fajla/fajlova tako da intruder ne moze da postavi rootkit(onaj prvi sto sam pricao). Da bi sklonio ovakvu zabranu, mora da se unese password pa ako je password neki komplikovaniji(citaj r4diJ4tOr), onda su sanse za intrudera veoma veoma male, mada ima i tu nekih fora oko zaobilazenja ovih stvarcica ali je mnoooogo mala verovatnoca da ce te uspeti.
A u ostalom zasto se maltretirati sa ovako necim, kad na raspolaganju imate vasu mastu koja ide do beskraja dok je software ogranicen. Videli ste kako mozete da se zastitite koriscenjem samo svoje maste i stavljanjem u polozaj intrudera(sto je najbitnije u svemu ovome).

Eto toliko od mene za sada. Svaki komentar(pohvala/kritika) na ovaj post je dobrodosao.
[ 2weird4u @ 11.01.2003. 04:33 ] @
QL!

Do sada sam znao samo za losiju varijantu rootkit-a, dok sada

Thanx

E pazite ovako kako bi bilo kada bi *intruder rekompajlirao kernel,
tako da ostane ista konfiguracija sa veoma malim izmenama.Tako sto ce u kernel ubaciti nove startup skripte, ali ne u poznatim UNIX direktorijum vec gde on hoce.To bi bilo cool!
Do duse tesko je rekompajlirati kernel, a da ostali korisnici svrckaju po sistemu gotovo nemoguce.

Mada ko zna? Probacu pa cu javiti
[ B o j a n @ 11.01.2003. 05:09 ] @
Kada intruder pripremi svoj kernel on ima na izboru dve opcije, ili da reboot-uje racunar ( gluplja varijanta, jer time se automatski skrece paznja odgovornog administratora ), ili da ceka da se "obradjeni" server sam reboot-uje na regulranoj osnovi. Ova druga varijanta ume vrlo da potraje, s'obzirom da se iole ozbiljniji serveri reboot-uju par puta,a mozda ni tad u godini dana. U oba slucaja kernel image se menja, sa njime i md5 suma, kao i datum kreiranja, to je dovoljno administratoru da posumnja da mu je server kompromitovan. Time intruder gubi njegovu prvu teznju -- da ostane ne primecen.


[ 2weird4u @ 13.01.2003. 15:20 ] @
Eh propade mi ideja ((
[ tzeljko @ 27.01.2003. 03:31 ] @
da, ali ima tu jos jedan problem. Sta ako admin ne cuva kernel src na masini.... a config stavlja na disketu ili tako nesto....:))
[ B o j a n @ 27.01.2003. 04:52 ] @
Istina, to je onda donekle corsokak za uljeza. Ali praksa je skroz drugacija, vrlo malo administratora koristi non-vanilla kernele. U tom slucaju cak i da nema .confg-a na sistemu, napadac moze vrlo lako gledajuci u /proc i /dev i zbivanja na sistemu da rekonstruise vrlo priblizan .config sa njegovim dodacima.

Na primer, kod FreeBSD kernela, moguce je "usaditi" CONFIG kernela u sam kernel image, i sa jednim potezom ga extract-ovati i iskoristiti, sto potencijalnom uljezu samo moze da olaksa.