Biztonság a Windows 7 tűzfalával
kategória: Biztonság — forrás: Microsoft TechNet — dátum: 2009-09-03 — értékelés: 5.00 —
Akik eddig idegenkedtek a Windows tűzfalától, ebben a cikkben teljesebb képet kaphatnak a beállítási lehetőségekről, és remélem el tudom oszlatni sokak kételyét a Windows beépített tűzfaláról.
Tűzfalakról röviden
A tűzfalakat két típusba sorolhatjuk. Az első az úgynevezett network firewalls - hálózati tűzfalak -, amelyek a belső és külső hálózat határán védik a belső hálózatot. Ezek lehetnek hardveres, szoftveres vagy a kettő kombinációjából létrehozott tűzfalak. Az egyik ilyen hálózati tűzfal a Microsoft Internet Security and Acceleration (ISA) Server, újabban Forefront TMG.
A másik típusú tűzfal a host based vagyis a kliensoldali. Mivel a hálózati tűzfalak nem tudják ellenőrizni a kliensek által generált forgalmat a belső hálózaton (hiszen ezen forgalom nem is jut el az ISA Serverig), ezért kell valamilyen kliensoldali megoldás is. A beépített tűzfal ezen segít nekünk, hiszen megakadályozza az illetéktelen hozzáférést (és természetesen a támadásokat) a gépünkhöz a hálózaton keresztül.
Windows tűzfal régen és most
A felhasználók többsége két dolgot telepit először: víruskeresőt és tűzfalat. Míg a vírukeresők inkább a felhasználókat saját maguktól védik, addig a tűzfal a teljes gépet felhasználóstól, szoftverestől (megfelelően konfigurálva). Megállítja a támadást még mielőtt esélye lenne elérni a rendszerünket. A Windows XP tűzfala a bejövő forgalmat szűrte, de nem volt lehetőségünk a kimenő forgalom szabályozására. Trójai és egyéb kártékony programok bármilyen adatot ki tudtak küldeni az internetre. Mostanáig.
Foglaljuk össze, hogy egy mai korszerű tűzfalnak milyen kihívásoknak kell megfelelnie:
- Mobileszközök, illetve a nem helyhez kötött dolgozók többféle hálózathoz csatlakoznak akár napjában többször is, így nehéz megakadályozni az illetéktelen hozzáférést.
- Vírus és különböző férgek támadása az internet felől (rosszabb esetben a belső hálózatból).
- Egy vállalatnál az adatok mennyisége előbb-utóbb elér egy olyan kritikus mennyiséget, amit már védeni kell az illetéktelen hozzáférésektől, miközben meg kell tartani a könnyű és egyszerű hozzáférhetőséget a jogosultak számára.
Sokan még Windows XP-t használnak, ezért elsőnek először pár szembetűnő különbséget nézzünk meg a két tűzfal között. Az első ilyen különbség - mint fentebb említettem -, hogy képesek vagyunk a kimenő forgalmat is szűrni, valamint hogy a tűzfalat és az IPSecet integrálták. Az IPSec széles körben elterjedt protokoll (ráadásul része az Ipv6 protokollnak), és szintén a kommunikáció szűrésére használják. A különbség a tűzfalban található. Máshogy határozunk meg egy szabályt és máshogy egy IPSec kommunikációt, ráadásul így elkerülhető a két védelmi mechanizmus közti ütközés. A tűzfal és az IPSec is ugyanabból a konzolból érhető el, ezzel könnyítve a konfigurálást. Nem kell aggódni, hogy a beállítani kívánt szűrés vajon IPSec vagy tűzfalszabály. Lényegében egy nézetben lehet látni minden olyan, a hálózatról jövő támadási felületet, ami segít ezek minimalizálásában.
A Windows 7 követi a Vistában megismert tűzfalkonzolt, kiegészítve egy-egy új funkcióval, gombbal, részletesebb beállítási lehetőségekkel. Ezen kívül egy sor új algoritmus támogatása került bele (AES, SHA 256, SHA 384*), valamint a tartományi környezetben igencsak jól használható Network Access Protection (NAP).
A cikkben megnézzük mind a két tűzfalkonzolt, amelyek a Windows Firewall és a Windows Firewall with Advanced Security névre hallgatnak. Nagyobb hangsúlyt fog kapni az Advanced Security rész, hiszen itt tudjuk finom hangolni a hálózati forgalmunkat. A beállítások távolról is kezelhetők, a Windows Server 2008 támogatja a csoportházirendekkel való kliensoldali tűzfalmódosításokat.
A tűzfal
Természetesen a Windows 7 tűzfala egy kliensalapú applikáció, amely beállításoktól függően blokkolja/engedélyezi a bejövő, illetve a kimenő forgalmat a gépünkön. A tipikus felhasználói beállítások továbbra is elérhetők a vezérlőpulton keresztül, az Advanced configuration pedig egy beépülő MMC modult kapott. Az MMC integrációnak köszönhetően természetesen ezzel a beépülő modullal nemcsak a helyi, hanem a távoli gépek tűzfalszabályait is képesek vagyunk kezelni (a csoportházirendeket nem is említve).
A tűzfal egyik fontos része a réteges biztonsági modell, amely képes kétirányú hálózati forgalom szűrésére, vagyis minden ki és befele jövő illetéktelen kommunikációt blokkol. A Network Location Awareness (NLA) biztosítja számunkra, hogy amint másik hálózatba kerül a gépünk (pl. munkahelyről haza), a tűzfal alkalmazkodjon az új hálózathoz, és az adott hálózatban beállított szabályokat lépteti életbe.
Nézzük meg a legfontosabb tulajdonságokat:
- Megakadályozza, hogy valamilyen kártékony kód a Windows szolgáltatásait használja a fájlrendszer-, illetve a registry-módosításokhoz vagy valamilyen hálózati tevékenységhez.
- Alapértelmezetten blokkolja (pár kivétellel) az összes bejövő kapcsolatot. Windows XP-ben még csak TCP, UDP és ICMP portokra tudtunk szűrni. Ezt bővítették ki.
- Kimenő és bejövő kapcsolatok szűrése.
- Különböző tűzfalbeállítások a háromféle tűzfal profilhoz.
- IPSec hitelesítéssel lehetőség van megkerülni egy a tűzfal által definiált blokkolási szabályt oly módon, hogy az IPSec kommunikáció a hitelesített számítógépek között megengedett.
- Létrehozhatunk olyan szabályokat, amelyek a kapcsolatokat szűrik gép, felhasználó vagy tartományi csoportok szerint.
- IPv6 támogatás.
- 3rd party tűzfalak szelektíven kikapcsolhatnak funkciókat, valamint új egyéni funkciókat adhatnak meg.
A három hálózati kategória:
- Tartományi: a gép egy Active Directory tartomány tagja. Amint csatlakozunk a tartományhoz, ez a profil lesz aktív.
- Publikus: olyan hálózat, ami közvetlenül kapcsolódik az internetre. Minden nem tartományi hálózat publikus hálózatként jelenik meg.
- Privát: egy hálózatot akkor tekintünk privátnak, ha a felhasználó vagy egy program az adott hálózatot annak jelöli, többségében az otthoni hálózatot jelenti.
Amikor a felhasználó csatlakozik egy nem tartományi hálózathoz, a Windows 7 kéri, hogy a felhasználó azonosítsa a hálózatot publikusként vagy privátként, de privát hálózatot csak rendszergazda tud megadni. A hálózat megadása utána a Windows 7 módosítja a tűzfalszabályokat, és így a hálózatnak megfelelő szabályok jutnak érvényre.
Beállított szabályok kiértékelési sorrendje:
Vagyis:
- Windows Service Hardening: megakadályozza, hogy valamilyen kártékony kód a Windows szolgáltatásait használja a fájlrendszer-, illetve a registry-módosításokhoz vagy valamilyen hálózati tevékenységhez.
- Connection Security rules: IPSec kommunikáció beállítása, ki, mikor és hogyan kommunikálhat IPSecen keresztül.
- Authenticated bypass rules: IPSec hitelesítéssel lehetőség van megkerülni egy a tűzfal által definiált blokkolási szabályt oly módon, hogy az IPSec kommunikáció a hitelesített számítógépek között megengedett.
- Block rules: bizonyos forgalom blokkolása mind kimenő, mind bejövő kapcsolat esetén.
- Allow rules: forgalom engedélyezése.
- Default rules: az itt lévő szabályok akkor hajtódnak verge, ha a kapcsolat egyik szabályban beállított paraméternek sem felel meg.
Csapjunk a lecsóba
Először nézzük meg a tűzfalat a vezérlőpulton keresztül. Látni lehet az otthoni vagy munkahelyi, illetve a privát hálózat alapbeállításait. Erre a szeparációra szükség van, hiszen teljesen más funkciók lehetnek szükségesek egy munkahelyi hálózaton, mint egy publikus net kávézóban (mondjuk a fájl- és nyomtatómegosztás egy támadható felület a rendszerünkön egy publikus hálózatban). Itt ki- és bekapcsolni tudjuk a hálózathoz tartózó tűzfalat, valamint megadhatunk programokat, amiket átengedünk a tűzfalunkon a régi, XP-ben megszokott módon.
Mint már említettem, a Windows 7 Firewall with Advanced Security konfigurálása MMC konzolon keresztül történik, ezért nyissunk egy MMC konzolt, és adjuk hozzá a megfelelő beépülő modult. A másik elérési lehetőség a Control Panel > System and Security > Windows Firewall, majd a panel baloldalán az Advanced settings, illetve a megszokott keresés a "firewall" kulcsszóra.
Az ábrán látható a kezdő képernyő, amely egy áttekintést ad a tűzfalunkról a különböző hálózati profilokban. A tűzfalat a konzol baloldalán lévő menüpontokban tudjuk részletesen konfigurálni (szabályok és monitorozás). A konzol jobboldalán mindig az adott menürészhez tartozó környezetfüggő akciókat látjuk.
Tűzfal tulajdonságok
Minden hálózati profilban ugyanazokat a beállításokat tudjuk megtenni, tehát egy profilon keresztül mutatom be a beállítási lehetőségeket.
A beállítások a következők:
- Firewall state: itt tudjuk be-, illetve kikapcsolni a profil tűzfalát.
- Inbound connections: bejövő kapcsolatok szabályozása.
- Block (default): minden olyan kapcsolatot blokkol, ami nem felel meg egyik aktív szabályunknak sem.
- Block all connections: minden bejövő kapcsolatot tilt, nem vesz figyelembe egyetlen szabályt sem.
- Allow: engedélyezi azon bejövő kapcsolatot, amely nem felel meg egy aktív szabálynak sem.
- Block (default): minden olyan kapcsolatot blokkol, ami nem felel meg egyik aktív szabályunknak sem.
- Outbound connections: kimenő kapcsolatok szabályozása.
- Allow (default): minden kapcsolatot enged kifele, amit nem tudunk ráhúzni egyetlen szabályra sem.
- Block: ennek fordítottja, vagyis mindent tilt, amit nem engedélyeztünk.
- Allow (default): minden kapcsolatot enged kifele, amit nem tudunk ráhúzni egyetlen szabályra sem.
- Protected network: melyik kapcsolatunkat védje a tűzfal.
- Settings: tűzfalbeállítások.
- Firewall settings: a tűzfal értesíti a felhasználót, ha blokkol egy bejövő kapcsolatot.
- Unicast response: itt engedélyezhetjük, hogy a gép válaszoljon-e multicast és broadcast kérésekre.
- Rule merging:
- Apply local firewall rules: ezt a lehetőséget csoportházirenddel való konfigurálásnál válasszuk ki, a rendszergazdák ezen keresztül tudnak szabályokat létrehozni. Ha ez az opció nincs kijelölve, szabályokat ugyanúgy létre tudnak hozni, de a szabályok nem kerülnek alkalmazásra.
- Apply local connection security rules: kapcsolatspecifikus (connection security rule) szabályokat lehet konfigurálni csoportházirenden keresztül. Ha az opció nincs kijelölve, a létrehozott szabályok nem kerülnek alkalmazásra.
- Apply local firewall rules: ezt a lehetőséget csoportházirenddel való konfigurálásnál válasszuk ki, a rendszergazdák ezen keresztül tudnak szabályokat létrehozni. Ha ez az opció nincs kijelölve, szabályokat ugyanúgy létre tudnak hozni, de a szabályok nem kerülnek alkalmazásra.
- Firewall settings: a tűzfal értesíti a felhasználót, ha blokkol egy bejövő kapcsolatot.
- Logging: naplózási beállítások.
- Name: a log fájl neve.
- Size limit: a log fájl mérete alapértelmezetten 4096 KB.
- Log dropped packets: eldobott csomagok naplózása.
- Log successful connections: létrejött kapcsolatok naplózása.
- Name: a log fájl neve.
- IPSec settings fül: IPSec beállítások.
- IPSec defaults: kulcscsere, autentikációs metódusok és adattitkosítási beállítások.
- IPSec exemptions: ICMP forgalom kivétele az IPSec kommunikációból.
- IPSec tunnel authorization: itt tudjuk állítani, hogy melyik felhasználótól, géptől fogadunk el IPSec kapcsolatot (természetesen ehhez szükségünk lesz egy kapcsolat-specifikus szabályra).
- IPSec defaults: kulcscsere, autentikációs metódusok és adattitkosítási beállítások.
Szabályok
A szabályok lehetővé teszik, hogy általunk meghatározott programokat, protokollokat, szolgáltatásokat engedjünk át a tűzfalunkon (pl. RDP). Az alábbi ábrán látjuk a szabályokat. Külön csoportot képeznek a kimenő és bejövő kapcsolatokat szűrő szabályok.
Egy szabály bekapcsolásához válasszuk ki a szabályt, majd a jobboldalon az Enable Rule opcióval kapcsoljuk be. Kikapcsoláshoz természetesen a Disable Rulet kell választani. A szabály megtekintését és módosítását a Properties opció kiválasztásával érhetjük el.
Szabályok (Rules)
Beállítható tulajdonságok:
- General:
- Name: a szabály neve.
- Description: leírás a szabályról, később tudjuk azonosítani, hogy miért hoztuk létre.
- Enabled: a szabály bekapcsolása.
- Action:
- Allow the connections: engedélyez minden olyan kapcsolatot, amely megfelel a szabálynak. Nem ellenőzi, hogy a forgalom IPSec által védett vagy sem.
- Allow only secure connections: ezt választva egy újabb részletes beállítási panelhoz jutunk, itt az IPSec-re vonatkozó beállításokat tehetjük meg, ekkor csak az a kapcsolat lesz engedélyezve, ami megfelel a szabálynak és az IPSec beállításoknak.
- Block: blokkol minden szabályban definiált kommunikációt.
- Allow the connections: engedélyez minden olyan kapcsolatot, amely megfelel a szabálynak. Nem ellenőzi, hogy a forgalom IPSec által védett vagy sem.
- Name: a szabály neve.
- Programs and Services:
- Programs: mely program kommunikációjára legyen érvényes a szabály.
- Services: mely szolgáltatásra vonatkozzon a szabály.
- Programs: mely program kommunikációjára legyen érvényes a szabály.
- Users and Computers:
- Authorized Computers / Users: a beállított szabályt a tűzfal csak meghatározott gépektől/felhasználóktól jövő kommunikációkor dolgozza fel. A máshonnan jövő csomagokat eldobja. Ez az opció csak akkor aktív, ha előzőleg beállítottuk az Allow only secure connections opciót.
- Authorized Computers / Users: a beállított szabályt a tűzfal csak meghatározott gépektől/felhasználóktól jövő kommunikációkor dolgozza fel. A máshonnan jövő csomagokat eldobja. Ez az opció csak akkor aktív, ha előzőleg beállítottuk az Allow only secure connections opciót.
- Protocols and Ports:
- Protocol Type: a protokoll típusa (TCP, UDP, IGMP, GRE stb.). Emlékezzünk a jó öreg XP tűzfalra, ott ugye csak TCP és UDP között választhattunk.
- Protocol Number: ha nem előre definiált listából választunk, akkor itt a protokoll számát kell megadnunk (nem összetévesztendő a port számmal).
- Local port: a helyi gép portszáma.
- Remote port: a távoli gép portszáma.
- ICMP Settings: az ICMP beállítása. Ez az opció csak akkor érhető el, ha előzőleg az ICMPv4 vagy az ICMPv6 protokollt választottunk.
- Protocol Type: a protokoll típusa (TCP, UDP, IGMP, GRE stb.). Emlékezzünk a jó öreg XP tűzfalra, ott ugye csak TCP és UDP között választhattunk.
- Scope:
- Local and Remote IP address: helyi és távoli gép IP címek, IP tartomány, amelyekre a szabály vonatkozik.
- Local and Remote IP address: helyi és távoli gép IP címek, IP tartomány, amelyekre a szabály vonatkozik.
- Advanced:
- Profiles: mely profilokra vonatkozzon a szabály.
- Interface types: melyik interfészre vonatkozzon a szabály.
- Edge traversal: lehetővé teszi, hogy a gépünk a hálózaton lévő routertől/tűzfaltól érkező kéretlen csomagokat elfogadjon/blokkoljon.
- Profiles: mely profilokra vonatkozzon a szabály.
Új szabály létrehozása
Az alábbi szabálytípusokat tudjuk létrehozni:
- Program rule: egy, a felhasználó által megadott programra fog vonatkozni a szabály.
- Port rule: TCP vagy UDP portra, port-tartományra vonatkozó szabály.
- Predefined rule: előre beállított szabály, vagyis Windows funkciókhoz tudunk beállítani szabályokat. Tulajdonképpen egy olyan szabályhalmaz, amivel a Windows funkciók hálózati kommunikációját tudjuk szabályozni.
- Custom rule: ha a fenti típusok nem felelnek meg számunkra, itt tudunk teljesen testreszabott szabályokat létrehozni.
Connection Security Rule létrehozása
Itt lehetőségünk van IPSec alapú titkosított kapcsolatot beállítani két gép között. A gépek a kapcsolat kialakítása előtt létrehoznak egy biztonságos csatornát, majd ezek után kezdik meg az adást egymásnak. Ez a kapcsolat mindig kényszerítve van, vagyis az adás előtt mindig felépül a biztonságos csatorna. Válasszuk ki a Connection Security Rules-t, és indítsuk el a New Rule varázslót. Az alábbi kép fogad minket.
Magyarázat:
- Isolation: izolációs szabályokkal a kapcsolatokat tudjuk szabályozni tartományi tagság vagy a gép biztonsági állapota alapján.
- Authentication Exemption: hitelességi mentesség. Olyan kapcsolatokat tudunk definiálni, amelyek nem igényelnek hitelesítést. Az itt megadott IP címről / IP tartományból jövő kapcsolatoknál a kapcsolat felépítése előtt a tűzfal nem kér autentikációt.
- Server to Server: 2 végpont között tudunk biztonságos kapcsolatot létrehozni.
- Tunnel: lehetővé teszi, hogy védett kapcsolatot hozzunk létre 2 végpont között. Tipikus felhasználási területe, ha az interneten keresztül csatlakozunk valamilyen távoli géphez, és szeretnénk titkosított csatornát.
- Custom: egyéni szabályok definiálása.
Tűzfal konfigurálása netsh-val
A netsh parancssori paranccsal a hálózatkezelésen kívül a tűzfalbeállításokat is tudjuk módosítani. Szkriptelve pedig bármilyen beállítást, szabályt be tudunk állítani több gépen egyszerre. Természetesen a beállításokat is megtudjuk jeleníteni vele.
Parancssorban gépeljük be, hogy "netsh".
A prompt ezek után megváltozik: ">netsh".
Itt gépeljük be a következő parancsot: "advfirewall".
Máris tudjuk konfigurálni a tűzfalunkat (rendszergazdaként természetesen).
Nézzünk meg néhány fontosabb parancsot ízelítőként:
- export: a jelenlegi tűzfal konfigurációt tudjuk fájlba exportálni.
- help: elérhető parancsok listája.
- import: tűzfalbeállítások importálása fájlból.
- reset: visszaállítja a gyári beállításokat.
- set: ezzel további konfigurációs beállítást tudunk megejteni.
- set file: a konzol kimenetet egy fájlba tudjuk irányítani.
- set machine: megadhatjuk a gépet, amin a módosításokat hajtjuk végre.
A profilokat külön-külön tudjuk kezelni a set egyéb parancsaival:
- show: a profilok már meglévő beállításait jeleníti meg.
- show allprofiles: az összes profil beállitásai.
- show domainprofile: tartomáyi profil.
- show privateprofile: privát profil.
- show publicprofile: publikus profil.
- show allprofiles: az összes profil beállitásai.
Az advfirewall kontextus tartalmaz további alkontextusokat. Például:
- consec: connection security rule-ok létrehozása.
- firewall: tűzfalszabályok létrehozása.
- monitor: monitorozás beállítása.
Nézzünk egy példát!
Mondjuk ha szeretnénk a 12345-ös portot blokkolni kimenő forgalmunkban, akkor az alábbi paranccsal tudjuk ezt megtenni:
netsh advfirewall firewall add rule name="Block 12345"
dir=out action=block enable=yes profile=public
localIP=any remoteIP=any remoteport=12345 protocol=TCP interfacetype=any
A parancssorral közvetlen a szabály megalkotásakor megadhatjuk az interfészt is, amire a szabályt érvényesíteni szeretnénk. Ebben az a jó, hogy a grafikus felületen a szabályt létre kell hoznunk, majd tulajdonságok és elkattintgatni az interfészek listájához.
Monitoring
A beépített tűzfal tartalmaz egy monitorozó rendszert is. Itt tudjuk monitorozni a tűzfalat, a connection security rule-okat, illetve a security associationöket.
Tűzfal/Firewall
Itt az összes aktív szabályunkat látjuk, valamint egy szabályt kiválasztva megtekinthetjük a beállításait.
Connection Security Rules
Itt természetesen a fentebb beállított kapcsolatfüggő szabályainkat tudjuk megnézni.
Security associations
A felépült és működő IPSec sessionöket (SA - security associations) látjuk ebben a nézetben.
- Main Mode: itt a végpontok IP címei jelennek meg az éppen aktív kapcsolatainknál.
- Quick Mode: végpontok és azok beállításai.
*- Vistán is elérhetőek netsh-n keresztül.
Szerző: Dorner Péter
A fenti cikk a Microsoft TechNet Windows 7 pályázat egyik pályaműve, gratulálunk a szerzőnek!