Firewall

advertisement
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
Download