Sljedeći dio Prethodni dio Sadržaj

5. Sigurnost datoteka i datotečnog sustava

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.

5.1 Postavljanje umaska

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.

5.2 Dozvole datoteka

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:

Vlasništvo:

Koji korisnik/ci i grupa/e ima/ju kontrolu nad postavljanjem dozvola za datoteku i njenog roditelja.

Dozvole:

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.

Čitanje:

Pisanje:

Izvršavanje:

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.

SUID atribut: (za datoteke)

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.

SGID atribut: (za datoteke)

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.

SGID atribut: (za direktorije)

Ako SGID bit uključite na direktoriju (preko chmod g+s direktorij), datoteke stvorene u tom direktoriju imat će grupu koju ima direktorij.

Vi

vlasnik datoteke

Grupa

grupa kojoj pripadate

Svi

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--------Vlasniku dopušta čitanje datoteke --w-------Vlasniku dopušta mijenjanje i brisanje datoteke ---x------Vlasnik može izvršiti ovaj program, ali ne skriptu ljuske, kojoj još treba dozvola za čitanje ---s------Izvršit će se uz UID vlasnika -------s--Izvršit će se uz GID vlasnika -rw------TNe osvježava se "vrijeme zadnje promjene". Obično se koristi za swap datoteke ---t------Bez učinka (bivši 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 - č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--------Sadržaj se može pregledati, ali ne se atributi ne mogu pročitati d--x------U direktorij se može ući i koristiti u potpunim stazama za izvršavanje dr-x------A sada atribute može čitati vlasnik d-wx------Sad se datoteke mogu stvarati/brisati, čak i ako direktorij nije trenutni d------x-tSprečava brisanje datoteka od strane drugih korisnika s mogućnošću pisanja. Koristi se za /tmp d---s--s--Bez učinka

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

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.

5.3 Provjera cjelovitosti pomoću Tripwirea

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/tripwire 
poslat ć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.

5.4 Trojanski konji

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.


Sljedeći dio Prethodni dio Sadržaj