Laboratorium sieci komputerowych Firewall Wprowadzenie Firewall jest w dzisiejszej dobie jednym z bardziej popularnych terminów w branży sieci komputerowych. Popularność tę można łatwo wytłumaczyć. Bierze się ona z rozbieżności między dzisiejszymi potrzebami rynku, a przewidywaniami które przyświecały projektantom Internetu. W założeniach Internet miał być siecią ukierunkowaną na bezpieczeństwo w skali makroskopowej: odporność na uszkodzenie znacznej liczby węzłów przy zachowaniu jak najbardziej rozległej komunikacji. Odporność na uszkodzenia w skali mikroskopowej, czyli pojedynczego węzła była kwestią drugorzędną. Przemawiała za tym także sama funkcjonalność sieci – miała ona przesyłać informacje, a nie przechowywać je. W miarę wzrostu popularności elektronicznych form obróbki, przesyłania i gromadzenia informacji na znaczeniu zyskały pojedyncze węzły lub niewielkie podsieci. Za ich ochronę odpowiedzialne są firewalle, inaczej mówiąc ściany ogniowe. Często funkcję firewalla pełnią dedykowane urządzenia. Czasami, z różnych względów, pożądane jest zastosowanie w roli firewalla komputera oferującego całkiem spore możliwości zabezpieczania podsieci. Konstruowanie firewalla Na konstrukcję firewalla składają się trzy następujące kolejno procesy: a) projekt funkcjonalny b) implementacja c) testowanie Bez wątpienia każdy z tych procesów ma krytyczne znaczenie, dlatego dbałość o szczegóły pożądana jest w każdym z tych etapów. Projekt funkcjonalny opiera się o wyróżnienie funkcji, jakie będą pełniły poszczególne chronione węzły sieci, jaka topologia będzie je łączyła i jaki poziom bezpieczeństwa będzie wymagany dla poszczególnych obszarów. Na poziomie projektowania można też wziąć pod uwagę możliwości, jakimi dysponują firewalle, które zostaną użyte. Implementacja w przypadku firewalli programowych sprowadza się zwykle do edycji plików konfiguracyjnych. Zawartość plików zależy od rodzaju filtra pakietów. Inaczej wygląda skrypt konfiguracyjny firewalla opartego o Linuxowe iptables realizowane na NetFilter, inaczej o ipchains, a jeszcze inaczej o ipfilter na systemach BSD. Warto nadmienić, że narzędzi do konfiguracji tego samego filtra pakietów może być wiele. Przykładem mogą być graficzne nakładki na NetFilter dostarczane z wieloma nowymi dystrybucjami Linuxa. Testowanie firewalla jest procesem stosunkowo złożonym. Celem jest sprawdzenie reakcji filtra pakietów na specjalnie wygenerowany ruch. Problemem jest przewidzenie wszystkich możliwych scenariuszy ruchu, jakie mogą spowodować ewentualne nadużycia. Technicznie testowanie firewalla także nie jest łatwe, ponieważ często należy wygenerować szereg pakietów o odpowiednich wymaganiach np. dotyczących flag nagłówka IP, czy pofragmentowanych datagramów IP. Ćwiczenie laboratoryjne Zadania są podzielone zależnie od funkcji, jaką pełni dany komputer. Konfiguracja firewalla jest różna dla każdej z funkcji. Konfigurowana podsieć składa się z czterech komputerów oznaczonych router, firewall, DMZ i klient. Komputery połączone są jak na rysunku: Rysunek 1. Grupa komputerów Wymagania (projekt funkcjonalny) przedstawione są poniżej. Router Router powinien realizować NAT dla całej podsieci 172.xx.0.0/16. Cały ruch do tej i z tej sieci powinien być przepuszczany. Ruch trafiający do routera i wychodzący z routera powinien być blokowany (polityki INPUT i OUTPUT). Jedynym wyjątkiem powinna być usługa SSH i komunikaty Ping protokołu ICMP. Do tej usługi należy zrobić przekierowanie portów, aby działając na porcie 22, na obu interfejsach eth była dostępna pod wskazanym, innym numerem portu. Cały ruch w obrębie interfejsu lo powinien być dozwolony Na wskazanych numerach portów powinien być uruchomiony PAT. Konfiguracja PAT powinna udostępniać zadane usługi uruchomione na firewallu, DMZ i kliencie. Klient Klient powinien móc korzystać ze wszystkich usług protokołów TCP, UDP i ICMP – filtrowanie statefull. Zamiast polityki domyślnej DROP łańcucha INPUT powinna być określona odpowiednia reguła REJECT. Ruch do klienta powinien być możliwy tylko dla protokołu ICMP, SSH i TerminalServices. DMZ Konfiguracja DMZ powinna być podobna do klienta, z tą różnicą, że SSH powinno być przekierowywane z innego numeru portu. Dodatkowo na DMZ powinny być otwarte porty dla podanych usług takich jak w3cache, WWW, DNS, SMTP lub ftp. Firewall Firewall powinien realizować NAT dla całej podsieci klienta. Cały ruch z tej sieci powinien być przepuszczany – filtrowanie statefull. Dla interfejsu zewnętrznego ruch trafiający do routera i wychodzący z routera powinien być blokowany. Jedynym wyjątkiem powinna być usługa SSH i komunikaty Ping protokołu ICMP. Do tej usługi należy zrobić przekierowanie portów, aby działając na porcie 22, na obu interfejsach eth była dostępna pod wskazanym, innym numerem portu. Dla interfejsów lo i prowadzącego do klienta cały ruch powinien być dozwolony Dla interfejsu prowadzącego do DMZ powinien być dozwolony tylko ruch na porty otwarte w DMZ Na wskazanych numerach portów na interfejsie zewnętrznym powinien być uruchomiony PAT. Konfiguracja PAT powinna udostępniać zadane usługi uruchomione na DMZ i kliencie. Przebieg ćwiczenia Ćwiczenie składa się z trzech części: konfiguracji routingu, konfiguracji firewalli, testowania konfiguracji i demonstracji wyników prowadzącemu. Konfiguracja routingu Adresy IP powinny być przydzielone zgodnie z podanymi wskazówkami: a. klient 192.168.[grupa].1/24 b. DMZ 172.[16+grupa].1.1/17 c. router do firewalla: 172.[16+grupa].128.254/17 do ksilaba: 10.1.1.[grupa]/8 d. firewall do routera: 172.[16+grupa].128.253/17 do DMZ: 172.[16+grupa].1.254/17 do klienta: 192.168.[grupa].254/24 Przekazywanie pakietów jest włączone domyślnie na wszystkich komputerach. Dodatkowo należy dopisać trasę do sieci zawierającej DMZ na routerze, ponieważ DMZ nie jest umieszczony za NAT. Na tym etapie należy także dopisać na odpowiednich komputerach reguły realizujące NAT. Poprawność konfiguracji można sprawdzić następująco: wszystkie komputery powinny mieć wyjście na świat i widzieć siebie nawzajem. W przypadku klienta łączność będzie możliwa tylko z niego do pozostałych komputerów. Konfiguracja firewalli Wszystkie opcje konfiguracji firewalli powinny być jak najbardziej precyzyjne. Należy posługiwać się parametrami określającymi interfejsy, typy protokołów, adresy docelowe i źródłowe. Każdy komputer powinien być skonfigurowany zgodnie z wcześniej opisanymi funkcjami każdej z maszyn. Testowanie i prezentacja Poprawność konfiguracji wszystkich firewalli powinna być zademonstrowana prowadzącemu z wykorzystaniem programu nc oraz klientów i serwerów poszczególnych usług. Jeżeli demonstrowane jest zablokowanie określonego typu ruchu należy go wygenerować i zademonstrować, że nie jest przepuszczany najlepiej programami nc w roli klienta i serwera. Pomysł na możliwe testy oraz sposób ich prezentowania także podlega ocenie podczas zajęć. Słowniczek Adres publiczny Grupa adresów IPv4 o standardowym przeznaczeniu. Pokrywa całą przestrzeń adresową od 0.0.0.0 do 255.255.255.255 za wyjątkiem adresów o specjalnym przeznaczeniu wyszczególnionych przez IANA (Internet Assigned Numbers Authority) m. in. w RFC 3330: http://www.rfc-editor.org/rfc/rfc3330.txt Adresami o specjalnym przeznaczeniu są np. adresy prywatne, adresy multicast. Adres publiczny jednoznacznie identyfikuje hosta lub sieć w skali globalnej. Adres prywatny Adres IPv4 przeznaczony do adresowania sieci pracujących w oparciu o TCP/IP bez połączenia z Internetem lub podłączonych za pośrednictwem mechanizmu NAT. Własnością adresów prywatnych jest niejednoznaczność, czyli wiele hostów na świecie może mieć jednocześnie taki sam adres prywatny. Dlatego w celu zapewnienia tak adresowanych hostów Firewall Urządzenie służące podniesieniu bezpieczeństwa i ochronie zasobów sieciowych wydzielonej sieci podlegającej ochronie. Pośredniczy w komunikacji hostów należących do chronionej sieci z Internetem. Sieć chroniona Sieć, która znajduje się za urządzeniem pełniącym funkcję firewalla NAT Mechanizm NAT (Network Address Translation) polega na zamianie (translacji) adresów pakietów wysyłanych i odbieranych przez hosty z sieci chronionej. Pozwala: a) ukryć adresy hostów sieci chronionej b) zapewnić dostęp do sieci Internet wielu hostom w przypadku niewystarczającej przyznanej puli adresów publicznych (w przypadku skrajnym – jeden adres publiczny) Rodzajów translacji NAT jest kilka: a) wiele do jednego; wiele adresów prywatnych – jeden publiczny b) wiele do wielu; wiele adresów prywatnych – wiele (zwykle mniej) adresów publicznych c) jeden do jednego Komunikacja hosta A znajdującego się w sieci chronionej z hostem B o adresie publicznym w przypadku NAT przebiega w następujący sposób: a) pakiet z hosta A zostaje wysłany przez firewall1 do hosta B Adres źródłowy jest adresem prywatnym, więc przechodząc przez firewall ulega zmianie na adres publiczny zgodnie z ustalonymi regułami translacji w firewallu. Firewall dodaje do tablicy stanu połączeń wpis zawierający adresy hostów A i B oraz informacje na temat używanego protokołu warstwy transportowej OSI (np. numery portów TCP). Zmianie ulega także port, z którego nawiązywane jest połączenie. Pakiet z publicznym adresem hosta A i zmienionym portem trafia do hosta B, który odpowiedź wysyła właśnie na ten adres. b) pakiet z hosta B trafia do firewalla W Firewallu następuje porównanie parametrów odebranego pakietu z zapisanymi w 1 lub router obsługujący NAT; używane będzie określenie firewall w znaczeniu urządzenia wykonującego NAT tablicy stanu połączeń. Na tej podstawie adres i port docelowy zamieniany jest na adres i port, z którego inicjował połączenie host A PAT Mechanizm PAT (Port Address Translation) polega na zamianie (translacji) adresów pakietów wysyłanych i odbieranych przez hosty z sieci chronionej. Pozwala przekierować ruch przychodzący na wybrany port do innego hosta na inny zakres portów. Komunikacja hosta B znajdującego się w Internecie z firewallem przekierowującym pakiety z portu F do hosta A na port H w sieci chronionej w przypadku PAT przebiega w następujący sposób: a) host B wysyła pakiet na port F do firewalla Adres i port docelowy zostają zamienione na adres hosta A i port H. Do tablicy stanu połączeń w firewallu zostaje dopisana informacja o wykonanej translacji. Firewall wysyła je dalej, zgodnie z tablicą routingu, do hosta A. b) host A odbiera pakiet adresowany do niego na port H i wysyła odpowiedź hostowi B c) w pakiecie przechodzącym przez firewall, zgodnie z tablicą stanu, zostaje zamieniony adres i port źródłowy na adres firewalla i port F Układ grup w laboratorium