Nekoliko minuta pripreme i planiranja prije uključivanja u mrežu može pomoći u zaštiti sustava i podataka koji su na njima pohranjeni.
nosuid
opciju u /etc/fstab.
Možda ćete iskoristiti i nodev
i noexec
na korisničkim home
particijama, kao i na /var
, koje zabranjuju izvršavanje programa i
stvaranje znakovnih ili blok uređaja, koji ionako ne bi trebali biti
potrebni.
unlimited
stavite granice na zauzeće datotečnog
sustava. Ograničenja po korisniku možete mijenjati korištenjem
resource-limits PAM modula i /etc/pam.d/limits.conf. Na
primjer, ograničenja za grupu korisnici
mogla bi izgledati ovako:
@korisnici hard core 0 @korisnici hard nproc 50 @korisnici hard rss 5000Ovo zabranjuje stvaranje
core
datoteka, ograničava broj procesa na 50 i
korištenje memorije na 5 MB po korisniku.
immutable
bit može se koristiti za sprečavanje slučajnog brisanja ili
prepisivanja datoteke koja mora biti zaštićena. Također sprečava simboličko
vezanje na tu datoteku, što su koristili napadi brisanja
/etc/passwd i /etc/shadow. Za više informacija o
immutable
bitu pogledajte man stranicu chattr(1).
root# find / -type f \( -perm -04000 -o -perm -02000 \)Slobodno pomoću chmod(1) maknite SUID ili SGID dozvole na sumnjivom programu, a zatim ih vratite ako baš bude potrebno.
root# find / -perm -2 -printi provjerite zašto svi mogu pisati u njih. Tokom normalnog rada bit će nekoliko takvih datoteka, uključujući neke iz /dev i simboličke veze.
root# find / -nouser -o -nogroup -print
.rhosts
datoteka također bi trebalo biti dio vaših uobičajenih
dužnosti administratora jer one ne bi smjele biti dopuštene na vašem
sustavu. Zapamtite, kreker treba samo jedan nesiguran račun da možda dobije
pristup vašoj cijeloj mreži. Sve .rhosts
datoteke na sustavu možete
naći ovom naredbom:
root# find /home -name .rhosts -print
Naredba umask može se koristiti za mijenjanje predefiniranih dozvola stvorenih datoteka. To je oktalni komplement željenog moda datoteke. Ako se datoteke stvaraju bez ikakve brige o njihovim dozvolama, korisnik bi mogao nenamjerno dati dozvole za čitanje ili pisanje nekome tko ih ne bi trebao imati. Tipični umaskovi su 022, 027 i 077 koji je najrestriktivniji. Obično se umask postavlja u /etc/profile tako da vrijedi za sve korisnike sustava. Na primjer, možda imate red koji izgleda ovako:
# Postavlja predefinirani umask korisnika umask 033
Provjerite da li je umask roota 077, što će isključiti dozvole za čitanje, pisanje ili izvršavanje drugim korisnicima, osim ako ih izričito ne promijenite preko chmod(1).
Ako koristite Red Hat i njihov način stvaranja ID-ova korisnika i grupa (User Private Groups -- osobne grupe korisnika), za umask je dovoljno koristiti 002, zahvaljujući činjenici da je svaki korisnik u svojoj grupi.
Važno je osigurati da vaše 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 može biti samo jedan, grupa može imati bilo koliko članova, te svi ostali.
Brzo objašnjenje UNIX dozvola:
Koji korisnik/ci i grupa/e ima/ju kontrolu nad postavljanjem dozvola za datoteku i njenog roditelja.
Bitovi sposobni za namještanje ili resetiranje koji omogućuju određene vrste pristupa. Dozvole za direktorije mogu imati drukčije značenje od jednakih dozvola datoteka.
Save Text
atribut: (za direktorije)Ljepljivi (sticky) bit kod direktorija također ima drukčije značenje.
Ako je postavljen na direktoriju, korisnik smije brisati samo datoteke koje
posjeduje ili za koje ima izričitu dozvolu za pisanje, čak i kada ima
dozvolu za pisanje u direktorij. Ovo je napravljeno za direktorije poput
/tmp u koje svi mogu pisati, ali gdje nije poželjno da bilo
koji korisnik po volji briše datoteke. Ljepljivi bit prikazuje se kao t
u dugom ispisu direktorija.
Ovo opisuje set-user-id (postavi ID korisnika) dozvole datoteke. Kada je SUID mod pristupa uključen u dozvolama vlasnika i datoteka izvršna, procesi koji ju pokrenu dobivaju pristup resursima sustava koje ima vlasnik datoteke. To je uzrok mnogih buffer overflow rupa.
Ako je postavljen u dozvolama grupe, taj bit kontrolira set-group-id stanje datoteke. Ponaša se kao i SUID, osim što se odnosi na grupu. Da bi to imalo učinka datoteka također mora biti izvršna.
Ako SGID bit uključite na direktoriju (preko chmod g+s direktorij
),
datoteke stvorene u tom direktoriju imat će grupu koju ima direktorij.
vlasnik datoteke
grupa kojoj pripadate
svi na sustavu, osim vlasnika i članova grupe
Primjer na datoteci:
-rw-r--r-- 1 kevin korisnici 114 Aug 28 1997 .zlogin 1. bit - direktorij? (ne) 2. bit - čitanje za vlasnika? (da, za kevina) 3. bit - pisanje za vlasnika? (da, za kevina) 4. bit - izvršavanje za vlasnika? (ne) 5. bit - čitanje za grupu? (da, za korisnici) 6. bit - pisanje za grupu? (ne) 7. bit - izvršavanje za grupu? (ne) 8. bit - čitanje za sve? (da, za sve) 9. bit - pisanje za sve? (ne) 10. bit - izvršavanje za sve? (ne)
Evo primjera minimalnih položaja dozvola koji su potrebni za opisane radnje.
Možda ćete htjeti dati više dozvola, ali ovo pokazuje što znače te minimalne
dozvole:
-r--------
--w-------
---x------
---s------
-------s--
-rw------T
---t------
Primjer na direktoriju:
drwxr-xr-x 1 kevin korisnici 114 Aug 28 1997 .zlogin 1. bit - direktorij? (da, s puno datoteka) 2. bit - čitanje za vlasnika? (da, za kevina) 3. bit - pisanje za vlasnika? (da, za kevina) 4. bit - izvršavanje za vlasnika? (da, za kevina) 5. bit - čitanje za grupu? (da, za korisnici) 6. bit - pisanje za grupu? (ne) 7. bit - izvršavanje za grupu? (da, za korisnici) 8. bit - čitanje za sve? (da, za sve) 9. bit - pisanje za sve? (ne) 10. bit - izvršavanje za sve? (ne, za sve)
Evo primjera minimalnih položaja dozvola koji su potrebni za opisane radnje.
Možda ćete htjeti dati više dozvola, ali ovo pokazuje što znače te minimalne
dozvole:
dr--------
d--x------
dr-x------
d-wx------
d------x-t
d---s--s--
Konfiguracijske datoteke sustava (obično u /etc obično imaju
dozvole 640 (-rw-r-----
) i posjeduje ih root. Ovisno o sigurnosnim
potrebama vašeg sustava to možete i promijeniti. Nikad ne ostavljajte
dozvolu za pisanje grupe ili sviju na datoteci sustava. Neke konfiguracijske
datoteke, kao što je /etc/shadow, trebao bi moći čitati samo
root, a direktoriji u /etc trebali bi biti barem
nedostupni ostalima.
SUID skripte ljuske ozbiljan su sigurnosni rizik i zato ih kernel neće kao takve izvršavati. Ma koliko vi mislili da je ona sigurna, takvu skriptu mogu iskoristiti krekeri za dobivanje root pristupa.
Još jedan dobar način otkrivanja lokalnih (a i mrežnih) napada na vaš stroj je provjera cjelovitosti, kao što je Tripwire. Tripwire izračunava niz checksumova za sve vaše važne programe i konfiguracijske datoteke i uspoređuje ih s podacima o prijašnjim, dobro poznatim vrijednostima. Tako će se pokazati sve promjene datoteka.
Dobra je ideja instalirati Tripwire na disketu i zatim je fizički zaštititi od pisanja. Na taj način uljezi ne mogu petljati sa samim Tripwireom ili mijenjati podatke. Kad Tripwire jednom namjestite, dobro je pokretati ga kao dio vaših normalnih dužnosti sigurnosnog administratora da vidite da li nešto promijenjeno.
Čak možete dodati crontab zapis koji svake noći pokreće Tripwire s diskete i šalje vam rezultate. Nešto kao:
# postavljamo adresu MAILTO=kevin # pokrećemo Tripwire 15 05 * * * root /usr/local/adm/tcheck/tripwireposlat će vam izvještaj svakog jutra u 5:15.
Tripwire je dar s neba za otkrivanje uljeza prije nego što biste ih inače primjetili. Pošto se na prosječnom sustavu mijenja mnogo datoteka, morate pažljivo razlikovati aktivnost krekera i svoj vlastiti rad.
Trojanski konj dobio je ime po poznatoj prijevari iz Homerovog velikog književnog djela. Ideja je u tome da napravite program ili izvršnu datoteku koja izgleda sjajno i koju će drugi ljudi nabaviti i pokrenuti kao root. Zatim možete kompromitirati njihov sustav dok ne paze. Dok oni misle da program koji su upravo skinuli radi jedno (a to može biti i istina), on također poništava osiguranje.
Pazite koje programe instalirate na svoje računalo. Red Hat nudi MD5 provjeru i PGP potpise, RPM datoteke tako da se možete uvjeriti da instalirate pravu stvar. Druge distribucije imaju slične metode. Nikad ne pokrećite program za kojeg nemate izvornog koda ili dobro poznatu izvršnu datoteku kao root! Malo će napadača izvorni kod izložiti oku javnosti.
Iako to može biti dosta složeno, provjerite da li izvorni kod programa nabavljate s izvornog mjesta distribucije. Ako ćete ga pokretati kao root, provjerite sami ili netko kome vjerujete izvorni kod.