This file is indexed.

/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>