/usr/share/doc/HOWTO/hr-html/Sigurnost-KAKO-5.html is in doc-linux-hr 20000416.1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.11">
<TITLE>Sigurnost Linuxa KAKO: Sigurnost datoteka i datoteènog sustava</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-2">
<LINK HREF="Sigurnost-KAKO-6.html" REL=next>
<LINK HREF="Sigurnost-KAKO-4.html" REL=previous>
<LINK HREF="Sigurnost-KAKO.html#toc5" REL=contents>
</HEAD>
<BODY>
<A HREF="Sigurnost-KAKO-6.html">Sljedeæi dio</A>
<A HREF="Sigurnost-KAKO-4.html">Prethodni dio</A>
<A HREF="Sigurnost-KAKO.html#toc5">Sadr¾aj</A>
<HR>
<H1><A NAME="s5">5. Sigurnost datoteka i datoteènog sustava</A></H1>
<P>
<P>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.
<P>
<UL>
<LI>Ne bi trebalo biti razloga za dopu¹tanje pokretanja SUID/SGID programa iz
korisnièkih home direktorija. Za particije na koje mogu pisati drugi
osim roota koristite <CODE>nosuid</CODE> opciju u /etc/fstab.
Mo¾da æete iskoristiti i <CODE>nodev</CODE> i <CODE>noexec</CODE> na korisnièkim home
particijama, kao i na <CODE>/var</CODE>, koje zabranjuju izvr¹avanje programa i
stvaranje znakovnih ili blok ureðaja, koji ionako ne bi trebali biti
potrebni.
</LI>
<LI>Ako izvozite datoteène sustave preko NFS-a, konfigurirajte
/etc/exports sa ¹to je vi¹e moguæe restriktivnim pristupom. To
znaèi nekori¹tenje metaznakova, nedopu¹tanje pisanja na / i montiranje
samo-za-èitanje kad god je moguæe.
</LI>
<LI>Konfigurirajte korisnièki umask za stvaranje datoteka ¹to restriktivnije.
Uobièajene su vrijednosti 022, 033, te najogranièenija 077, a dodaju se u
/etc/profile.
</LI>
<LI>Umjesto predefiniranog <CODE>unlimited</CODE> 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 <CODE>korisnici</CODE> mogla bi izgledati ovako:
<PRE>
@korisnici hard core 0
@korisnici hard nproc 50
@korisnici hard rss 5000
</PRE>
Ovo zabranjuje stvaranje <CODE>core</CODE> datoteka, ogranièava broj procesa na 50 i
kori¹tenje memorije na 5 MB po korisniku.
</LI>
<LI>Datoteke /var/log/wtmp i /var/run/utmp sadr¾e
zapise o logiranju svih korisnika sustava. Cjelovitost ove datoteke mora se
odr¾ati jer se ona preko nje mo¾ete saznati kada i od kamo je korisnik (ili
moguæi uljez) u¹ao na va¹ sustav. Ove datoteke takoðer bi trebale imati
dozvole 644, bez utjecaja na normalan rad sustava.
</LI>
<LI><CODE>immutable</CODE> 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
<CODE>immutable</CODE> bitu pogledajte man stranicu chattr(1).
</LI>
<LI>SUID i SGID datoteke na va¹em sustavu moguæ su sigurnosni rizik i pa¾ljivo
ih treba pratiti. Zbog toga ¹to 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 stra¾nji ulaz za slijedeæi put,
èak i ako je izvorna rupa zaèepljena.
Naðite sve SUID/SGID programe na svom sustavu i pratite njihovo stanje, tako
da ste svjesni bilo kakvih promjena koje bi mogle znaèiti moguæeg uljeza.
Koristite slijedeæu naredbu za tra¾enje svih SUID/SGID programa na sustavu:
<PRE>
root# find / -type f \( -perm -04000 -o -perm -02000 \)
</PRE>
Slobodno pomoæu chmod(1) maknite SUID ili SGID dozvole na sumnjivom
programu, a zatim ih vratite ako ba¹ bude potrebno.
</LI>
<LI>Datoteke u koje svi mogu pisati, pogotovo datoteke sustava, mogu biti
sigurnosna rupa ako kreker pristupi va¹em sustavu i izmijeni ih. Takoðer,
direktoriji u koje svi mogu pisati opasni su jer omoguæuju krekeru da po
¾elji dodaje ili bri¹e datoteke. Za lociranje svih datoteka u koje svi mogu
pisati koristite ovu naredbu:
<PRE>
root# find / -perm -2 -print
</PRE>
i 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.
</LI>
<LI>Datoteke bez vlasnika takoðer mogu pokazati da je uljez pristupio va¹em
sustavu. Datoteke koje nemaju vlasnika ili ne pripadaju grupi mo¾ete naæi
naredbom:
<PRE>
root# find / -nouser -o -nogroup -print
</PRE>
</LI>
<LI>Tra¾enje <CODE>.rhosts</CODE> 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 <CODE>.rhosts</CODE> datoteke na sustavu mo¾ete
naæi ovom naredbom:
<PRE>
root# find /home -name .rhosts -print
</PRE>
</LI>
<LI>Na kraju, prije mijenjanja dozvola na bilo kojoj datoteci sustava, budite
sigurni da znate ¹to radite. Nikad ne mijenjajte dozvole datoteci jer to
izgleda kao lak naèin za rje¹avanje problema. Uvijek odluèite za¹to datoteka
ima takve dozvole prije nego ¹to ih promijenite.</LI>
</UL>
<P>
<H2><A NAME="ss5.1">5.1 Postavljanje umaska</A>
</H2>
<P>
<P>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:
<PRE>
# Postavlja predefinirani umask korisnika
umask 033
</PRE>
<P>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).
<P>Ako koristite Red Hat i njihov naèin stvaranja ID-ova korisnika i grupa
(<B>User Private Groups</B> -- osobne grupe korisnika), za umask je dovoljno
koristiti 002, zahvaljujuæi èinjenici da je svaki korisnik u svojoj grupi.
<P>
<H2><A NAME="ss5.2">5.2 Dozvole datoteka</A>
</H2>
<P>
<P>Va¾no je osigurati da va¹e datoteke sustava nisu otvorene editiranju
korisnika i grupa koji takvu administraciju ne trebaju obavljati.
<P>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.
<P>Brzo obja¹njenje UNIX dozvola:
<DL>
<DT><B>Vlasni¹tvo:</B><DD><P>Koji korisnik/ci i grupa/e ima/ju kontrolu nad postavljanjem dozvola za
datoteku i njenog roditelja.
<P>
<DT><B>Dozvole:</B><DD><P>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.
<P>
<DT><B>Èitanje:</B><DD><P>
<UL>
<LI>sposobnost pregledavanja sadr¾aja datoteke</LI>
<LI>sposobnost pregledavanja direktorija</LI>
</UL>
<P>
<DT><B>Pisanje:</B><DD><P>
<UL>
<LI>sposobnost dodavanja podataka ili mijenjanja datoteke</LI>
<LI>sposobnost brisanja i micanja datoteka u direktoriju</LI>
</UL>
<P>
<DT><B>Izvr¹avanje:</B><DD><P>
<UL>
<LI>sposobnost pokretanja izvr¹ne datoteke ili skripte ljuske</LI>
<LI>sposobnost tra¾enja u direktoriju, uz dozvolu za èitanje</LI>
</UL>
<P>
<DT><B><CODE>Save Text</CODE> atribut: (za direktorije)</B><DD><P>Ljepljivi (<B>sticky</B>) 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 <CODE>t</CODE>
u dugom ispisu direktorija.
<P>
<DT><B>SUID atribut: (za datoteke)</B><DD><P>Ovo opisuje <B>set-user-id</B> (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.
<P>
<DT><B>SGID atribut: (za datoteke)</B><DD><P>Ako je postavljen u dozvolama grupe, taj bit kontrolira <B>set-group-id</B>
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.
<P>
<DT><B>SGID atribut: (za direktorije)</B><DD><P>Ako SGID bit ukljuèite na direktoriju (preko <CODE>chmod g+s direktorij</CODE>),
datoteke stvorene u tom direktoriju imat æe grupu koju ima direktorij.
</DL>
<P>
<DL>
<DT><B>Vi</B><DD><P>vlasnik datoteke
<DT><B>Grupa</B><DD><P>grupa kojoj pripadate
<DT><B>Svi</B><DD><P>svi na sustavu, osim vlasnika i èlanova grupe
</DL>
<P>Primjer na datoteci:
<PRE>
-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)
</PRE>
<P>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:
<BR>
<CODE>-r--------</CODE></TD><TD>Vlasniku dopu¹ta èitanje datoteke</TD></TR><TR><TD>
<CODE>--w-------</CODE></TD><TD>Vlasniku dopu¹ta mijenjanje i brisanje datoteke</TD></TR><TR><TD>
<CODE>---x------</CODE></TD><TD>Vlasnik mo¾e izvr¹iti ovaj program, ali ne skriptu</TD></TR><TR><TD>
</TD><TD>ljuske, kojoj jo¹ treba dozvola za èitanje</TD></TR><TR><TD>
<CODE>---s------</CODE></TD><TD>Izvr¹it æe se uz UID vlasnika</TD></TR><TR><TD>
<CODE>-------s--</CODE></TD><TD>Izvr¹it æe se uz GID vlasnika</TD></TR><TR><TD>
<CODE>-rw------T</CODE></TD><TD>Ne osvje¾ava se "vrijeme zadnje promjene". Obièno se</TD></TR><TR><TD>
</TD><TD>koristi za swap datoteke</TD></TR><TR><TD>
<CODE>---t------</CODE></TD><TD>Bez uèinka (biv¹i ljepljivi bit).
<P>Primjer na direktoriju:
<PRE>
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)
</PRE>
<P>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:
<BR>
<CODE>dr--------</CODE></TD><TD>Sadr¾aj se mo¾e pregledati, ali ne se atributi ne</TD></TR><TR><TD>
</TD><TD>mogu proèitati</TD></TR><TR><TD>
<CODE>d--x------</CODE></TD><TD>U direktorij se mo¾e uæi i koristiti u potpunim</TD></TR><TR><TD>
</TD><TD>stazama za izvr¹avanje</TD></TR><TR><TD>
<CODE>dr-x------</CODE></TD><TD>A sada atribute mo¾e èitati vlasnik</TD></TR><TR><TD>
<CODE>d-wx------</CODE></TD><TD>Sad se datoteke mogu stvarati/brisati, èak i ako</TD></TR><TR><TD>
</TD><TD>direktorij nije trenutni</TD></TR><TR><TD>
<CODE>d------x-t</CODE></TD><TD>Spreèava brisanje datoteka od strane drugih korisnika</TD></TR><TR><TD>
</TD><TD>s moguæno¹æu pisanja. Koristi se za /tmp</TD></TR><TR><TD>
<CODE>d---s--s--</CODE></TD><TD>Bez uèinka
<P>Konfiguracijske datoteke sustava (obièno u /etc obièno imaju
dozvole 640 (<CODE>-rw-r-----</CODE>) 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.
<P>
<DL>
<DT><B>SUID skripte ljuske</B><DD><P>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.
</DL>
<P>
<H2><A NAME="ss5.3">5.3 Provjera cjelovitosti pomoæu Tripwirea</A>
</H2>
<P>
<P>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.
<P>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.
<P>Èak mo¾ete dodati crontab zapis koji svake noæi pokreæe Tripwire s diskete i
¹alje vam rezultate. Ne¹to kao:
<PRE>
# postavljamo adresu
MAILTO=kevin
# pokreæemo Tripwire
15 05 * * * root /usr/local/adm/tcheck/tripwire
</PRE>
poslat æe vam izvje¹taj svakog jutra u 5:15.
<P>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.
<P>
<H2><A NAME="ss5.4">5.4 Trojanski konji</A>
</H2>
<P>
<P>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.
<P>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.
<P>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.
<P>
<HR>
<A HREF="Sigurnost-KAKO-6.html">Sljedeæi dio</A>
<A HREF="Sigurnost-KAKO-4.html">Prethodni dio</A>
<A HREF="Sigurnost-KAKO.html#toc5">Sadr¾aj</A>
</BODY>
</HTML>
|