background image

NASK 

NASK 

Firewall bez adresu IP

Firewall bez adresu IP

Jak to zrobić

Janusz Janiszewski

Janusz.Janiszewski@nask.pl

background image

NASK 

NASK 

Agenda

Agenda

• Wstęp
• Jak to działa?
• Implementacja w oparciu o FreeBSD
• Kiedy stosować?
• Wady i zalety
• Inne rozwiązania
• Pytania?

background image

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

background image

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ń

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

NASK 

NASK 

Implementacja w oparciu o 

FreeBSD (cd.)

Implementacja w oparciu o 

FreeBSD (cd.)

• Przygotowanie zasad filtracji pakietó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

background image

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

background image

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?

background image

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

background image

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

background image

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

background image

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

background image

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

background image

NASK 

NASK 

Dziękuję

Dziękuję

Pytania?

Janusz Janiszewski

Janusz.Janiszewski@nask.pl