| Wstęp | |
| Co potrafi firewall? | |
| Określanie priorytetów reguł | |
| Szkodliwość firewalla | |
| Zarządzanie firewallem | |
| Porównanie |
Wśród nowości oferowanych użytkownikom systemu Windows Vista, część budzi pewne obawy, część nadzieje, a część po prostu powątpiewanie. To ostatnie zazwyczaj bierze się stąd, że Microsoft zapowiadając nowe funkcjonalności, często zachowuje się w sposób, który z tajemniczych przyczyn powoduje wątpliwości wśród fachowców. Jedną z takich nie do końca godnych zaufania nowinek jest wbudowany w Windows Vista firewall. Z jednej strony dobrze, że jest. Z drugiej – profesjonalistom trudno uwierzyć, że uda się go zmusić do pracy zgodnej z oczekiwaniami.
Tymczasem sytuacja wcale nie wygląda najgorzej i niniejszy artykuł powinien wszystkich przekonać, że nie warto z góry zakładać, że na pewno się nie uda. Oczywiście istnieją pewne sytuacje, w których firewall nie zaspokoi wszystkich potrzeb administratora, ale wskazane jest, aby wniosek taki został wyciągnięty na podstawie dobrej znajomości rozwiązania a nie uprzedzeń.
Zwiększenie możliwości zarządzania
Ustawienia firewalla w końcu wychodzą poza znany z XP schemat add program/add port/change scope i pozwalają na bardzo precyzyjne ustalenie, jaki ruch ma mieć miejsce, a jaki będzie niedozwolony.
Firewall w Windows Vista zakłada istnienie reguł, w których opisane są:
| • | Aplikacje, których dotyczy reguła |
| • | Kierunek działania reguły |
| • | Protokoły i porty |
| • | Zakres obowiązywania |
| • | Typ interfejsu |
| • | Sposób działania reguły |
| • | Profil |
Aplikacje
Podobnie jak w Windows XP, dla potrzeb firewalla zdefiniować można, jakie aplikacje będą dopuszczane lub blokowane. Poza konkretną ścieżką do aplikacji, podać można również ścieżkę zawierającą zmienne systemowe (np. %ProgramFiles%). Ustawienie takie przydaje się w sytuacji, kiedy konfiguracja definiowana jest centralnie, a następnie powielana na stacje robocze, na których ścieżki do plików mogą się różnić. Ciekawym ustawieniem jest powiązanie reguł nie z aplikacjami, ale z konkretnymi usługami systemowymi. Regułę można stworzyć dla konkretnej usługi (wybierając z listy lub poprzez podanie skróconej nazwy) lub hurtem, dla wszystkich usług równocześnie. Reguła taka dotyczy wtedy tylko usług systemowych, a nie aplikacji.
Kierunek działania
Projektując Windows Vista, ktoś doszedł do słusznego wniosku, że ważne są nie tylko pakiety wchodzące, ale i te wychodzące. W systemowym firewallu jednoznacznie rozdzielono filtry na „inbound” i „outbound”. Wystarczy pierwszy rzut oka na interfejs, żeby zorientować się, że istnieją dwa zestawy reguł dostosowane właśnie do kierunku ruchu.
Wiedząc, że istnieją reguły dla połączeń wychodzących, można przykładowo w prosty sposób zabronić połączeń z usługami pocztowymi innymi, niż zdefiniowane w danym środowisku.
Protokoły i porty
Funkcjonalnością, bez której działanie firewalli trudno sobie wyobrazić, jest ustawianie reguł dla konkretnych usług TCP/IP. Firewall w Windows Vista nie jest tu wyjątkiem. Opcje dostępne w Windows XP zostały tu rozwinięte, dzięki czemu określić można praktycznie dowolne protokoły enkapsulowane w IP. Poza zdefiniowanymi TCP, UDP, ICMP, GRE, IPv6 czy kilkunastoma innymi, dodać można dowolny własny, zgodnie z numerami protokołów (j.ang.). Jeżeli jednak ustawienie to budzi jakąkolwiek wątpliwość, lepiej doczytać o protokołach TCP/IP albo ograniczyć się do wyboru TCP lub UDP… .
W przypadku TCP i UDP określić można port, którego dotyczy dana reguła. Port określa się przez numer (nie ma predefiniowanych list portów), ale pomocą zawsze może służyć lista portów (j.ang.). Porty podaje się w postaci listy rozdzielonej przecinkami i nie istnieje możliwość wpisania ich zakresu. Oznacza to, że nie wolno napisać 5550-5559, tylko trzeba wklepać 5550, 5551, 5552, itd. Z jednej strony może to utrudnić tworzenie reguł, z drugiej jednak pohamuje szalonego administratora, który jedną nieprzemyślaną regułą wpuści do systemu wszystko, co przypomina datagram.
Dla ICMP i ICMPv6 podać można dowolny typ i kod zgodnie z RFC 792 i RFC 2463. W typ przypadku istnieją predefiniowane listy kilkunastu standardowych typów, jednak można je dowolnie rozszerzać o własne charakterystyki pakietów.
Ciekawostką jest, że dostępne podczas tworzenia reguły opcje zmieniają się znacząco w zależności od tego, w jaki sposób otworzy się okno konfiguracji. Przy wybraniu „Port” nie pojawia się możliwość definiowania protokołów. Dlatego dla pełnej funkcjonalności lepiej wybrać opcję „Custom”. W już utworzonych regułach różnica taka nie występuje.
Zakres obowiązywania
Zakres obowiązywania (po ludzku „scope”) określa z kim powinno być nawiązane połączenie, aby dana reguła miała zastosowanie.
Określić można listy adresów na obu końcach połączenia. Adresy mogą zostać podane w kilku formach:
| • | Poprzez adres IP lub dane podsieci. Przykładowo można podać 192.168.0.100 lub 10.1.0.1/24. Dozwolone są też wpisy takie, jak fe80::b17c:546a:1e58:a40d:0/112 ponieważ firewall obsługuje również IPv6. |
| • | Poprzez podanie zakresu. Na przykład 192.168.0.1-192.168.0.50. |
| • | Poprzez podanie predefiniowanego zakresu. Do znanej z Windows XP opcji „lokalna podsieć” dołączyły domyślna brama, serwery DNS, serwery WINS oraz serwery DHCP. |
Fakt, że zdefiniować można zakresy tak po stronie zdalnej, jak i lokalnej pozwala na stworzenie specjalnych reguł w sytuacji, kiedy chroniony firewallem komputer ma kilka adresów IP, do których powinny być stosowane różne reguły.
Typ interfejsu
Typ interfejsu określa czy dana reguła dotyczy każdego połączenia TCP/IP czy tylko tych nawiązanych przez kartę sieciową, sieć bezprzewodową czy przez połączenie typu remote-access. Dzięki temu można stworzyć zestaw reguł, które automatycznie będą się przełączać w zależności od tego, w jaki sposób użytkownik w danej chwili łączy się z usługami. Szczególnie użytecznie jest to w przypadku komputerów przenośnych, które można zmusić na przykład do tego, żeby używając łączności bezprzewodowej nie mogły korzystać z nieszyfrowanego protokołu POP3.
Sposób działania reguł
Na pierwszy rzut oka wydaje się, że reguła może mówić „pozwól” lub „zabroń” danym typom pakietów. W Windows Vista dodano ciekawą opcję pozwalającą na połączenie tylko w przypadku, gdy połączenie jest bezpieczne i używa protokołu IPSec. Sposób zdefiniowania wymagań dla IPSec jest mocno rozbudowany i bardzo ciekawy. Szczegóły wymagają znacznie obszerniejszego wyjaśnienia i dlatego znajdą się w innym, poświęconym właśnie temu zagadnieniu, artykule.
Profil
Dla opanowania działania firewalla w Windows Vista konieczne jest zrozumienie, czym są profile. W systemie zdefiniowano trzy następujące profile:
| • | Domena |
| • | Sieć prywatna |
| • | Sieć publiczna |
Każda reguła firewalla zawiera informację na temat tego, jakiego profilu dotyczy. Takie rozwiązanie pozwala na stworzenie reguł, dzięki którym system automatycznie rozluźni poziom ochrony w sieci firmowej, a w sieci publicznej zmieni się w szczelnie zatkany „bastion host”. Przykładowo, ustawienia reguł w domenie pozwolą na zdalne zarządzanie systemem, podczas gdy w każdej innej sieci połączenia z usługami RDP zostaną zablokowane.
System sam określa, w jakiej sieci się znajduje i choć brzmi to niepokojąco i tajemniczo, daje się prosto wytłumaczyć. Za identyfikację lokalizacji odpowiada serwis NLA czyli Network Location Awareness. Bada on parametry, takie jak aktywny interfejs sieciowy, istnienie w sieci lokalnej uwierzytelnionego kontrolera domeny i innych komputerów czy adres fizyczny MAC domyślnej bramy. Na podstawie tych informacji określany jest unikalny identyfikator sieci i dzięki temu można łatwo określić czy komputer jest w domenie, czy nie. Jeżeli nie jest w domenie – identyfikator może być oznaczony jako związany z siecią prywatną lub nie. W tym ostatnim przypadku lokalizacja taka uznawana jest jako sieć publiczna. Ponieważ uznanie danej sieci za prywatną ma bezpośredni wpływ na bezpieczeństwo komputera, to ustawienie zmienić może tylko lokalny administrator danej maszyny.
W sytuacji, kiedy połączenie zostanie nawiązane przez kilka interfejsów równocześnie, system zachowuje się bardzo ciekawie:
| • | Jeżeli jakikolwiek interfejs jest podłączony do sieci publicznej – obowiązuje zestaw reguł dla sieci publicznej. |
| • | Jeżeli jakikolwiek interfejs jest podłączony do sieci prywatnej – obowiązuje zestaw reguł dla sieci prywatnej. |
| • | Jeżeli wszystkie interfejsy podłączone są do domeny i każdy z nich pozwala na komunikację z kontrolerem domeny – obowiązuje zestaw dla domeny. Jeżeli którykolwiek interfejs ma z tym problem – aplikowany jest zestaw dla sieci publicznej. |
Sposób rozpoznania, do którego profilu przypisana jest dana reguła jest prosty do oczytania we właściwościach poszczególnych wpisów. Utworzenie zestawu reguł obowiązujących dla danego profilu jest możliwe dzięki filtrom dostępnym w GUI.
Wbudowany w Windows Vista firewall posługuje się regułami określającymi, czy przesłanie określonych danych jest dozwolone czy nie. Określenie takie dotyczyć może aplikacji, portów, adresów itd. A co w sytuacji, kiedy dwie reguły są ze sobą sprzeczne? Jeżeli próbując połączyć się przez HTTP z hostem 192.168.0.60, firewall natrafi na reguły „zablokuj połączenia z portem 80”, i równocześnie „zezwól na połączenia z 192.168.0.1/24 dla maszyn uwierzytelnionych przez IPSec”? Takie połączenie będzie przez firewall przepuszczone, warto więc dokładnie wiedzieć dlaczego. Firewall w Windows Vista nie zwraca uwagi na kolejność reguł na liście. Jest to jedno z dwóch podejść do tematu i choć uznać można, że daje mniejszą elastyczność, to w faktycznie spotykanych scenariuszach, zazwyczaj wystarcza. Wadą reguł, w których kolejność ma znaczenie jest to, że wymagają znacznie więcej uwagi od administratora konfigurującego zabezpieczenia. Tak naprawdę, podejście zastosowane w Windows Vista wymaga przestawienia się na specyficzny sposób myślenia i wtedy łatwo dostosowuje się do faktycznych potrzeb.
Określając, którą regułę zastosować do konkretnego połączenia, firewall posługuje się algorytmem, w którym kolejno wykonywane są kroki:
1. | Sprawdzane jest, czy dla danego połączenia istnieje specjalna reguła wbudowana, dotycząca usług sieciowych. Reguły te nie podlegają zarządzaniu przez użytkownika. Jeżeli reguła taka istnieje – stosowana jest zapisana w niej akcja, a pozostałe sprawdzenia nie są wykonywane. |
2. | Sprawdzane jest, czy istnieje reguła dotycząca danego adresu i zawierająca informacje na temat ochrony przez IPSec. Jeżeli taka reguła istnieje – stosowana jest zapisana w niej akcja, a pozostałe sprawdzenia nie są wykonywane. |
3. | Sprawdzane jest, czy istnieje reguła zezwalająca na połączenie dla konkretnego komputera, wymagająca aby komputer był uwierzytelniony. Jeżeli reguła taka istnieje – ruch jest przepuszczany, a pozostałe sprawdzenia nie są wykonywane. |
4. | Sprawdzane jest, czy dla danego połączenia daje się dopasować jakąkolwiek regułę typu „blokuj”. Jeżeli tak – ruch jest blokowany, a pozostałe sprawdzenia nie są wykonywane. |
5. | Sprawdzane jest, czy dla danego połączenia daje się dopasować jakąkolwiek regułę typu „pozwól”. Jeżeli tak – ruch jest przepuszczany, a pozostałe sprawdzenia nie są wykonywane. |
6. | Stosowana jest reguła domyślna dla danego kierunku przepływu danych. |
Jeżeli dany ruch wchodzący jest blokowany, system może wyświetlić (i domyślnie to robi) powiadomienie dla użytkownika. Jeżeli administrator chce zablokować te komunikaty, może bez trudu je wyłączyć w ustawieniach każdego profilu.
Przy pomocy firewalla (tak jak w przypadku każdego dostatecznie zaawansowanego narzędzia) bardzo łatwo narobić sobie kłopotów. Wystarczy stworzyć regułę zabraniającą centralnej aktualizacji reguł i rozpropagować ją w całej domenie. Naprawienie takiej pomyłki wymagać będzie osobistych odwiedzin każdego komputera lub co najmniej nawiązania zdalnej sesji, jeżeli udało się tej funkcjonalności nie zablokować.
Warto wiedzieć, że w firewallu Windows Vista zawsze istnieje niejawna reguła pozwalająca na przesyłanie pakietów związanych z obsługą DHCP. Reguła ta ma sens i trudno wyobrazić sobie środowisko, w którym sieć ma być używana, a firewall powinien blokować pobieranie adresów przez DHCP. Oczywiście istnieją sieci ze specjalnymi wymaganiami dla DHCP, jednak konfiguracja tego protokołu z całą pewnością nie powinna być zarządzana na poziomie reguł firewalla wbudowanego w system.
Ponadto, istnieją wspomniane już wcześniej reguły zabezpieczające serwisy. Reguły te mają najwyższy priorytet, a definiowane i tworzone są przez specjalne API i nie dają się zarządzać standardowymi metodami.
Group policy
Jak przystało na mechanizmy we współczesnych systemach, wszystkie funkcjonalności firewalla mogą być konfigurowane centralnie i propagowane przez Group Policy. Definiować i konfigurować można reguły, profile czy ustawienia IPSec. Tak naprawdę, konfiguracja w Group Policy Editor wykorzystuje ten sam snap-in MMC, który używany jest do konfiguracji lokalnej. Co ważne, konfigurując firewall przez Group Policy można ustawić go tak, że część parametrów nie będzie dostępna z GUI, nawet dla lokalnego administratora.
Ustawienia Group Policy są aplikowane w sytuacji gdy:
| • | Komputer jest uruchamiany |
| • | Użytkownik się loguje |
| • | Co zadany czas |
| • | Przy nawiązaniu połączenia przez VPN (nowe w Windows Vista) |
| • | Komputer jest wznawiany ze stanu uśpienia lub hibernacji (nowe w Windows Vista) |
W efekcie, komputer dostaje najświeższe reguły częściej, zwłaszcza w sytuacji, kiedy zmienia się coś w jego połączeniu z siecią.
Ponieważ efektywna lista reguł zwykle jest dość długa (nawet kilkaset pozycji), pamięciowe łączenie reguł lokalnych z regułami Group Policy może sprawiać administratorowi pewien problem. Aby ułatwić zarządzanie, każdy wpis w regułach zawiera informację o źródle, z którego pochodzi. Pozwala to na szybkie sprawdzenie czy dany wpis skonfigurowany został lokalnie, czy narzucony centralnie. Efektywną listę obowiązujących w danej chwili reguł, wraz z informacjami na temat tego, z jakiego źródła pochodzą i w jakich warunkach obowiązują, obejrzeć można w GUI w gałęzi Monitoring -> Firewall.
netsh
Systemowe polecenie netsh uzupełnione zostało o kontekst advfirewall pozwalający na zarządzanie firewallem. Pełny opis składni wykracza poza zakres niniejszego artykułu, jednak w każdej chwili można go poznać poprzez polecenie „netsh advfirewall help” i analogiczne polecenia dla kontekstów zawartych w advfirewall. Przykładowo - polecenie „netsh advfirewall firewall add rule help” wyświetli składnię stosowaną przy dodawaniu nowych reguł. Składnia polecenia jest logiczna i zazwyczaj nie wymaga zapamiętania w całości. Polecenia stosowane są zgodne z wzorcem:
netsh advfirewall firewall add rule name=<string> dir=in| out action=allow| block| _ bypass [program=<program path>] [service=<service short name>| any] _ [description=<string>] [enable=yes| no (default=yes)] [profile=public| private| domain| _ any[,...]] [localip=any| <IPv4 address>| <IPv6 address>| <subnet>| <range>| <list>] _ [remoteip=any| localsubnet| dns| dhcp| wins| defaultgateway| <IPv4 address>| <IPv6 address>| _ <subnet>| <range>| <list>] [localport=0-65535| RPC| RPC-EPMap| any[,...] _ (default=any)] [remoteport=0-65535| any[,...] (default=any)] [protocol=0-255| icmpv4| icmpv6| _ icmpv4:type,code| icmpv6:type,code| tcp| udp| any (default=any)] [interfacetype=wireless| lan| ras| any] _ [rmtcomputergrp=<SDDL string>] [rmtusrgrp=<SDDL string>] [edge=yes| no (default=no)] _ [security=authenticate| authenc| notrequired (default=notrequired)]
W praktyce, netsh advfirewall wykorzystywane jest w skryptach, szczególnie uruchamianych podczas zautomatyzowanej instalacji systemu.
GUI
Choć podobno GUI jest dla mięczaków, warto wiedzieć, że takowe dla firewalla w Windows Vista istnieje. Aby je uruchomić, najlepiej skorzystać z mechanizmów Windows Search, w Menu Start wpisać „firewall” i wybrać „Windows Firewall with Advanced Security”. Można też uruchomić je wpisując ‘wf.msc’ w linii poleceń. GUI pozbawia administratora czystej formy dostępnej w konsoli, dając za to dużo kolorowych znaczków i pozwalając na skonfigurowanie wszystkiego niemal bez użycia klawiatury.
Jeżeli idea GUI jest komuś bliska, warto zwrócić uwagę, że poza samymi listami reguł, dostępne są liczne „wizardy”, których użycie pozwala na zarządzanie regułami polegające na udzieleniu odpowiedzi na kilka nie zawsze prostych pytań. W przypadku firewalla w Windows Vista, wydaje się, że użycie GUI ma sens zwłaszcza w czasie pierwszych kilkudziesięciu godzin poznawania, jak ten mechanizm tak naprawdę działa.
Jedną z zalet GUI jest prosty wgląd w to, jakie zestawy reguł obowiązują w danej sytuacji. Reguły na liście można kilkoma kliknięciami filtrować wybierając zestaw obowiązujący w danym profilu, reguły aktywne i reguły należące do wybranej grupy reguł.
Zarówno GUI, jak i netsh umożliwiają zapis bieżących ustawień do pliku oraz późniejsze ich wczytanie. Funkcjonalność ta przydaje się w dwóch sytuacjach:
| • | Kiedy administrator ma ochotę poeksperymentować i chciałby mieć pewność, że w razie problemów będzie mógł powrócić do ostatniej działającej konfiguracji. |
| • | Kiedy niewielki rozmiar środowiska uzasadnia konfigurację komputerów przez wgranie w każdym systemów przygotowanego wcześniej na wzorcowej stacji szablonu. |
Plik zapisywany jest w formacie .wfw i niestety nie jest to format łatwo edytowalny przez użytkownika.
Monitorowanie
Podobnie jak w przypadku Windows XP, możliwe jest zapisywanie pliku .log z danymi na temat dopuszczanych i blokowanych połączeń. Dla każdego profilu ustawienia te definiowane są oddzielnie i dla każdego ustawić można:
| • | Nazwę i położenie pliku .log |
| • | Maksymalny rozmiar pliku .log |
| • | Możliwość zapisu w pliku połączeń dozwolonych |
| • | Możliwość zapisu w pliku połączeń blokowanych |
W nagłówku logu pojawia się informacja o wersji 1.5, przez co podejrzewać można, że format pliku jest identyczny jak dla pliku pfirewall.log w systemie Windows XP, dzięki czemu możliwa jest jego analiza przy pomocy tych samych narzędzi i skryptów.
Cytując jedną z popularnych gazet o tematyce „ogólnokomputerowej”, możnaby napisać, że cechą dobrego firewalla jest istnienie suwaka, którym definiuje się pożądany poziom ochrony. W przypadku Windows Vista, suwaka takiego nie ma, jednak mimo wszystko firewall sprawia wrażenie oprogramowania przemyślanego i dającego dostosować się do spotykanych w codziennej pracy administratora warunków. Najbardziej rzuca się w oczy ogromny postęp w stosunku do rozwiązania istniejącego w WindowsXP.
Zestawienie różnic przedstawia poniższa tabela.
| Funkcjonalność | Windows XP | Windows Vista |
Kierunek działania reguł | Połączenia wchodzące | Połączenia wchodzące i wychodzące |
Domyślna akcja | Blokowanie | Definiowalna oddzielnie dla każdego kierunku |
Monitorowane protokoły | TCP, UDP, część ICMP | Dowolne |
Definicje reguł | Ograniczone do aplikacji i typu pakietu | Bardzo rozbudowane |
Akcje reguł | „pozwól” | „pozwól” lub „zabroń” z algorytmem określania priorytetów |
Interfejs użytkownika | Panel sterowania i netsh | Panel sterowania, netsh i dedykowany snap-in MMC |
Zdalne zarządzanie | Brak | Pełne |
Podsumowując, stwierdzić można, że nowe możliwości firewalla pozwalają w praktyce na bardzo swobodne definiowanie sposobu ochrony komputerów wyposażonych w Windows Vista. Praktycznie do każdych realiów dostosować można zestaw reguł, który sprawi, że komputer zachowa pożądaną funkcjonalność, równocześnie nie poddając się tak łatwo robakom, wirusom ani innym łobuzom.
![]() | Grzegorz Tworek (Konsultant ISCG, MVP) |