./+DEINSTALL: Permission denied
Dan Lukes
dan at obluda.cz
Wed May 31 11:00:18 CEST 2006
Miroslav Lachman napsal/wrote, On 05/31/06 09:45:
> Budu tedy co nejkonkretnejsi - ve vetsine pripadu mam nastarosti
> servery, kde se provozuje web (Apache), databaze (MySQL,) mail
> (Postfix), FTP a veci s timhle zamerenim souvisejici. Uzivatele tam
> nemaji pristup k shellu, pouze FTP / HTTP upload. nosuid a noexec mam
> minimalne na oddilu, kam uzivatele nahravaji svoje soubory pres FTP
> (99.9% se jedna o soubory pro publikaci pres web). Tim nosuid a noexec
> na dalsich oddilech se snazim branit pripadnemu napadeni skrz diru v
> nekterem z nainstalovanych SW.
Ano, to je presne ten pripad, kdy ma smysl mit na HTTP/FTP data
zvlastni partition a krome toho, ze v Apache proste nemam
nakonfigurovanou moznost spoustet zadne cgi scripty ani php ani shtml
ani nic podobneho (bud' vsude, nebo alespon v te casti stromu, kam smi
"vnejsi" zapisovat) je na takove partition mozne pouzit noexec a nosuid.
> Co si tak vybavuji, tak napriklad awstats
> (perlovy CGI pro generovani statistik z logu Apache) v minulosti
> obsahovaly diru, kde utocnik mohl nahrat soubor do docasneho adresare a
> odtamtud ho pres awstats spustit. Nevim o tom zadne vetsi podrobnosti,
> takze ani nemam jistotu, ze by tomu nosuid, nebo noexec zabranili.
> Zkratka se takovym podobnym utokum snazim vlozit do cesty co nejvic
> prekazek to jde. Tedy zakazat to, co neni k nicemu jinemu potreba.
Coz ale neni tvuj pripad. Ty exec ve /var potrebujes. A ti, co
pouzivaji qmail, nebo o cem to tu byla rec, ti take - takze ani jejich
pripad to neni.
A tak je proste potreba provest hlubsi analyzu problemu - prvni otazka
je, zda preci jen nedokazu zajistit, abych onen /var mohl byt noexec -
tim, ze "blokujici" programy nahradim, prekonfiguruji, prestanu
pouzivat. To je cena za tuto metodu ochrany. A je treba rozhodnout,
jestli ji mohu nebo nemohu zaplatit. Na tuhle otazku neexistuje
univerzalni odpoved.
> Jelikoz jsem si do ted myslel (nebo to tak spis donedavna bylo), ze na
> /var/db neni potreba suid ani exec, tak jsem tam mel nosuid a noexec a
> vse fungovalo - az ted se objevuji problemy s +DEINSTALL.
No, tak to je prekazka, ktera se jevi byt (alespon me) relativne snadno
odstranitelna (=cena za jeji odstranitelna je mala a tedy pravdepodobne
prijatelna)
>> Nebo behem instalace a deinstalace noexec flag odstranit.
>
> Je pouziti mount -u -o current,exec /var/db
> a nasledne mount -u -o current,noexec /var/db
> bezpecne / bez vedlejsich ucinku pri pouziti na oddilu, se kterym se
> neustale pracuje?
Teoreticky ano. V praxi ? Samozrejme, ze muze byt nekde v kodu OS
chyba. Ano, ta operace je rizikova - jako vlastne kazda, ktera se se
systemem provadi. Toto riziko je soucasti ceny za toto bezpecnostni
opatreni.
Neni to nijak exaktni statisticke zkoumani, ale nevybavuju si v zadnem
pripade, ze by mi pouziti -u prineslo nejakou potiz. Pravda, nepouzivam
ho nijak pravidelne (a vetsinou pridavam respektive ubiram 'async'
nikoli 'noexec').
Pokdu o tom nekde neco psali - je treba prozkoumat tento zdroj
informace a pak se rozhodnout.
> Lze se nejak ucine branit vyse popsanym pripadum napadeni?
Zadne "vyse popsane" pripady se v tomto emailu neobjevily. Moznost, ze
nejaky CGI obsahoval jakousi diry je sice zminena, ale neni to nijak
popsane - co vlastne zneuzil a jak. Takze nelze rict, jestli by tomuto
typu napadeni (kdyz ten typ nezname) slo zabranit zpusobem A nebo B. A
jien utoky nejsou zmineny vubec, takze o tech se konkretne nelze bavit take.
Ty ve skutecnosti hledas zpusob, jak se branit proti nespecifikovanym
(nekonkretnim) napadenim. A na to neexistuje konkretni rada - jen
nekonkretni. Maximalne omezit pro jednotlive komponenty OS rozsah
cinnosti, ktere mohou delat (a co nejvice je od sebe co izolovat
navzajem). Pritom je ale treba si uvedomit, ze omezeni znamena "omezeni"
- a ze ta omezeni budou nejak omezovat nejen neznameho utocnika, ale
uplne kazdeho. Takze je potreba zvazit, zda jsou takova omezeni jeste
slucitelna s pozadovanou funkcnosti systemu - a pokud ne, zda lze nejak
upravit funkcnost, nebo zda je treba se vzdat implementace daneho omezeni.
Vim, ze to neni nijak konkretni odpoved. Ale na obecnou otazku lze
malokdy ziskat konkreni odpoved. A v bezpecnosti to plati velmi silne -
tam kolikrat i na docela dost konkretni otazku nelze ziskat zcela
konkretni odpoved ...
Existuje takova poucka - ze zacatku lze i s velmi malymi naklady i
velmi vyrazne omezit rizika pro chraneny objekt. Postupne ale naklady
rostou, posleze dokonce prudce rostou, ale soucasne prudce klesa mira
omezeni rizika, kterou lze temito naklady dosahnout. Nakonec lze
ohromnyni naklady omezit riziko jiz jen velmi nepatrne. Snazsi je to
namalovat, nez popsat, ale to by v emailu nebylo trivialni.
Na techto dvou krivkach je treba najit bod, kde naklady na dosazeni
pozadovaneho stupne bezpecnosti, v porovnani s odhadovanymi skodami
vzniklymi v souvislosti s uspesnym vyuzitim zbytkoveho rizika jsou v
rovnovaze. A to je ucelna mira bezpecnosti, ktere je rozumne dosahnout -
dosahovat vic je neekonomicke, dosahovat min nebezpecne. Pricemz
"naklady" s emysli nejen naklady prime - je treba zapocitat vsechno.
Vcetne vyssich naklady na udrzbu, vcetne snizene produktivity prace
systemu a jeho uzivatelu (obe skupiny ty bezpecnostni opatreni mohou
brzdit), vcetne mozne vyssi ceny odstraneni zavady a vypadku. Do rizika
a s tim souvisejici mozne skody je naopak nutne pripocitat riziko mozne
lidske chyby pro sprave sloziteho zabezpecovaciho mechanismu ci riziko
umysleho poskozeni, ktere nebude ve slozitejsim systemu snadne odhalit.
Kolikrat je lacinejsi zbytkove riziko dale nezmensovat, ale uzavrit na
moznou skodu vhodne pojisteni ...
U vas musite odhadnout jake hrozi skody v souvislosti s napadenim a z
toho pak dovodit, jake prostredky a energii je jeste ucelne vynakladat
do bezpecnostnich opatreni. To je u kazdeho chraneneho objektu jine (ono
to vyse uvedene totiz neplati jen pro ochranu pocitacu, ale vlastne
ochranu cehokoliv).
Nicmene, uz jsem se asi dostal mimo ramec tema teto konference.
Muzu ti na toto tema doporucit docela peknou prednasku ;-)
> Ma napriklad
> smysl zacit studovat ACL / MAC? (mam o tom jen velice povrchni predstavu)
Urcite to ma smysl. Jsou to metody, jak "jemne" nastavovat prava.
Napriklad s pomoci mac_portacl (man mac_portacl) lze dosahnout toho, ze
proces bude schopen zacit sitove poslouchat na konkretnim sitovem portu
s cislem nizsim nez 1024 bez toho, ze bude potrebovat bezet jako
superuzivatel. U tech daemonu, ktere startuji jako root prave jen proto,
aby mohli bindnout takovy port se tim otevira moznost je vubec s
takovymi pravy nespoustet a tim samozrejme omezit moznost, ze chybou v
programu budou moci byt takova prava zneuzita.
Treba takove anonymous-only FTP je typickym kandidatem na provoz v
tomto rezimu. A WWW server muze byt docela dobre hned druhym. I named je
naprosto jasny kandidat. S trochou prace i sendmail.
Mezi mac-* jsou ale i jine zajimave moduly - fandy do bezpecnosti
urcite musi nadchnout implementace BIBA a Bell-LaPadula modelu
integrity (ten druhy se obcas take oznacuje jako "military" a na FreeBSD
je oznacen jako MLS). Ale jejich realne nasazeni je opravdu jen pro
fajnsmekry, hracicky - a pak tam, kde je opravdu treba zajistit vysokou
miru bezpecnosti predevsim nezi uzivateli navzajem (to, ze to soucasne
zvysuje bezpecnost proti vnejsimu utocnikovi je zu spise doprovodny
efekt). Implementova takove modely na realnem systemu je opravdu
netrivialni mira prace - i kdyz - vysledek pak stoji opravdu zato (tedy,
na systemu, kde za to stoji predevsim zpracovavana data).
Myslim ale, ze vetsina clenu teto konference, me nevyjimaje, bezne
spravuje systemy u kterych skoda souvisejici s uspesnym napadenim neni v
absolutnim cisle nijak zavratna. A tomu by mela odpovidat pouzita
zabezpecovaci opatreni - vyplati se nasazovat jen ta lacina. Jestli je
'noexec' lacine opatreni ci nikoliv lze posoudit pouze ve zcela
konkretnim pripade, obecne to mozne neni.
Dan
--
Dan Lukes SISAL MFF UK
AKA: dan at obluda.cz, dan at freebsd.cz,dan at kolej.mff.cuni.cz
More information about the Users-l
mailing list