ot Zerg(4-08-2004)

reiting (16)   [ dobre ]  [ zle ]

Printer Friendly Variant za otpechatvane

Sergei QREMCHUK

Prevod Zerg

N 9 (284) 01.03.2004

 

Za suzhalenie, absolyutno zashtiteni sistemi vse oshte ne sa izmisleni — gotovi programi za pronikvane vuv vsiaka ot sushtestvuvashtite, kakto i opisanie na suotvetnite tehnologii, mozhe da se nameri v otkriti iztochnitsi. Starite dupki v operatsionnite sistemi i servizi s vremete blagopoluchno se smeniat s novi, i na tozi protses ne se vizhda kraia. Tvurdeniiata na poddruzhnitsite na OS GNU/Linux za tova, che tazi sistema e dosta po zashtitena ot sistemite na Microsoft, mi se struvat doniakude preuvelicheni. Da, az sum suglasen, vuzmozhnostta za priak analiz na koda na sistemata, bez neobhodimost ot neinoto diasemlirane,sushtestveno oblekchava turseneto na uiazvimosti — vuprosa e v tova, koi purvi shte otkrie tazi uiazvimost. Do neotdavna Linux, kakto i Unix v tsialo, gi spasiavashe fragmentatsiiata — nalichie na goliamo kolichestvo distributivi i operatsionni sistemi, a sushto i razlichieto na vlizashtite v sustava im prilozheniia ili tehni versii. Tazi bezrazbornost ne sposobstvashe do poiavata na golemi virusni epidemii, harakterni za Windows, osnovniia kod na koiato edva li se e prerabotval tolkova sushtestveno ot versiia kum versiia. No v posledno vreme se zabeliazva tendentsiia kum namaliavane na spasitelnoto raznoobrazie, i kak shte bude po natakuk e neizvestno. Mozhe, razbira se da se vika, tropa s kraka, pishe v pisma i forumi, no deistvitelno dobri analitichni materiali, sravniavashti arhitekturite na Linux i Windows, v Internet ne sa chak tolkova mnogo — PO goliamata chast ot statiite sa osnovani na emotsiiata. Razlichnite statistiki na fiksiranite probivi, sami po sebe si ne govoriat nishto, a otraziavat razprostranenostta na sistemite, puk i istinska pulna statistika ne znae nikoi, za mnogo probivi postradalite predpochitat da premulchat. Mezhdu vprochem i v Unix/Linux-sistemite sushto ima vsiakukvi virusi, chervei, troianski kone, rootkits i drugi tvari. Printsipa «tova ne mozhe da bude, zashtoto ne mozhe da bude nikoga» — e losha osnova za zashtita.

Za da budem spravedlivi triabva da otbelezhim, che vse pak obshtata kultura za zashtita na potrebitelite na  sistemite Open Source e razvita po dobre. Niakolko prichini sposobstvat za tova. Vse pak, kakvoto i da si govorim, sredno statisticheskiia Linux-potrebitel e po podgotven, toi znae, che kompyuturniia virus — tova e( kolkoto i stranno da zvuchi) samo edna programa, koiato triabva da startirash na svoia kompyutur (ne vsichki izpolzvat uiazvimosti v tezi ili onezi servizi). Dopulnitelna otgovornost vurhu razrabotchitsite i dopulnitelen kontrol ot strana na potrebitelite se nalaga ot razprostranenieto na programite v izhoden kod. Da se dobviat dve tri funktsii, otvariashti dostup do kompyutura —- lesna rabota —- da prekompilira rpm-paketi iska/mozhe ne vseki. A za tova za novi programi se hodi na tezi resursi, na koito napulno se doveriavat, i koito se bezpokoiat za svoiata reputatsiia (domashnata stranitsa na programata, spetsialni saitove kato http://rpmfind.net/ i http://www.freshports.org/). Na domashnata stranitsa na Vasil Pupkin edva li si sruva da se hodi za novata versiia na XMMS. Taka sushto vseki uvazhavasht sebe si razrabotchik ili razprostranitel na PO redom sus svoiata programa v otdelen fail kato checksum.md5 (i/ili vutre v otelen fail) postavia kontrolnata suma, koiato mozhe vednaga da se proveri. Takava proverka po algorituma MD5 po vuzmozhnost garantira, che v faila niama promeni, i pred vas e deistvitelno original.

Da se razbere kontrolnata suma na svaleniia fail e mnogo prosto (pomoshtnata programa md5sum e v nalichnost vuv vseki distributiv— ako ia niama mozhe da se vzeme ot  http://www.gnu.org/software/textutils/textutils.html):

# md5sum /home/sergej/aide/aide-0.10.tar.gz
39eb7d21064cac7b409c45d038b86cd8 /home/sergej/aide/aide-0.10.tar.gz

Sega, sravniavaiki stoinostite na kontrolnata suma, dadena ot programata, s posochenata vuv faila, mozhe da napravim izvod za originalnostta na faila. Analogichno, kupuvaiki distributiv niakude na pazara, e zhelatelno za uspokoiavane na dushata da posetim saita na proizvoditelia i da iziasnim kontrolnata suma na postavenite iso-obrazi ili otdelni prilozheniia. Proverkata na kontrolnata suma izobshto triabva da stane navik pri vsiako instalirane na programni sredstva. V FreeBSD-sistemite pri otsustvie v distributiva na nuzhnata programa ili versiia, predi da se oburnem kum saita ili da kompilirame ot izhoden kod, triabva da se oburnem kum durvoto na paketite ili portove. Ako programata e vklyuchena v tiah, togava tia e preminala testirane na suvmestimost/bezopasnost i v kraina smetka niama da stane prichina za krah na sistemata. V tozi sluchai kontrolnata suma se proveriava avtomatichno pri instaliraneto, bez iavnoto uchastie na potrebitelia. I tova e nai prostiia i bezopasen sposob da se postavi novo PO.

Sluchva se, che kompilatsiiata s pomoshta na portove, v tova chislo i po prichina na nepravilna kontrolna suma, zavurshva s greshka. V tozi sluchai mozhe da pomogne obnoviavaneto na durvoto na portovete. V kraia na kraishtata, vinagi mozhe da se oburnete za pomosht kum choveka poddurzhasht suotvetniia port ( MAINTAINER).

Da razberete negoviia elektronen adres e mnogo prosto. Vlezte v kataloga na nuzhniia port i daite komandata:

# more Makefile | grep MAINTAINER
MAINTAINER= anarcat@anarcat.dyndn.org

Izpratete na tozi adres izhoda ot kompilatora i informatsiia za sistemata (uname ), i ne zabraviaite predvaritelno da blagodarite za pomoshtta.

S pomoshtta na kontrolnata suma mozhe ne samo da se proveriavat instaliranite programi Ako zloumushlenika vse-pak e uspial da pronikne v mrezhata, to negovoto purvo deistvie, nai veroiatno, shte bude instaliraneto ili izmenenieto na niakoi programi. Naprimer, toi mozhe da  zameni standartnata i chesto izpolzvana programa ps na druga, s «troianets» vutre, a komandata ls mozhe da ne zabelezhi suzdadenite ot nego katalozi. Za da izbegnat otkrivaneto si ot, naprimer, komandata find, takiva programi «umeiat» da imitirat vremeto na suzdavaneto si, no da se organizira podpravena kontrolna suma e kude po slozhno.

Tezi, koito izpolzvat rpm-based-distributsii, mogat za kontrol na tselostta na sistemata da se vuzpolzvat ot vuzmozhnostite na menidzhura na paketi. Kogato se instalira nova programa, to dannite za paketa v tsialo i otdelnite failove, negovi sustavliavashti, v tova chislo i kontrolnata suma, se zapisvat v baza danni. Zatova vuvezhdaiki komandata

# rpm -Va > file

mozhe da se poluchi predstava za promenenite failove (i za samolichno razvalenite sushto). Ako faila se okazhe prazen, to promeni niama— naistina, tova oshte ne oznachava, che sistemata e chista. No ako se poiaviat podobni redove:

# rpm -Va
S.5....T c /etc/hotplug/usb.usermap
S.5....T c /etc/sysconfig/pcmcia

to izmenenite failove e neobhodimo da se proveriat. Optsii:

• M — razlichava se sustoianieto (vklyuchitelno razshirenie i tip na faila);

• S — razlichava razmera na faila;

• 5 — razlichava se sumata MD5;

• D — ne suotvetstva broia  osnovni/vtorostepenni ustroistva;

• L — ne suotvetstva putia  readLink(2);

• U — razlichava se potrebitelia-sobstvenik;

• G — razlichava se grupata- sobstvenik;

• T — razlichava  se mTime.

Ako, kakto v pokazaniia primer, tova sa konfiguratsionni failove, koito, estestveno, sa dluzhni da se promeniat, to nishto strashno niama. No ako  ima failove ot katalozite, sudurzhashti izpulnimi failove, to e redno da zastanem nashtrek. Pri pomoshtta na komandata rpm -qf /path/to/file mozhe da proverim, iaviava li se dadeniia fail chast ot paketa. Namerenite izmeneniia mozhe — estestveno, predvaritelno zapazvaiki suhraneniet failove za po natatushno izsledvane — vednaga da vuzstanovim:

# rpm -i --force

No tova ne e vsichko. Po prostoto i iasno strukturirano failovo durvo vuv vsichki Unix-sistemi, v koito izpulnimite failove, konfiguratsionnite failove, postoianno promeniashtite se failove (naprimer, log-failovete) i drugi lezhat v razlichni klonove na durvoto, pozvoliava ne samo da se iznesat tseli diskovi razdeli v read-only ili da se ogranichi dostuput do tiah na nivo iadro s pomoshtta na spetsialni krupki (patchove), no i da se kontrolira tselostta na nuzhnite failove. V Windows, naprimer, da se izpulni podobna zadacha e dosta po slozhno, tui kato shte se nalozhi da se obhvane goliam obem danni (programata pishe danni, neobhodimi za rabotata i, tam kudeto schete za nuzhno neiniia suzdatel, i za tova te sa razhvurliani po tseliia disk). Vprochem, otdelni resheniia sushtestvuvat— imenno s tiahna pomosht uspiavame da razberem za tova, che neshto ili niakoi e opitval da izmeni bez znanieto na stopanina na kompyutura registura i drugi kritichni oblasti s danni. Naprimer, WinPatrol. Taka prilaganeto na spetsialno obucheni programi, proveriavashti tselostta na sistemnite failove, mozhe da e tova kraino sredstvo, koeto shte poprechi na zloumishlenika da se zakrepi na vashiia kompyutur.

Sred Open-Source programite, prednaznacheni za avtomatizatsiia na protsesa na izchisliavane na kontrolni sumi i davane na rezultat ot sravniavaneto, nai populiarni sa Tripwire ( http://www.tripwire.org/) i AIDE — Advanced Intrusion Detection Environment ( http://www.cs.tut.fi/~rammer/aide.html ili http://sourceforge.net/projects/aide). Niakoia ot tiah opredeleno shte namerite vuv vashiia distributiv, makar che se sluchva da sa postaveni i dvete. Dnes shte vidim kak se nastroiva i izpolzva AIDE.

Programata AIDE e testvana i raboti na povecheto Unix-sistemi: Solaris, Linux, FreeBSD, Unixware, BSDi, OpenBSD, AIX 4.2, TRU64 4.0x i pod Cygwin.

Instaliraneto i ne e osobeno slozhno. Razopakovame arhiva i kompilirame po obiknoveniia nachin:

# tar -xzvf aide-0.10.tar.gz
#cd aide-0.10
# ./configure
#make
#su
$make install

V kachestvoto na dopulnitelni optsii moga da preporucham –with-zlib za da e vuzmozhno izpolzvane na zlib-kompresiia i –with-psql za suhranenie na danni vurhu vunshna baza danni RostgresSQL.

Ako kompilatsiiata e preminala normalno, e vreme da se zaemem s konfiguratsionniia fail. Toi se naricha aide.conf, i sled instalirane se namira v direktoriiata /usr/local/etc. Da go razchoplim vurhu dadeniia primer (makar i na slozhen — za normalna rabota e dostatuchno samo da pokazhem proveriavanite direktorii).

# AIDE conf

# baza danni, za chetene, — zhelatelno e da se kopira v nedostupno miasto(po podrazbirane e ./aide.db)

database=file:/var/lib/aide/aide.db

# mestopolozhenieto na novosuzdavanata baza danni (./aide.db.new)

database_out=file:/var/lib/aide/aide.db.new

 

# ako programata e kompilirana s poddruzhka na zlib, to po tozi nachin se vklyuchva arhiviraneto na dannite za ikonomiia na miasto

gzip_dbout=yes

 

# tuk za spravka sa opisani vsichki vuzmozhni parametri, izmenenieto na koito mozhe da kontrolira AIDE

#

 

#p:   permissions — izmenenie na pravata

#i:   inode — izmenenie na inode

#n:   number of links — izmenenie na kolichestvoto prepratki

#u:   user — izmenil se e potrebitelia

#g:   group — grupata

#s:   size — razmera

#b:   block count — indeksa na bloka

#m:   mtime — vreme na modifikatsii

#a:   atime — vreme na dostupvane

#c:   ctime — vreme na suzdavane

#S:   check for growing size — proverka za izmenenie/narastvane na razmera

# konrolni sumi  po suotvetnite algoritmi

#md5:  md5 checksum —

#sha1:  sha1 checksum

#rmd160: rmd160 checksum

#tiger: tiger checksum

#haval:     haval checksum

#gost:     gost checksum

#crc32:     crc32 checksum

# predustanovki, sgruppirovannue pod opredelennue zadachi

#R:   p+i+n+u+g+s+m+c+md5

#L:   p+i+n+u+g

#E:   Empty group (prazna grupa t.e. nishto ne se kontrolira)

#>:   Growing logfile p+u+g+i+n+S (tova e za postoianno uvelichavashti se failove)

# i samostoiatelno suzdadeni ot potrebitelia

Binlib = p+i+n+u+g+s+b+m+c+md5+sha1

ConfFiles = p+i+n+u+g+s+b+m+c+md5+sha1

Logs = p+i+n+u+g+S

Devices = p+i+n+u+g+s+b+c+md5+sha1

Databases = p+n+u+g

StaticDir = p+i+n+u+g

ManPages = p+i+n+u+g+s+b+m+c+md5+sha1

 

# v redovete dolu se zadavat direktorii i pravila, koito shte se kontrolirat, makar i za proverka na tsialata sistema mozhe da se izpolzva prosto / R; zabelezhete sushto, che se prilagat reguliarni izrazi

# takava konstruktsiia dobavia samo direktoriiata /boot bez poddirektorii

=/boot$ Binlib

# vsichko, koeto e po dolu, shte bude zaobikoleno rekursivno

/bin Binlib

/sbin Binlib

/usr/bin Binlib

/usr/sbin Binlib

/usr/local/bin Binlib

/usr/local/sbin Binlib

/usr/games Binlib

/lib Binlib

/usr/lib Binlib

/usr/local/lib Binlib

# nadolu, kakto vizhdate, se prilagat veche drugi pravila

/var/log$ StaticDir

/var/log/aide/aide.log(.[0-9])?(.gz)? Databases

/var/log/aide/error.log(.[0-9])?(.gz)? Databases

/var/log/setuid.changes(.[0-9])?(.gz)? Databases

/var/log Logs

# direktorii /dev i /proc shte budat izklyucheni ot spisuka na proveriavanite

!/dev

!/proc

Kakto vizhdate, edinstveniia problem se sustoi v tova da opredelim kum koi direktorii da prilozhim pravilata za da izbegnem povtoreniia i luzhlivi trevogi. Vprochem, sled dve tri preminavaniia na konkretnata sistema, pravilata mogat da se korigirat spored situatsiiata. Vuv faila sushto e vuzmozhno postavianeto na promenlivi — naprimer, v reda @@define MAILTO root na promenlivata MAILTO se prisvoiava stoinost root. Pri sledvashto puskane na aide s pomoshtta na cron (vizh statiiata na Sergei PARIZHSKI «Pingvin na avtopilot», MK ą50 (273)) otcheta za rabotata shte bude izpraten na ukazaniiat adres. Sled zadavane na pravilata gi zapisvame i suzdavame baza. Za tselta startirame programata aide s parametur –i:

# aide -i

Tova deistvie shte suzdade baza i shte ia suhrani v database_out, v nashiia sluchai tova e /var/lib/aide/aide.db.new. Tova e osnovnata baza, s koiato shte sveriavame v budeshe. Pri tova e zhelatelno bazata da se suhraniava na otdelen nositel, kato po tozi nachin ia zashtitavame ot modifikatsii. Naprimer, kato ia suhranim na disketa:

#mount /dev/fd0 /mnt/floppy
#mv /var/lib/aide/aide.db.new /mnt/floppy/

I bez da zadavame kakvato i da e stoinost na promenlivata database vuv faila aide.conf,sled tova pri proverka ia montirame, vlizame v kataloga i davame komanda za proverka.

#mount /dev/fd0 /mnt/floppy
#cd /mnt/floppy
#aide --check

Ako izhoda e goliam, koeto ne mozhe da se izbegne pri purvonachalna nastroika, prenasochvame izhoda kum fail:

#aide –check > ~/check

I gledame, kakvo se e promenilo sled suzdavaneto na bazata. Vuv faila shte vidim priblizitelno takiva redove:

Start timestamp: 2004-02-12 16:54:09
Summary:
Total number of files=54989,added files=2,removed files=2,changed files=54818
Added files:
added:/var/lib/xdm/authdir/authfiles/A:0-Q5jFPJ
added:/var/lib/aide/aide.db
Removed files:
removed:/var/lib/xdm/authdir/authfiles/A:0-v8GwFo
removed:/var/lib/aide/aide.db.new
Changed files:
changed:/opt/pbs/lib/xpbs
changed:/opt/pbs/lib/xpbs/bin
Directory: /bin Atime : 2004-02-12 09:54:53 , 2004-02-12 16:50:34
Mtime : 2004-02-02 14:12:13 , 2004-02-12 16:44:19
Ctime : 2004-02-02 14:12:13 , 2004-02-12 16:44:19
File: /bin/dd
Atime : 2004-02-12 09:50:51 , 2004-02-12 16:45:02
File: /bin/ash
Atime : 2004-02-12 09:50:51 , 2004-02-12 16:45:02
Ctime : 2004-01-31 21:12:55 , 2004-02-12 16:44:19
I t.n.

Vednaga se vizhda, kakvo stava v sistemata i kakva informatsiia sledva da se izklyuchi ot kontrola, za da ne pretovarvame izhoda. Taka, naprimer, za izpulnimite failove kontroliraneto na vremeto na dostup atime e izlishno, inache pri vsiako puskane na programata informatsiia za tova shte bude vklyuchena v otcheta, a izmenenieto na vremeto na suzdavane (ctime) za /bin/ash izglezhda mnogo podozritelno. Ako v sistemata sa stanali globalni izmeneniia (naprimer, obnoveni sa niakoi paketi), to bazata sledva da se obnovi, izpolzvaiki optsiiata –update.

E tova e vsichko za koeto iskah da Vi razkazha. Kakto vizhdate, tolkova prosto neshto, pozvoliava da poluchite pulna informatsiia za tova kakvo se sluchva v kompyutura, da kontrolirate dostupa kum vazhnite sistemni failove, i pri pravilno izpolzvane pravi fakticheski nevuzmozhno nezabelezhimo da se promeniat failovete.

Linux forever!

 



<< Linuks kato sekretar | KAKDA Kompilirame KDE & QT >>