Poziadavky: Pripravit jednoduchy sposob, ktory nevyzaduje specialny hardver (tj taky, co na beznych serveroch defaultne nie je), dokaze ho ovladat aj uplny laik po par minutovom skoleni, je bezpecny a postara sa o vlozenie klucov k particiam a zaroven bude schopny skontrolovat, ci v systeme nie je rootkit alebo pozmenene binarky a dolezite skripty. Zaroven to ma byt schopne fungovat s vacsinou beznych serverovych distribucii, ktore pouzivaju
/etc/crypttab
bez nutnosti akokolvek zasahovat do skriptov, vytvarat specialny initrd a podobne zasahy.Z toho je jasne, ze nemoze ist o nic, co by bezalo vramci existujuceho operacneho systemu. Moje riesenie je nasledujuce:
Vytvorit live CD, ktore sa bude bootovat pred samotnym OS (v BIOSe bude boot z CD nastaveny pred bootom z HDD). To by si malo mountnut rozsifrovane particie (je uplne zbytocne sifrovat / a /etc), precitat fstab a crypttab a podla toho domountovat zvysok. Nasledne by sa skontrolovali vsetky dolezite binarky, skripty, MBR - spocital by sa z nich hash a ten by sa porovnal so zoznamom, ktory by bol ulozeny priamo na / a bol by tymto CD digitalne podpisany. Oznacil by vsetky subory, ktore sa nezhoduju a pouzivatel by sa mohol rozhodnut, ci chce pokracovat dalej v bootovani a zapisat do zoznamu nove hodnoty (napriklad, ak prevadzal predtym update). Po tejto kontrole by CD skoncilo a vyziadalo by boot z HDD, co by dalej nasledovalo uz normalne. Pri pripajani diskov by sa kluce precitali priamo z toho CD. Po skonceni bootovania by sa CD mohlo vybrat a schovat na tajne miesto.
Samozrejme, to, co je tu popisane nie je uplne vsetko, co by sa vykonavalo. Samotne overovanie a sprava klucov bude ovela zlozitejsia. Nechcem tu rozpisovat vsetky podrobnosti, lebo aj tak je to uz dost dlhe.
Tymto by som chcel poziadat o pomoc niekoho, kto ma skusenosti s vytvaranim live CD a rozumie procesu bootovania. Ja som v GNU/Linuxe v tomto smere neskuseny. Cize hladam spolupracovanika na tento projekt (zial nekomercny, vysledok pod GNU GPL), ktory by vedel pripravit zaklad live CD, ktore by obsahovalo kernel s co najviac ovladacmi radicov diskov, klavesnice, serioveho portu a pri starte by vedelo rozpoznat aj softverove raidy a LVM a vsetky particie pomountovat tak, ako maju byt (s tym, ze particia s /etc by bola explicitne urcena). Ked by toto vsetko prebehlo, nastupil by program, ktory uz budem programovat ja.
Ak mate zaujem alebo blizsie otazky, tak ich prosim uvedte v diskusii. Cely navrh samotneho fungovania a priebehu by mal byt hotovy v priebehu buduceho tyzdna.
Samotny zoznam suborov a hashov nebude na CD ale na disku (na nezasifrovanej particii) a bude len podpisany certifikatom, ktory bude ulozeny na CD (kazde CD bude mat vlastny certifikat). Verejne casti tych certifikatov budu zname a budu aj na ostatnych CD (ak sa sucasne bude generovat nejaka sada CD alebo niekedy v buducnosti, tak sa tam ulozia vsetky starsie, samozrejme bude podpora aj pre revokaciu starych certifikatov), takze kazde CD bude vediet, ktore ine CD ten zoznam naposledy podpisalo. Cize ak sa nieco zmeni v systeme, tak by mohol byt na disku program, ktory by po vlozeni CD ten zoznam pregeneroval, ak tomu samozrejme bude administrator dostatocne verit (teda, ze system v tom case nie je kompromitovany). Pripadne, sa to spravi az vzdy pri najblizsom boote z CD (co ale pri serveroch moze predstavovat aj rok).
Pocitam aj s tym, ze raz za cas sa stare CDcka skartuju, ich certifkaty sa daju do CRL a vygeneruje sa nova sada.
Cize aby som to zrhnul: Kazde CD bude mat vlastny certifikat a zoznam verejnych certifikatov ostatnych CD vytvorenych doteraz alebo sucasne s nim. Dalej bude obsahovat CRL certifikatov, ktore uz neplatia. Bude obsahovat aj kluce pre pripojenie jednotlivych particii. Tu tiez bude platit, ze kazda particia bude mat vlastny kluc a kazde CD bude obsahovat inu sadu klucov. Pri strate alebo ruseni CD sa dana sada klucov len vyhodi z LUKSu.
ps.: v /etc moze byt aj shaddow a to nie je rozumne mat dostupne.
Planujem k tomu celemu urobit prehladny generator ISO suborov (v Qt aj v konzole), takze si to bude vediet vygenerovat akykolvek schopnejsi admin alebo kludne aj majitel firmy lokalne.
mne tam nesla do hlavy jedna vec. chces kontrolovat obsah systemu z urciteho a minuleho casu. no a v tom moze byt prvy problem, boot manger moze nakopnut jadro ktore vtedy neexistovalo. druhy problem je v tom, ze pokial je system v pouzivani a dokazes precitat data, tak ich vies aj odoslat. ale tieto moje uvahy uz nemaju zmysel.
Samozrejme, ze taky /var, /tmp, /home a swapy sifrovat treba. A taky /boot bude nezasifrovany aj tak a tam je prave z hladiska utocnika ta najzranitelnejsia vec - kernel a init. Preto na serveroch naozaj nevidim dovod sifrovat korenovy adresar a /etc. Hlavne, ak sa da shadow a vsetky citlive udaje z /etc presunut napriklad do /var/etc.
>niekto vbehne do firmy a server zoberie so sebou (napriklad policia, zlodeji),
>tak uz z neho nedostanu dolezite udaje.
Nie je az taky problem ten server vziat so sebou zapnuty, teda ak ho niekto vo firme nestihne vopred vypnut (marenie vykonu?). Rovnako policia moze (aj ked ta nasa asi nie) na mieste cez pci zbernicu precitat obsah RAM. Takze iluzie by som si nerobil.
Poslednym problemom je firewire, ktore umoznuje priamy pristup do pamate. S tym sa bude treba nejako vysporiadat. A taktiez netom nedavno preleteli mediami clanky o tom, ze RAMky si po vypnuti este hodnu chvilu uchovavaju obsah, takze by bolo dobre to este nejako vycistit. No, spolieham sa na to, ze policia a ostatni zlodeji nebudu mat dost rozvahy na to, aby prekonali vsetky nastrahy.
Snazim sa najst riesenie, ktore bude prakticky co najjednoduchsie preveditelne a zaroven co najbezpecnejsie. A taktiez pri ktorom budem vediet vyuzit svoju uchylku v skladani elektronickych pridavnych komponentov k PC :) Uz dlhsie spolupracujem s jednou kosickou firmou, ktora navrhuje a vyraba elektronicke zariadenia (robim im softver) pre rozne spolocnosti (napriklad TEKO, USS atd). Takze ak navrhnem nejake zariadenie, tak mi ho vedia dat strojovo vyrobit a to uz aj pre male serie v desiatkach kusov. Cize tu krabicku mozno potom zacnem aj predavat, ak sa osvedci u mna v serveroch. Cena bude urcite pod 1000Sk.
Nedavno som s nimi spolupracoval aj na zariadeniach s GPS a GPRS komunikaciou, takze som rozmyslal, ci sa tam neda nejako zakomponovat aj toto (kedze uz mam napisany obsluzny softver). Ale v serverovniach casto GPS signal vobec nie je, takze nic z toho. Ten merac zrychlenia a pohybovy senzor musia pre zaciatok stacit. A hlavne su obe suciastky velmi lacne a mam uz s nimi skusenosti.
>bude urcite pod 1000Sk.
A to je prave ten problem. Pokial to budes mat pre seba tak OK, ale ako nahle sa to rozsiri tak na prvom sa poucia a dalsie potom uz...
inak ten infra senzor vo vnutry servera kde je dost teplo je rozumny?
A co sa tyka toho infra senzora, tak ide o to iste, ako su napriklad spinace svetla alebo pohybove senzory, cize okolita teplota ich z tohto hladiska neovplyvnuje (ak je v prevadzkovych hodnotach).