FIREWALL - základ bezpečnosti (díl 2/3)

Security 1

V předchozím díle článku Firewall je základ, antivir je k ničemu!, jsem se věnoval především tomu, k čemu slouží sandbox a firewall, a proč je použití antiviru spíše dodáním falešného pocitu bezpečí, než skutečným řešením.

Obsah:

Cíl tohoto článku: vysvětlit pokročilé principy nastavení a fungování firewallu a sandboxu.

Teď trochu více teorie, mírně zaměřené na Tiny Personal Firewall (existují i jiná řešení, nicméně TPF je mocné, a to jako firewall + sandbox, jiná řešení obvykle kombinují 2 i více softwarových balíků, které se hůř ovládají a vyjdou Vás i dráž).

Nicméně, teorie bezpečnosti je pochopitelně platná i pro jiné kombinace, než TPF.

Firewall slouží jako "filtr", který určuje, jaké procesy mohou komunikovat s okolním světem, a na kterým portech se, případně, počítač okolnímu světu otevře a bude naslouchat.

Komunikace se v zásadě dělí na:

  • Outbound - výstupní, někdy v nastavení firewallu označovaná jako Local, Trusted Zone, či Allow Access.
  • Inbound - vstupní, někdy označovaná také jako Server, či Internet.

Jaký je v tom rozdíl?

  • Outbound - označuje, že daný lokální proces, program, či služba může na specifikovaném portu zahájit odchozí komunikaci (iniciovat ji).
  • Inbound - označuje, že daný lokální proces na daném portu "naslouchá", je připraven akceptovat zahájenou komunikaci s okolním světem.

Firewall = sada pravidel pro filtrování paketů

Firewall je potom založen na sadě pravidel, která specifikují, na kterým portech bude daná aplikace naslouchat, a na kterých je oprávněna zahájit komunikaci. Pravidla pro Inbound a Outbound komunikaci se navíc liší pro tzv. Trusted Zone (komunikace na lokální síti, případně i v rámci jednoho počítače) a Internet Zone (komunikace s okolním světem).

Například pro Vaši testovací instalaci Apache 2 serveru povolíte Inbound komunikaci z Trusted Zone (Vaše lokální síť, či jen Váš počítač), ale již nikoliv z Internet Zone (není to server v produkci).

Na standardním počítači, se standardní instalací Windows, nemáte příliš důvodu povolovat aplikacím Inbound komunikaci. Jak internetové prohlížeče, tak FTP klient, email klient, RSS čtečka, a další, si vystačí jen s komunikací, kterou iniciují oni, tedy s Outbound komunikací. Není důvod aby akceptovali komunikaci iniciovanou z internetu.

Jediné místo, kde je nutné povolit Inbound bývá P2P (peer-to-peer) klient, popřípadě komunikátory typu ICQ či Miranda IM, popřípadě lokální proxy pro filtrování obsahu (Proxomitron).

Používání proxy je vůbec dost diskutabilní otázkou bezpečnosti, proxy totiž z principu naslouchá veškeré Inbound komunikaci na portu 80, případně i dalších (21, 443), z Trusted Zone i Internet Zone, doporučeno je tedy spíše, pokud se bez ní obejdete, proxy nepoužívat.

Firewall a vytváření pravidel

Základním pravidlem pro vytvoření správných a bezpečných pravidel je, povolit portů a IP adres co možná nejméně, jen to, co je nezbytně nutné, pro fungování dané aplikace.

Dobrý postup je začít s vytvořením skupin dns, browser a skupiny email. Řešení pro DNS je několik, já obvykle IP adresu DNS serveru zahrnu, z pohodlnosti, do Trusted Zóny, takže není nutné explicitně přidávat veškeré programy do DNS skupiny, je ale teoreticky bezpečnější vytvořit si speciální pravidla pro DNS (IP spoofing).

Základní pravidla pro browser by měla umožňovat Outbound komunikaci na portu 21 (ftp), 80 (http) a 443 (https), Inbound zakázána.

Pro seznam nejčastěji používaných portů doporučuji například governmentsecurity.org.

Pro email klienta by jste vytvořili skupinu s povolenými Outbound porty 25 (smtp, vhodné je i omezení IP adresy například na smtp.email.cz), a 110 (pop3, opět, můžete omezit i IP adresu například na pop3.email.cz, a neotevírat celé pásmo).

Obecně, zkuste definovat pravidla co nejstriktnější, pokud nějaká aplikace přestane fungovat, pravidla zmírněte. Takový Firefox a Internet Explorer poté zařadíte do skupiny browser, Operu navíc i do skupiny email (má v sobě M2, emailového klienta).

Zneužití IE a OE

Mimořádně vhodné je rovněž definovat sadu pravidel pro Internet Explorer, a povolit jen odchozí komunikaci na www.windowsupdate.com, a Outlook Express a Outlook (Office) zakázat úplně. Většina makro-virů a ActiveX nástrah využívá právě tyto 2 programy a bezpečnostní díry v nich.

Další pravidla

Security 2

Firewall funguje následně tak, že veškeré procesy a komunikace, které nejsou explicitně povoleny, buď zakáže, nebo se Vás dotáže, zda je chcete povolit (toto chování, Ignore, Deny, Ask je možné v pravidlech nastavit).

Jako poslední pravidlo je vhodné vytvořit obecné pravidlo v nejnižší úrovni III., které zakáže veškerou Inbound a Outbound komunikaci, pravidla uvedená v úrovních I. a II. mají přednost (TPF podporuje 3 úrovně). Tak dosáhnete toho, že systém bude propouštět jen povolené procesy z úrovní I. a II.

NetBIOS a ICMP

Speciálně bych upozornil na porty 135-139, na kterých operuje Microsoftí NetBIOS. Řada napadení Windows zneužívá právě standardně povolený NetBIOS pro získání přístupu k počítači. Na domácím počítači nemá NetBIOS co dělat. Maximálně snad na lokální síti.

Poslední věcí bývá zakázání echo na ICMP (ping) pakety, a nastavení "stealh" režimu firewallu, firewall tak nebude odpovídat na žádné requesty, případnému útočníkovi se tak bude zdát, že zkoumaná IP adresa neexistuje a bude se raději zabývat IP adresou jinou...

Interní procesy Windows

Dalším krokem je zakázat veškeré služby Windows, které nepotřebujete, jak jsem již psal dříve, a to zejména:

  • Automatická konfigurace WiFi - nechcete přece, aby se někdo do Vašeho notebooku naboural v internetové kavárně, že?
  • ICF (firewall ve Windows) - používáte něco lepšího, ne?
  • NetBIOS (port 135) nad TCP/IP - absolutně nutné zakázat, většina hackerů skenuje hromadně právě porty 135-139.
  • NetMeeting (sdílení plochy) - v drtivé většině nepotřebujete, aby se někdo připojil na Váš desktop.
  • Prohledávání počítačů - zpomaluje chod Windows, postačí ruční mapování.
  • Protokol SSDP - protokol, který nepoužívá žádná rozumná aplikace.
  • Systém událostí modelu COM+ - API, které nepoužívá žádná rozumná aplikace..
  • Telnet - opět, ve Windows nemá smysl.
  • Terminálové služba - ve Windows nemá smysl.
  • Vzdálený registr - chcete aby se někdo napojoval na Váš registr? Vzdáleně?
  • Webový klient - nepotřebujete.
  • Zařízení UpnP - protokol, který nepoužívá žádná rozumná aplikace..

Sandbox

Následně je nutné přistoupit ke konfiguraci sandboxu, tedy té části TPF, která se stará o autorizaci procesů.

Představte si následující scénář:

Security 3

Stáhnete si z www.bestwarez.com nějaký software. V klidu si jej nainstalujete. Spokojeně jej 3 měsíce používáte a napíšete v něm i jednu klíčovou prezentaci. Nicméně, nějak se stane, že Vaše konkurence se k této prezentaci dostane a nabídne klientovi o 10% nižší cenu, o 50% lepší garance, a o 20% kratší termíny. Jak je to možné?

Jednou z možností je, že se Vám s Vaším ukradeným softwarem do počítače dostal i Trojan. Trojan, který používá, například, "application hijacking" na to, aby legitimně, a pro Vás nepozorovaně, komunikoval s Internetem.

Jak tomu zabrání sandbox?

  • Nedovolí vytvořit nový EXE, DLL, VXD a další soubor bez Vašeho vědomí.
  • Nedovolí spustit EXE soubor, který není autorizován.
  • Autorizace může být trvalá, není vhodné autorizovat každé jednotlivé spuštění, v tomto případě je spočítán MD5 hash-key souboru, a v případě jeho napadaní virem, tudíž změny souboru, je autorizace odmítnuta. Pro pár programů, které zapisují do svého těla, můžete povolit autorizaci jen na základě jména souboru a PATH.
  • Nedovolí neschválený zápis do systémových souborů.
  • Nedovolí neschválený zápis do registrů.
  • Nedovolí neschválené použité OLE, DDE, COM+ mechanismu.
  • Nedovolí "application hijacking", tedy přístup neautorizované aplikace ke komunikace formou přístupu přes aplikaci autorizovanou (nejčastěji Internet Explorer či Outlook)

Závěrem dílu 2/4 přeji příjemné nastavování a přidávám jednu dobrou radu - než uděláte jakékoliv změny pravidel, zastavíte services, atd., udělejte si zálohu, popřípadě si aspoň na kus papíru napište, co jste měnili. Ušetří Vám to pár bezesných nocí 😉

Příště se budu věnovat praktickým nastavením firewallu a sandboxu, na konkrétních příkladech pro Windows i Linux.

Komentáře 40

  1. #1 Jiří Macich ml.

    Ty Radku, jestli máš pravdu s tím, že antiviry jsou k ničemu, tak proč je tolik firem se tím zabývajících? Že by parazitování na neznalosti?

    Zajímalo by mě, jak se díváš na firewall ve Windows XP. Já ho beru jako nespolehlivý, ale s SP2 se to snad zlepší, ale asi ne rapidně.

  2. #2 Radek Hulán autor webu ▲10 ▼0

    [1] antiviry jsou (skoro) k ničemu, tedy, pro pokročilého uživatele. Ta zakázka na 500.000 počítačů US Air Force je vázána na Centrally Managed Systems, veškeré procesy se spravují centrálně, ale zkus si představit, že do této konfigurace, co popisuji, se pustí normální BFU... Jak to dopadne? Jeho systém bude totálně špatně konfigorován, dotazy systému na spouštění procesů jej budou obtěžovat, takže je raději vypne, nebo firewall odinstaluje.

    TPF je řešení pro pokročilé uživatele, a těch je málo, tak 1-5%...

    Zbytek má problémy i s tím primitivním antivirem.

    To ale neznamená, že když je pro BFU antivir tak akorát, že je to DOBŘE. Každý nemůže jezdit v Mercedesu 😉

    Antivir poznává jen několik málo známých typů nákaz, kdežto sandbox je prevence pro libovolnou nákazu. Ale... musí se tomu rozumět 🙁

  3. #3 Radek Hulán autor webu ▲10 ▼0

    [1] většina masově prodávaného software MUSÍ být psána tak, aby tomu nebylo nutné rozumět... Masy nechtějí moc myslet..

  4. #4 Erix

    no, tak vcera nainstalovany trial NOD mi nasel trojany. AVG si ani nehrablo, dale bez komantare.
    Ale jedna otazka: Jak je resena "centralni sprava" TPF? Jde mi o to, ze pocitac pouziva nekolik uzivatelu s vlastnim kontem. Ted tam mam ZoneAlarm a uz se mi nekolikrat stalo, ze BFU povolil pristup urciteho programu na net, protoze bud to byl novy program, nebo zmeneny program. Takze, da se zakazat autorizace procesu pro ostatni konta? (Win XP)

  5. #5 Radek Hulán autor webu ▲10 ▼0

    [4] no, tak vcera nainstalovany trial NOD mi nasel trojany. AVG si ani nehrablo, dale bez komantare -- ne nadarmo, je slovenský NOD32 hodnocen jako nejlepsi na svete

    No, ZoneAlarm jsem taky testoval a tam se da nastavit heslo spravce... Ale ZA nema sandbox, coz mimo jine to, co brani BFU spoustet na pocitaci soubory typu super-zabava.exe, ktere jim prijdou emailem od jejich podobne omezenych kolegu...

    Ale jinak TPF muze mit zcela oddelene konfigurace pro vice uzivatelu, vice kont, vcetne prav na to, co mohou delat. Navic, konfigurace je XML soubor, takze pri re-instalaci, ci jinem pocitaci jej staci prekopirovat...

  6. #6 bman

    No, cely mi to prijde jako reklamni clanek.
    Pokud chcete o necem psat, takto napiste trochu objektivne a normalne.
    Hlasky typu antiviry jsou na ho... a jedine TPF vas ochrani mi prijde trochu mimo.
    Myslim, ze bezpecnosti se da dobre dosahnout i s free produkty a bez nutnosti platit za TPF!!
    Pokud vim, tak SandBox pouziva napr. i Norman Antivirus.
    Jaky je v nich rozdil nevim, o sandbox sem se nazajimal.
    A antiviry tu maj urcite svoje misto.

  7. #7 Radek Hulán autor webu ▲10 ▼0

    [6] no vždyť toto ale je objektivní, alespoň z mého pohledu... Co konkrétně se Vám nezdá na závěru, že antivirus je ŘÁDOVĚ horší řešení než sandbox a firewall?

    A pokud znáte dobrý open-source sandbox, sem s ním, TPF je za pár korun...

    Já osobně lepší řešení neznám... Vy ano?

  8. #8 bman

    Me to tak vyznelo, ale asi zalezi jak komu pripada. Spis na me tak pusobil ten predchozi clanek, ale napsal sem to sem.
    Netvrdim, co je lepsi. Jak sem psal, o sandbox jsem se jeste nezajimal tak to nebudu posuzovat, zatim. Jako zaver by mohlo byt, ze sandbox+firewall je lepsi jak AV+firewall, ale mohlo by se dodat, ze i druhou konfiguraci lze dosahnout vysoke bezpecnosti, pokud se dodrzuji urcite zasady. A co treba Norman antivirus, ktery ma sandbox + firewall?
    Myslim, ze napr. na mail serverech sandbox asi ne, i kdzy clovek nikdz nevi. 😄
    Ono, zadna technologie neni samospasitelna a 100%. Pokud bude uzivatel hovado, tak mu nepumuze ani sandbox. [7]

  9. #9 Pavel

    Radku, potřeboval bych nutně poradit, kde v TPF 5.5 zavřu určitý port, jde mi konkrétně o port 1025. Nevím, z jakého důvodu je tento port stále otevřený, když ostatní jsou skryté nabo zavřené. Potvrzuje to GRC.COM i AUDITMYPC.COM. Díky moc za odpověď.

  10. #10 Radek Hulán autor webu ▲10 ▼0

    [9] no, podle mě, by mělo stačit toto, ale chce se to podívat, zda to neotevíráš jiným pravidlem:

    "tcp,inbound,1025",
    ip="*",
    app="*",
    zone="*",
    assignment="$ All(*)",
    prevent,
    monitor

    a samozřejmě, udělat to samé i pro UDP, a případně i pro System, nejen pro All

  11. #11 Radek Hulán autor webu ▲10 ▼0

    dobrá věc je taky podívat se na Activity Monitor (amon), popřípadě si stáhnout TCPView ze http://www.sysinternals.com/ a podívat se, která aplikace ten port otevírá..

  12. #12 Pavel

    Aha, otvírá ho svchost.exe protokol UDP a status LISTENING. Přitom na jiných portech má svchost.exe taky LISTENING, ale nejsou otevřené.

  13. #13 Pavel

    Tak jsem zkoušel všechno možné, ale pořád je 1025 vidět, v původním Sygate bylo vše skryté. Asi se k němu budu muset vrátit,bohužel. Jo a je to UDP/TCP svchost.exe listening.

  14. #14 Radek Hulán autor webu ▲10 ▼0

    [13] Sygate je úplně někde jinde... Z vlastních zkušeností, já jsem chtěl TPF po týdnu zahodit, opravdu, ale... protože jsem je neuměl. Nerozuměl jsem tomu. Ale až člověk pochopí co a jak nastavit, tak... NENÍ lepší produkt.

    Doporučuji zeptat se na:
    http://www.tinysoftware.com...

    A případně tam hledat 😉

  15. #15 Pavel

    Ještě teda vydržím a budu zkoušet, případně, jestli mi nepomůže další část Tvého návodu.

  16. #16 Pavel

    Ahoj Radku, tak jsem to "částečně" vyřešil- po dalších čtyřech hodinách. Pomohla primitivní věc - úplně se stydím,po těch tisících věcech co jsem na PC řešil ať se softem,tak s hardwarem-naposled nekompatibilita P4 3.2EE s určitou GeForceFX5950 - a totiž přesunutí LAN připojení na net do DANGEROUS zóny(ať žije kolejní 100Mb připojení na net). Tím "částečně" myslím, že GRC i AUDITMYPC hlásí všechny porty jako skryté i ten 1025, ale problém je s programem NMapWin, který pořád vidí 135 a 1025 jako OPEN. Ale možná jen proto, že ho spouštím od sebe, v normálnější dobu požádám kámoše,ať mě testnou. Ale TPF ZŮSTÁVÁ ! 😄

  17. #17 bman

    [16] Nemam TPF, takze nevim jaky to ma obecny nastaveni.
    Port 135 otevira sluzba DCOM, ktera normalne neni treba. Utilitou z
    http://grc.com/dcom/intro.htm ji muzes deaktivovat.
    A ted k tomu UDP a portu 1025. Podle me tento port otevira svchost jako DNS sluzba. Tim padem predpokladam, ze je v TPF nejaky defaultni pravidlo na DNS. Deaktivuj ho a nastav si toto DNS pravidlo.
    aplikace: Generic host process (tj. svchost.exe),
    obousmerny provoz pro UDP (inbound+outbound) na vzdaleny port 53 a zadej IP adresu DNS serveru.

  18. #18 Pavel

    [17] Díky za radu, už jsem to s tím svchost.exe vyřešil, jen mě teď trochu zlobí Miranda. Jednak se hlásí na vzd.port 5190(aol) jako outbond-to je ale v klidu. Ale ještě otvírá jeden další port-většinou různé, kde má listening a tento port je jako open. Stejným zpúsobem jako svchost se mi to nepodařilo vyřešit, ani nastavením pravidla pro miranda.exe a rozsahem adres all. Taky nevím jestli nejde nastavit na konkrétním portu režim STEALTH, vím jen NETWORK SECURITY->OPTIONS->STEALTH MODE - enable, ale to jak vidět neskrývá vše.

  19. #19 bman

    [18] Miranda se prihlasuje na server a to na port 5190. Pro komunikaci otevira listening porty. Ty lze v nastaveni Mirandy definovat na urcitej rozsah a pak je povolit (na TPF) jen pro mirandu.
    Pokud zakazes tyto porty, tak bude komunikace fungovat pres server, ale nebude fungovat napr. prenos souboru, protoze se navazuje prime spojeni a k tomu potrebujes tyto listening porty. V mirande jde myslim i nastavit omezeni, aby se pouzivala prima komunikace jen pro lidi z kontakt listu.

  20. #20 Pavel

    [19] Jo jo, díky, už jsem si s tím v noci pohrával a vyřešil. Ale fakt díky za radu. 😄 😛 😉