ot Nikola Antonov(28-06-2003)

reiting (5)   [ dobre ]  [ zle ]

Printer Friendly Variant za otpechatvane

Po stranitsite na nashite forumi mnogo chesto se obsuzhdat vuprosi, svurzani sus sigurnostta, spori se koia e nai-sigurnata distributsiia, dali Linuks e po-dobur ot "Prozorechnata OS" po otnoshenie na sigurnostta i t.n. Nai-chesto tezi diskusii se razpalvat do neistovo kreshtene i neizslushvane na oponenta. Obiknoveno se govori za mrezhova sigurnost, nastroiki na firewalls, preobladavat lozungite "... sux" i "... rulz"!

Istinata e, che kogato govorim za sigurnost, na purvo miasto triabva da mislim za lokalnata sigurnost, posle za mrezhovata, a pri Linuks, kato mrezhovo orientirana OS, dvata vida sigurnost zavisiat vzaimno edin ot drug. Aide, az pak se razprikazvah...

Vsushtnost, spetsialistite znaiat, niama nishto po-lesno ot tova da skapete edna sistema, nezavisimo ot distributsiiata, dostatuchno e da imate dostup do komanden red, dori ne e neobhodim kompilator, dori ne vi triabvat i pravata na root.

Veroiatno povecheto potrebiteli-nespetsialisti, kato men, ne si davat smetka, che koiato i da e Linuks-distributsiia po podrazbirane ne dava dostatuchno sigurnost, za da spim spokoino, osobeno ako predostaviame uslugi za otdalechen dostup na sistemata si. Tema na tozi material e zashtitata na sistemata ot lokalni ataki, tseliashti pretovarvane na pametta ili protsesora i vodeshti do bezotkazno zabivane na sistemata. Takiva ataki, za zhalost, se praviat mnogo lesno.

Naprimer, dostatuchno e da izpulnite tova v konzolata (posocheno ot G. CHorbadzhiiski):

:(){ :|:&};:

Rezultatut e dosta nepriiaten.

Eto i niakoi drugi malki i loshi programki, koito vodiat smazvashto skapvane na lyubimata ni Linuks-sistema:

1. Standartna fork-bomba:

int main()
{
       while(1)
               fork();
       return 0;
}

2. Prepulvane na pametta:

int main()
{

       char *p;
       while(1)
               p = (char *)malloc(sizeof(char) * 4096);
       return 0;
}

Za da se spasim ot podoben tip ataki, kakto i ot opasnostta sami da izpulnim vreden kod (niakoia nedobre skalupena programka na C, naprimer), mozhem da se vuzpolzvame ot uslugite na /etc/security/limits.conf. V nego mozhem detailno da postavim ogranicheniia za opredelen tip potrebiteli ili za vsichki navednuzh (ne se praporuchva) - kolko protsesa mogat da startirat, kolko pamet mozhe da izpolzva vseki edin protses, kolko protsesorno vreme mozhe da izpolzvat i t.n.

Da rechem, che imame dva tipa potrebiteli - lokalni (t.e. dovereni, izpolzvashti H) i otdalecheni (ne im viarvame mnogo, a i ne im se polaga da polzvat grafichna sreda). Ednite potrebiteli postaviame v grupata users, a drugite - v grupata notrust.

@users          soft    core               10240
@users        hard    nproc           150
@users hard nofile  1024
@users hard stack 51200
@users          hard    memlock     102400
@users hard as   102400

@notrust        hard    core      5120
@notrust        hard    rss       15360
@notrust        hard    data      15360
@notrust        hard    nproc   15
@notrust -    maxlogins 4
@notrust        hard    nofile    64
@notrust        hard    stack   15360
@notrust        hard    fsize     51200
@notrust        hard    memlock     15360
@notrust        hard    cpu      2
@notrust        hard    as         25600

Po tozi nachin zadavame za chlenovete na dvete grupi razlichni ogranicheniia za natovarvane na sistemata. Osobeno vazhno e ogranichenieto nproc (broi na protsesite). Za normalnata rabota s H e dobre da imame prava na nad 70 do 100 protsesa (mozhete da vidite niakude, che 40 sa dostatuchni, no ne i ako polzvate pulnotsenno H s Mozilla, OpenOffice, KDE i t.n.).

Kakvo kaznat nastroikite? V samiia fail e opisano:

#        core - limits the core file size (KB)
#        - data - max data size (KB)
#        - fsize - maximum filesize (KB)
#        - memlock - max locked-in-memory address space (KB)
#        - nofile - max number of open files
#        - rss - max resident set size (KB)
#        - stack - max stack size (KB)
#        - cpu - max CPU time (MIN)
#        - nproc - max number of processes
#        - as - address space limit
#        - maxlogins - max number of logins for this user
#        - priority - the priority to run user process with

Triabva da se oburne poveche vnimanie na nproc (broia na protsesite) i maxlogins (maksimum logvaniia). Purvoto bez vtoroto niama mnogo smisul.

Da ne zabravim nai-vazhnoto - v /etc/pam.d/login triabva da vuvedem zadulzhitelno:

session  required  pam_limits.so

V protiven sluchai zadadenite ogranicheniia niama da rabotiat.

Po-podrobno po temata:

http://www.tldp.org/LDP/solrhe/Securing-Optimizing-Linux-RH-Edition-v1.3/chap5sec44.html
http://www.dfdtech.net/linux/security/userlimits/
http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/pam-6.html#ss6.12
http://www.linux-bulgaria.org/lug-bg-list/archive/2003/Feb/0470.html

Blagodarnosti na G. CHorbadzhiiski za nasokite.


<< Pechat na kirilitsa s LPRNG i bulgarski ezik v LyX | Instalatsiia i startirane na debian dosemu paradox4.5 >>