NASK
NASK
Firewall bez adresu IP
Firewall bez adresu IP
Jak to zrobić
Janusz Janiszewski
Janusz.Janiszewski@nask.pl
NASK
NASK
Agenda
Agenda
• Wstęp
• Jak to działa?
• Implementacja w oparciu o FreeBSD
• Kiedy stosować?
• Wady i zalety
• Inne rozwiązania
• Pytania?
NASK
NASK
Typy firewalli
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
NASK
NASK
Typy firewalli (cd.)
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ń
NASK
NASK
Jak to działa?
Jak to działa?
Ethernet
Ethernet
Ethernet
Ethernet
driver
driver
ether_input
ether_input
()
()
Protokoły warstwy 3
Protokoły warstwy 3
bridge_input()
All frames
Broadcast and
Non-local frames
Frame
Frame
queued
queued
soft
soft
interupt
interupt
scheduled
scheduled
Broadcast and
local frames
Schemat przepływu ramek ethenetowych poprzez bridge
NASK
NASK
Jak to działa?(cd.)
Jak to działa?(cd.)
Bridgeintr
Bridgeintr
()
()
Schemat przepływu ramek wewnątrz
Schemat przepływu ramek wewnątrz
bridgeintr
bridgeintr
()
()
Record
Record
source
source
MAC
MAC
address
address
Drop same segment
Drop same segment
frames
frames
Multicast
Multicast
handling
handling
Non
Non
-
-
IP
IP
handling
handling
Filtrowanie w
Filtrowanie w
warstwie 3 (IP)
warstwie 3 (IP)
Filtrowanie w
Filtrowanie w
warstwie 2 (
warstwie 2 (
input
input
)
)
Filtrowanie w
Filtrowanie w
warstwie 2 (
warstwie 2 (
output
output
)
)
Filtrowanie w
Filtrowanie w
warstwie 2 (
warstwie 2 (
output
output
)
)
Queued
Queued
on
on
interface
interface
1
1
Queued
Queued
on
on
interface
interface
2
2
Ethernet
Ethernet
Ethernet
Ethernet
NASK
NASK
Implementacja w oparciu o
FreeBSD
Implementacja w oparciu o
FreeBSD
• Konfiguracja i kompilacja jądra
systemu
• Uruchomienie bridge’a
• Przygotowanie zasad filtracji
pakietów
• Umieszczenie w strukturze sieci
NASK
NASK
Schemat układu
Schemat układu
Router
Router
Bridge
Bridge
/
/
Firewall
Firewall
Firewall
Firewall
fxp0
fxp0
xl0
xl0
Serwer
Serwer
192.168.1.254
192.168.1.254
80/
80/
tcp
tcp
22/
22/
tcp
tcp
53/
53/
udp
udp
192.168.1.0/24
192.168.1.0/24
PC1
PC1
PC2
PC2
PC3
PC3
PC1
PC1
–
–
192.168.1.251
192.168.1.251
PC2
PC2
–
–
192.168.1.252
192.168.1.252
PC3
PC3
–
–
192.168.1.253
192.168.1.253
NASK
NASK
Implementacja w oparciu o
FreeBSD (cd.)
Implementacja w oparciu o
FreeBSD (cd.)
• Konfiguracja i kompilacja jądra systemu
• Uruchomienie bridge’a
• Przygotowanie zasad filtracji pakietów
• Umieszczenie w strukturze sieci
NASK
NASK
Implementacja w oparciu o
FreeBSD(cd.)
Implementacja w oparciu o
FreeBSD(cd.)
•
Konfiguracja i kompilacja jądra systemu(cd.)
W pliku konfiguracyjnym musimy dopisać:
options BRIDGE
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_FORWARD
# cd /usr/src/sys/i386/conf
# cp GENERIC BRIDGE
# vi BRIDGE
NASK
NASK
Implementacja w oparciu o
FreeBSD(cd.)
Implementacja w oparciu o
FreeBSD(cd.)
•
Konfiguracja i kompilacja jądra systemu(cd.)
# /usr/sbin/config BRIDGE
# cd ../../compile/BRIDGE
# make depend
# make
# make install
reboot
NASK
NASK
Implementacja w oparciu o
FreeBSD (cd.)
Implementacja w oparciu o
FreeBSD (cd.)
• Konfiguracja i kompilacja jądra systemu
• Uruchomienie bridge’a
• Przygotowanie zasad filtracji pakietów
• Umieszczenie w strukturze sieci
NASK
NASK
Implementacja w oparciu o
FreeBSD (cd.)
Implementacja w oparciu o
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
.
Po zapamiętaniu zmian zrestartujemy system:
net.link.ether.bridge=1
net.link.ether.bridge_ipfw=1
net.link.ether.bridge_cfg=fxp0,xl0
#reboot
NASK
NASK
Implementacja w oparciu o
FreeBSD (cd.)
Implementacja w oparciu o
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
NASK
NASK
Implementacja w oparciu o
FreeBSD (cd.)
Implementacja w oparciu o
FreeBSD (cd.)
• Konfiguracja i kompilacja jądra
systemu
• Uruchomienie bridge’a
• Przygotowanie zasad filtracji
pakietów
• Umieszczenie w strukturze sieci
NASK
NASK
Schemat układu
Schemat układu
Router
Router
Bridge
Bridge
/
/
Firewall
Firewall
Firewall
Firewall
fxp0
fxp0
xl0
xl0
Serwer
Serwer
192.168.1.254
192.168.1.254
80/
80/
tcp
tcp
22/
22/
tcp
tcp
53/
53/
udp
udp
192.168.1.0/24
192.168.1.0/24
PC1
PC1
PC2
PC2
PC3
PC3
PC1
PC1
–
–
192.168.1.251
192.168.1.251
PC2
PC2
–
–
192.168.1.252
192.168.1.252
PC3
PC3
–
–
192.168.1.253
192.168.1.253
NASK
NASK
Implementacja w oparciu o
FreeBSD (cd.)
Implementacja w oparciu o
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
NASK
NASK
Implementacja w oparciu o
FreeBSD (cd.)
Implementacja w oparciu o
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
NASK
NASK
Implementacja w oparciu o
FreeBSD (cd.)
Implementacja w oparciu o
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?
NASK
NASK
Implementacja w oparciu o
FreeBSD (cd.)
Implementacja w oparciu o
FreeBSD (cd.)
• Konfiguracja dostępu administracyjnego (cd.)
W pliku /etc/ttys musimy zmienić jeden wpis z off na on w lini:
Po zmianie wpis będzie wyglądał tak:
ttyd0 "/usr/libexec/getty std.9600" dialup off secure
ttyd0 "/usr/libexec/getty std.9600" dialup on secure
NASK
NASK
Implementacja w oparciu o
FreeBSD (cd.)
Implementacja w oparciu o
FreeBSD (cd.)
• Konfiguracja dostępu administracyjnego (cd.)
W katalogu „/ „ musimy stworzyć plik o nazwie boot.config w którym
umieszczamy wpis:
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
-Dh
NASK
NASK
Kiedy stosować?
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
NASK
NASK
Zalety i wady
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
NASK
NASK
Inne rozwiązania
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
NASK
NASK
Dziękuję
Dziękuję
Pytania?
Janusz Janiszewski
Janusz.Janiszewski@nask.pl