Revizija konfiguracije požarnega zidu


Lance Spitzner
Zadnjič spremenjeno: 26.03.2000

Pravkar ste pripravili čisto sveži požarni zid. Ali pa ste dobili novi požarni zid od kakšne firme pod svoj nadzor. V obeh primerih, vas verjetno zanima, če je požarni zid pravilno nastavljen. Bo preprečil nezaželenim vpogled v vaše omrežje? Bo zadovoljil vaša pričakovanja? Ta dokument vam bo poskusil odgovoriti. To je priročnik, s katerim si boste pomagali nastaviti ter kasneje tudi spremljati vaš požarni zid ter bazo pravil zanj. Primeri navedeni takaj temeljijo na Check Point FireWall-1, ampak bi morali ustrezati tudi drugim požarnim zidovom.


Kje začeti?


Tale dokument vam lahko pomaga v eni od dveh situacij. Prvič, da veste kaj želite od požarnega zidu; kaj lahko počne, česa ne more in da hočete preveriti vaše želje. Drugič, ne veste kaj pričakovati od požarnega zidu, zaradi tega morate požarni zid pregledati, da bi se več naučili o njem. V obeh primerih vam lahko ta dokument pomaga. Ne bomo govorili kako nastaviti ter pregledati omrežje, saj je to druga tema. Prav tako ne bomo razpravljali kateri požarni zid je boljši od drugih, saj ima vsak svoje prednosti ter slabosti. Ni potrebno izbrati najboljšega požarnega zidu, temveč pravilno nastaviti. To je cilj tega dokumenta; zagotoviti, da požarni zid dela pravilno in da se obnaša tako, kot mi želimo.


Kaj pričakujemo?


Prvi korak pri reviziji požarnega zidu je, da definiramo kaj pravzaprav hočemo od njega. Prepričajte se, da razumete vaša pričakovanja preden preverjate konfiguracijo požarnega zidu. Tako boste, ko boste končali s konfiguracijo, lahko primerjali rezultate vaših pričakovanj. Morda vas je nekaj, ki ne veste kaj pričakovati od požarnega zidu. Morda ste novi v podjetju in morate oceniti situacijo. Ali pa je bilo vaše podjetje šele ustanovljeno in ste prevzeli odgovornost nad omrežjem. Ne glede na to, poskusite definirati nekaj ciljev preden začnete konfigurirati požarni zid.


Metodologija


Revizija požarnega zidu se deli na dva dela. V prvem delu želimo testirati sam požarni zid. Ker je le-ta bistven v vašem zaščitnem planu, morate poskrbeti, da bo dobro zaščiten. V drugem delu želimo preizkusiti bazo pravil; kateri promet lahko gre skozi in kateri ne? Celoten namen požarnega zidu je kontrola prometa, zato je potrebno preveriti, če opravlja svoje delo kot zahtevamo.

Požarni zid. Če želimo revidirati požarni zid, ga je potrebno dobro zaščititi, tako da ne more nihče od zunaj ali znotraj dostopati ali celo spreminjati požarnega zidu. Najprej je potrebno zagotoviti, da je fizično zavarovan s kontroliranim dostopom. Ko ima nekdo fizičen dostop, je igre konec. Naslednja stvar je v popolni zaščiti operacijskega sistema. Predlagam, da si ogledate "oborožitveni seznam" za specifičen operacijski sistem. Zagotoviti morate, da operacijski sistem ustreza varnostnim določilom, ki so opisana v "oborožitvenem kontrolnem listu". Več informacij o oboroževanju si oglejte na stranehLinux-a, Solaris-a in Windows NT. Naslednji korak je skeniranje vrat vašega požarnega zidu, tako iz notranjega omrežja kot tudi od zunaj, za ICMP, UDP ter TCP. Pregledati je treba katera vrata so odprta na požarnem zidu. Na večini pravilno konfiguriranih požarnih zidov ne bi smeli najti nobenih odprtih vrat, niti ne bi smeli odgovarjati na ping query-je.

Pravilno oborožen požarni zid bi moral imeti le nekaj servisov za začetek. Ko pa je enkrat požarni zid v delovanju in na internetu, ne smejo biti nobena vrata izpostavljena zunanjemu svetu, razen če je to nujno potrebno. Veliko od vas, CheckPoint FireWall-1 uporabnikov, bo dobila grdo presenečenje, ko boste odkrili kopico odprtih vrat, kot so 256, 257 in 258. Ta vrata so namenjena administraciji, odprta po privzetih nastavitvah v control properties. Toplo vam priporočam, da jih zaprete. Tudi ICMP je po privzetem odprt in tudi tegale je dobro zapreti. Če je ICMP odprt, lahko kdorkoli na Internetu enostavno naredi "skico" vašega omrežja. Če potrebujete ta vrata za administracijo požarnega zidu, si naredite pravilo, ki omeji dostop samo na določene IP naslove. Bistvo zaščite požarnega zidu je, da onemogočimo dostop do njega kadar je le mogoče. Vsaka baza pravil mora imeti "lockdown" pravilo na začetku, ki zavrača ves promet do požarnega zidu. Tako je vaš požarni zid zapečaten. Če potrebujete dostop do požarnega zidu, imejte pravilo za dostopanje pred "lockdown" pravilom. Vsa ostala pravila morajo biti za "lockdown" pravilom. Veliko ljudi smatra to kot "duhovo" pravilo, ker naj bi skrilo požarni zid, vendar ga ne. Kar v resnici počne je, da ščiti požarni zid, tako da zagotavlja, da katerokoli pravilo, ki ga vnesete po "lockdown" pravilo ne bo škodovalo zaščiti požarnega zidu. Na primer, v demo bazi pravil, če date pravilo #3 najprej, ima vsak v notranjem omrežju popoln dostop do požarnega zidu. Lockdown pravilo, kadar je na prvem mestu, to onemogoči. To je ves namen skeniranja vrat vašega požarnega zidu; zagotavljanje, da niste pomotoma pustili kakšnih vrat odprtih nepooblaščenim ljudem. Za več informaciji o gradnji baze pravil, si oglejte Gradnja baze pravil za požarni zid.

Baza pravil. Ko ste enkrat revidirali požarni zid, je potrebno revidirati še bazo pravil. Cilj je zagotoviti, da požarni zid uveljavlja to, kar vi pričakujete. To storite tako, da skenirate vse omrežne segmente iz vsakega posameznega segmenta. Potrebno je potrditi, da požarni zid sprejema SAMO promet, ki ga dovolite vi. Veliko požarnih zidov ima več omrežnih segmentov, kot je recimo zaščiteni DMZ. Potrditi morate bazo pravil tako, da skenirate omrežje iz vsakega segmenta posebej. Priporočam vam, da namestite nek sistem na vaš DMZ ter poskušate vdreti v vaše notranje omrežje, saj je DMZ zelo ranljiv. To simulira, da če je eden vaših DMZ sistemov tarča uspešnega napada (kot recimo DNS ali WEB-strežnik) je vaše notranje omrežje še vedno zaščiteno s požarnim zidom. Pomnite: vaša baza pravil mora zavrniti vse, razen kar je specifično določenega. Čim manj servisov nudite in čim manj pravil imate, tem bolj zavarovano je vaše okolje. Če med procesom konfiguracije niste prepričani, če bo nek servis odprt ali zaprt, ga zaprite. Če se nihče ne pritožuje, ni bil potreben.

Overovljenje / Enkripcija. Obstaja veliko lepih opcij, ki bi jih radi preizkusili, še posebno overovljenje ter enkripcija. Pogosto pričakujemo od požarnega zidu, da overi uporabnikov dostop do nekega vira. FW-1 ima veliko različnih možnosti overovljenja, dobro jih je preizkusiti. Recimo, da pričakujete, da bodo uporabniki overovljeni preden dostopajo do vaše spletne strani, potrdite to sami. Poizkusite dostopati do spletne strani brez overovitve in opazujte, kaj se zgodi. Zelo lahko je narediti napako, ko pripravljate bazo pravil. Morda je nekaj, za kar ste mislili, da je zaščiteno z geslom, na voljo celemu svetu. Enak test napravite pri enkripciji. Če imate vire, do katerih se lahko dostopa samo z enkripcijo, jih testirajte. Poizkusite dostopati do njih brez enkripcije. Lahko pridete do njih? Med testiranjem imejte pognan sniffer (vohljač), kot je recimo snoop ali tcpdump. Zagotovite, da so vaši podatki v resnici kriptirani. Vaša pričakovanja je potrebno preveriti. So vaši viri zaščiteni tako, kot želite?

Dodatni servisi. Današnji požarni zidovi, kot je FW-1, lahko delajo z "third party" programsko opremo za dodatne servise. Na primer, skeniranje za viruse ali filtriranje spletne vsebine. Če uporabljate katerokoli od teh programskih oprem, jih najprej preizkusite. Na primer, za skeniranje za viruse pošljite okuženo e-pošto skozi požarni zid, da zagotovite, da anti-virusni program deluje. Če ne deluje, vnovič preglejte konfiguracijo in rešite težavo. Po tem ponovno testirajte anti-virus, da se prepričate, če sedaj deluje.

Kopanje globje. Ko ste ugotovili kateri viri podatkov so na voljo, lahko začnete kopati globje. Določili ste, kaj požarni zid prepušča, ampak kakšno nevarnost to predstavlja? Tukaj postanejo stvari zapletene, saj lahko konfiguracija vašega požarnega zidu postane konfiguracija omrežja. Ne pripravljate več požarnega zidu temveč podatke za njim. Cilj je ugotoviti, katere potencialne ranljivosti obstajajo za dostopne podatke. Predlagam, da pregledate vsak dostopen vir in ugotovite, če obstaja kakšna ranljivost. Na primer: določite, da požarni zid dovoli HTTP dostop do nekaj IIS web-strežnikov. Potrebno je ugotoviti, kakšno nevarnost predstavljajo tile strežniki (namig: veliko!). Ali pa najdete sistem, ki poganja FTPD, recimo WU-FTPD 2.4.2 VR17 (v tem primeru nadgradite na zadnjo verzijo). Če ranljivost obstaja, je potrebno ranljivost odpraviti ali pa se odločiti, če je riziko vreden servisa. Eden najboljših virov za ugotavljanje ranljivosti (UNIX in NT) je Bugtraq-ova baza ranljivosti na www.securityfocus.com. Priporočam, da pregledate to bazo za vsak servis, ki je dostopen. Prav tako obstaja vrsta orodij, ki vam pomagajo katere ranljivosti obstajajo. Poiščite nekaj orodij, ki so vam najudobnejša in jih uporabljajte.

Pisanje dnevnikov. Ko ste preverili požarni zid in bazo pravil, preglejte dnevnike na požarnem zidu. Je požarni zid prepoznal in zabeležil vsa skeniranja in ali je alarmiral po pričakovanjih? Kateri promet je zabeležil in kako? Če vaš požarni zid ni zabeležil večine vaših aktivnosti, je nekaj narobe, saj te informacije MORAJO biti vidne. Z pregledovanjem baze pravil boste tudi lažje razumeli, kam pogledati v prihodnje, ko boste pregledovali vaše dnevnike. Za FW-1 vedno priporočam Track Long. Če boste logirali pravilo, ga logirajte dolgo, tako da boste dobili vse informacije. Za več informacij od nevnikih in alarmih pri FW-1, si oglejte Zaznava vdorov za FW-1.


Orodja


Sedaj pridejo na vrsto zanimive stvari: orodja. Kako dosežemo to, o čemer smo pravkar razpravljali? Eno najboljših orodij za nadzor in kontrolo vašega požarnega zidu in baze pravil je dober port skener. Kot ste videli, ima razpoznava dostopnih servisov najvišjo prioriteto. Osebno mislim, da je eden najboljših port skenerjev Fyodor-jev nmap. To pa zaradi dveh stvari. Prvič, noben drug open-source port skener nima več opcij kot nmap, vključno z zaznavo operacijskega sistema, "stealth" (skrivno) skeniranjem, rpc zaznava itd. Drugič, orodje uporablja veliko nepridipravov. Če pa nepridipravi uporabljajo to orodje proti vašim požarnim zidom, ga morate tudi vi. Če poganjate nmap, priporočam da poizkusite Scan Stealth opcijo, kot recimo "-sS" ali "-sF" (opomba: Testirajte "stealth" skeniranje najprej na testnih računalnikih, saj se nekateri sistemi se sesujejo zaradi stealth skeniranja). Preverite, če vaši dnevniki na požarnem zidu lahko zapisujejo stealth skeniranja (FW-1 verzije 4.0 bi moral zaznati vsa nmap stealth skeniranja). Druga opcija, ki jo rad uporabljam je "-g", s katero lahko nastavite izvorni port. Tako lahko testirate napačno konfigurirano bazo pravil, ki dovoli pakete, ki temeljijo na izvornih portih, kot recimo FTP data (port 20), DNS lookup (port 53) ali vračajoči HTTP promet (port 80). Nova opcija je "-sA", ki je namenjena posebno testiranju baz pravil od požarnih zidov. En primer poganjanja nmap-a:


mozart #nmap -v -sR -P0 -T Aggressive -o nmap.out


Za več informacij o nmap opcijah in o uporabi le-tega si oglejte tele izvrstne dokumente. Za vse Linux Red Hat uporabnike, obstaja tudi v RPM paketu, tako da ga samo namestite in poženete. Slabe novice: Deluje samo na UNIX operacijskih sistemih (torej ne na Windows operacijskih sistemih).

Windows NT uporabniki ne obupujte, saj je kar precej Windows alternativ. Moj najljubši program za Windows je WS Ping ProPack. Ne samo da vsebuje port skener, ampak tudi vrsto drugih uporabnih UNIX orodij, kot je whois, snmpwalk itd. Na žalost port skener ni tako prilagodljiv kot večina drugih UNIX port skenerjev.

Ko ste ugotovili kateri servisi so dostopni z vašim port skenerjem, lahko kopljete globje. Kot že prej omenjeno, obstaja vrsta metod in orodij za kopanje globje. Vsa orodja so shareware/freeware. Tukaj je nekaj mojih najljubših:


Nessus (teče na UNIX-u, klient lahko poženemo na Windows 95/NT) Eden najboljših zastonjskih skenerjev ranljivosti.
Whisker(teče na vsemu, kar ima PERL) Preiskuje spletne strani za ranljivosti.
Firewalk (teče na UNIX-u) Ugotovi, katera vrata dovoli požarni zid.
Nemesis (teče na UNIX-u) Naredite svoje lastne paketke (TCP/UDP/ICMP).
Hping2 (teče na UNIX-u) Naredite svoje lastne paketke za PING/TRACEROUTE-anje sistemov.
NetBIOS Auditing Tool (teče na UNIX-uin Windows 95/NT) NetBIOS skenirno orodje.
Winfingerprint(teče na Windows 95/NT) Našteje NetBIOS uporabnike, skupine in servise.
legion(teče na Windows 95/NT) Od Rhino9 fantov, skenira za "smb shares".
Sam Spade(teče na Windows 95/NT) Podobno WS Ping ProPack, z nekaj drugimi dobrotami.


Če želite izvedeti več o pregledovalnih orodjih, predlagam, da si ogledate Security Focus bazo orodij. Za več informacij o orodjih za izkoriščanje varnostnih lukenj, si oglejte TechnoTronic.com FTP arhiv.

Povzetek


Požarni zid je le tako dober, kot je dobra njegova konfiguracija. V današnjem dinamičnem svetu internetnega dostopa je zelo lahko narediti napake med konfiguracijskim procesom. S pregledovanjem konfiguracije požarnega zidu lahko zagotovite, da požarni zid počne to, kar želite in to na varen način.