Firewall bez adresu IP Jak to zrobić Janusz Janiszewski Janusz.Janiszewski@nask.pl
Agenda Wstęp Jak to działa? FreeBSD Kiedy stosować? Wady i zalety Inne rozwiązania Pytania?
Typy firewalli Filtry pakietów oparte o adres źródłowy i docelowy oraz port pojedynczego pakietu decydują, czy dana przesyłka może zostać przesłana dalej, czy też nie Circuit Level przyporządkowują pakiety do istniejących połączeń TCP i dzięki temu są wstanie kontrolować cały ruch, obecnie większość firewalli tego typu potrafi kontrolować stan połączeń również dla protokołu UDP Aplication Level serwery proxy pośredniczące w połączeniach pomiędzy klientem i serwerem
Typy firewalli (cd.) Transparent(Ethernet Bridge + Packet Filter) nie posiada adresu IP ale potrafi filtrować pakiety ze względu na ten protokół z uwzględnieniem zapamiętywania stanu połączeń
Jak to działa? Ethernet Frame queued soft interupt scheduled Ethernet driver ether_input() All frames bridge_input() Broadcast and local frames Broadcast and Non-local frames Protokoły warstwy 3 Schemat przepływu ramek ethenetowych poprzez bridge
Jak to działa?(cd.) Bridgeintr() Ethernet Ethernet Record source MAC address Drop same segment frames Queued on interface 1 Queued on interface 2 Multicast handling Filtrowanie w warstwie 2 (output( output) Filtrowanie w warstwie 2 (output( output) Non-IP handling Filtrowanie w warstwie 3 (IP) Filtrowanie w warstwie 2 (input( input) Schemat przepływu ramek wewnątrz bridgeintr()
FreeBSD Konfiguracja i kompilacja jądra systemu Uruchomienie bridge a Przygotowanie zasad filtracji pakietów Umieszczenie w strukturze sieci
Schemat układu Serwer 192.168.1.254 Router 80/tcp 22/tcp 53/udp Bridge/Firewall PC1 PC2 PC3 xl0 fxp0 Firewall 192.168.1.0/24 PC1 192.168.1.251 PC2 192.168.1.252 PC3 192.168.1.253
FreeBSD (cd.) Konfiguracja i kompilacja jądra systemu Uruchomienie bridge a Przygotowanie zasad filtracji pakietów Umieszczenie w strukturze sieci
FreeBSD(cd.) Konfiguracja i kompilacja jądra systemu(cd.) # cd /usr/src/sys/i386/conf # cp GENERIC BRIDGE # vi BRIDGE W pliku konfiguracyjnym musimy dopisać: options BRIDGE options IPFIREWALL options IPFIREWALL_VERBOSE options IPFIREWALL_FORWARD
FreeBSD(cd.) Konfiguracja i kompilacja jądra systemu(cd.) # /usr/sbin/config BRIDGE # cd../../compile/bridge # make depend # make # make install reboot
FreeBSD (cd.) Konfiguracja i kompilacja jądra systemu Uruchomienie bridge a Przygotowanie zasad filtracji pakietów Umieszczenie w strukturze sieci
FreeBSD (cd.) Uruchomienie bridge a W pliku konfiguracyjnym /etc/sysctl.conf musimy dopisać poniższe linie by po każdym restarcie systemu operacyjnego wszystko działało poprawnie. net.link.ether.bridge=1 net.link.ether.bridge_ipfw=1 net.link.ether.bridge_cfg=fxp0,xl0 Po zapamiętaniu zmian zrestartujemy system: #reboot
FreeBSD (cd.) Uruchomienie bridge a (cd.) net.link.ether.bridge_cfg: x -> lfxp0,xl0 net.link.ether.bridge_ipfw:0 -> 1 net.link.ether.bripdge: 0 -> 1
FreeBSD (cd.) Konfiguracja i kompilacja jądra systemu Uruchomienie bridge a Przygotowanie zasad filtracji pakietów Umieszczenie w strukturze sieci
Schemat układu Serwer 192.168.1.254 Router 80/tcp 22/tcp 53/udp Bridge/Firewall PC1 PC2 PC3 xl0 fxp0 Firewall 192.168.1.0/24 PC1 192.168.1.251 PC2 192.168.1.252 PC3 192.168.1.253
FreeBSD (cd.) Przygotowanie zasad filtracji pakietów W pliku /etc/rc.firewall wpisujemy poniżej zdefiniowane zasady filtracji pakietów # Pozwalamy serwerowi na dowolne przesyłanie pakietów ipfw add pass tcp from 192.168.1.254 to any in via xl0 setup keep-state ipfw add pass udp from 192.168.1.254 to any in via xl0 keep-state ipfw add pass ip from 192.168.1.254 to any in via xl0 # Zasady dotyczące TCP # Dostęp do serwera poprzez SSH dla stacji PC1 ipfw add pass tcp from 192.168.1.251 to 192.168.1.254 22 in via fxp0 setup keep-state # Dostęp do serwera WWW dla stacji PC1,PC2,PC3 ipfw add pass tcp from 192.168.1.251 to 192.168.1.254 80 in via fxp0 setup keep-state # Dostęp do serwera SMTP dla wszystkich ipfw add pass tcp from any to 192.168.1.254 25 in via fxp0 setup keep-state # Przepuszczamy pakiety kierowanych do serwisu IDENT ipfw add pass tcp from any to any 113 in via fxp0 setup keep-state
FreeBSD (cd.) Przygotowanie zasad filtracji pakietów(cd.) # Zasady dotyczące UDP # Pozwalamy na ruch do serwera DNS ipfw add pass udp from any to 192.168.1.254 53 in via fxp0 keep-state # Zasady dotyczące ICMP # Przepuszczamy 'ping' ipfw add pass icmp from any to any icmptypes 8 keep-state # Przepuszczamy błędy generowane przez traceroute ipfw add pass icmp from any to any icmptypes 3 ipfw add pass icmp from any to any icmptypes 11 # Wszystkie inne pakiety są odrzucane ipfw add drop log all from any to any
FreeBSD (cd.) Konfiguracja dostępu administracyjnego Do tego celu możemy użyć lokalnie podłączonego monitora i klawiatury lub użyć portu szeregowego jako konsoli. W zależności od tego co kto lubi. Jak skonfigurować port szeregowy by mógł być użyty jako konsola we FreeBSD?
FreeBSD (cd.) Konfiguracja dostępu administracyjnego (cd.) W pliku /etc/ttys musimy zmienić jeden wpis z off na on w lini: ttyd0 "/usr/libexec/getty std.9600" dialup off secure Po zmianie wpis będzie wyglądał tak: ttyd0 "/usr/libexec/getty std.9600" dialup on secure
FreeBSD (cd.) Konfiguracja dostępu administracyjnego (cd.) W katalogu / musimy stworzyć plik o nazwie boot.config w którym umieszczamy wpis: -Dh Wpis ten pozwala na posiadanie konsoli zarówno na porcie szeregowym jak i poprzez podłączenie lokalne monitora i normalnej klawiatury do bridge/firewalla. W instalacji testowej konsola była poprowadzona poprzez okablowanie strukturalne na odległość 90,5 m przy prędkości 9600 bps
Kiedy stosować? Gdy potrzebujemy w sposób przezroczysty połączyć dwa lub więcej segmenty ethernetu W przypadku konieczności separacji stacji/serwisów w tym samym segmencie ethenetu Wszędzie tam gdzie ilość posiadanych adresów IP nie pozwala na stosowanie podziału na podsieci Obawiamy się bezpośredniego zdalnego ataku na firewall W przypadku dużego obciążenia ethernetu Ukrycia topologii sieci (nawet przed użytkownikami sieci wewnętrznej) Do celów testowych lub jako rozwiązanie przejściowe
Zalety i wady Zalety Przezroczysty dla warstwy IP Łatwa integracja z istniejącą infrastrukturą sieciową Niezastąpione rozwiązanie w przypadku niemożności zastosowania podziału na podsieci Element paranoidalny Wady Brak możliwości stosowania zewnętrznych systemów uwierzytelnienia Brak serwisów typu PROXY Brak NAT
Inne rozwiązania NetScreen http://www.netscreen.com/products/fw_vpn_systems.html Lucent Technologies http://www.lucent.com/products/subcategory/0,,ctid+2017-stid+10080-locl+1,00.html CheckPoint (SecurePlatform lub Linux) http://support.checkpoint.com/kb/docs/public/firewall1/ng/pdf/bridge-mode.pdf FreeBSD http://www.freebsd.org/doc/en_us.iso8859-1/articles/filtering-bridges/filtering-bridges-ipfirewall.html OpenBSD http://www.thought.net/jason/bridgepaper/bridgepaper.html Linux http://www.linux.org/docs/ldp/howto/mini/bridge+firewall+dsl.html
Dziękuję Pytania? Janusz Janiszewski Janusz.Janiszewski@nask.pl