Administrace Unixu (Nastavení firewallu) 1. Packet filter (pf) Veškeré operace se provádějí pomocí příkazu pfctl. # # # # #
pfctl pfctl pfctl pfctl pfctl
-e ; enable -d ; disable -f /etc/pf.conf ; load file -nf /etc/pfc.conf ; parse file but don't load it. -s<modifikator> ; show statistic
Ve FreeBSD je potřeba packet filter povolit volbou pf_enable=“YES“ v rc.conf. Tři základní funkce: –
Filtrování paketů.
–
NAT – přepis zdrojové IP adresy.
–
RDR – přepis cílové IP adresy.
Další funkce: –
Prioritizace
–
Queueing
–
Load ballancing
2. Filtrování paketů action [direction] [log] [quick] [on interface] [af] [proto protocol] [from src_addr [port src_port]] [to dst_addr [port dst_port]] [flags tcp_flags] [state]
Příklad: pass in on vic0 proto tcp from 192.168.56.0/24 to (vic0) port smtp
Na co je třeba dát pozor: •
Kontrolují se všechny pravidla a poslední vyhrává. pass in on vic0 proto tcp from 192.168.56.0/24 to (vic0) port smtp block in on vic0
•
Klíčové slovo quick ukončí vyhodnocování pravidel. pass in quick on vic0 proto tcp from 192.168.56.0/24 to (vic0) port .. block in on vic0
Co nám usnadní práci: •
Seznamy pass in proto tcp from { 192.168.56.0/24, 192.168.24.0/24 } to ...
Se automaticky rozvine na: pass in proto tcp from 192.168.56.0/24,to ... pass in proto tcp from 192.168.24.0/24 to ...
•
Makra (definice proměnných) mynet = “192.168.24.0/24“ pass in on vic0 proto tcp from $mynet to (vic0) port smtp
•
Tabulky table <mynets> { 192.168.56.0/24 , ! 192.168.56.60 } pass in on vic0 proto tcp from <mynets> to (vic0) port smtp
Možnost manipulace za běhu: # pfctl -t
-T [ip]
Jak vhodně navrhnout pravidla firewallu: •
Firewall na routeru ochraňuje počítače, které jsou za ním. Pravidlo minimálního přístupu: ◦ Přístup dovnitř chráněné sítě by měl být omezen jen na ty služby, které opravdu chce poskytovat mimo naši síť. ◦ Přístup ven z chráněné sítě by měl být omezen pouze na služby, které chceme využívat ze vzdálených sítí.
Přístup do Internetu (libovolné IP): •
Počítače v lokální sítí mají přístup na webové stránky (tcp port 80 a 443).
•
Mail server má přístup na SMTP (tcp port 25) – odesílání pošty.
•
Rekurzivní DNS má přístup na DNS (tcp a udp port 53) – řešení rekurzivních dotazů.
Přístup do DMZ: •
Všichni mají přístup na mail server na port SMTP (tcp port 25) – příjem pošty.
•
Všichni mají přístup na DNS server na DNS (tcp a udp port 53) – dotazy na vaši doménu.
•
Na DNS serveru běží také YP master, PC v lokální sítí by tam měli mít přístup.
Přístup do lokální sítě: •
YP master má přístup na YP slave (yppush).
Přístup na VPC R: •
VPC v lokální sítí a DMZ mají přístup na rekurzivní DNS server – pokládání DNS dotazů.
Úkoly: 1. Na VPC R nakonfigurujte firewall, tak aby splňoval výše uvedené požadavky. Nechte také povolený přístup na vaše VPC protokolem SSH (tcp port 22). Všechno ostatní musí být zakázané. 2. Rozmyslete jaké pravidla by měla být ve firewallu na VPC B, tak aby splňovala princip minimálního přístupu, a nakonfigurujte je. Doporučení: •
Používejte makra, pomůže vám to lépe se orientovat v pravidlech. PRIMARY_MX=192.168.56.3 EXT_IF=vic0 … pass in on $EXT_IF proto tcp from $PRIMARY_MX to any port 25
•
Pravidla přiřazujte k jednotlivým rozhraními. Pokud paket prochází více rozhraními je potřeba definovat pravidla na obou (in, out) – není ale potřeba dělat obě pravidla složitá. EXT_IF=vic0 INT_IF=vic1 .. pass out on $EXT_IF block in on $INT_IF pass in on $INT_IF tcp from any to any port 80
•
Pokud se paket nepasuje na žádné pravidlo tak se provede akce pass. Toto chování je lepší změnit na block tím, že uvedeme první pravidlo, které blokuje veškerou komunikaci.
•
Průchod pravidly lze logovat. Je potřeba mít klíčové slovo log v pravidlu a spuštěný pflogd. Logy pak najdete ve /var/log/pflog (binární) nebo online přes rozhraní pflog0. # První (default) pravidlo block in log on $EXT_IF … # tcpdump -n -e -ttt -i pflog0 'action block' # tcpdump -n -e -ttt -r /var/log/pflog 'action block'
3. Přepis zdrojové adresy (NAT) Důvodem pro vznik NATu byl nedostatek IP adres. Umožňuje schovat více počítačů za jednou IP adresu. Neumožňuje navázat spojení dovnitř NATované sítě.
# Základní varianta pass out on vic0 from 192.168.1.0/24 to any nat-to 192.168.17.254 # Lepší varianta pass out on vic0 from vic1:network to any nat-to (vic0) # Nebo match out on vic0 from vic1:network to any nat-to (vic0) pass on vic0 from vic1:network to any
Úkol: Nakonfigurujte na VPC R NAT, tak aby komunikace z lokální sítě do Internetu byla NATovaná. Komunikace do DMZ zůstane beze změn.
4. Přepis cílové adresy (RDR) Přesměrování trafiku z jedné IP na jinou. Ve spojení s NATem umožňuje přístup na „zanatované“ počítače. # http komunikace půjde na jiný stroj. pass in on vic0 proto tcp from any to 192.168.17.254 port 80 rdr-to 192.168.1.20
Úkol: Vytvořte tabulku obsahující IP adresy klientů v lokální sítí, kteří nemají přístup do Internetu. Na VPC M nakonfigurujte web server (httpd_flags=““), každý přístup těchto klientů na nějakou webovou stránku budou přesměrovány na tento web server.
5. Monitorování průtoku přes firewall Statistiky pro jednotlivé rozhraní: 1. SNMP (Simple Network Management Protocol) – umožňuje získat nastavení a aktuální stav zařízení v sítí. OpenBSD (od v 4.4) má v základní instalace snmp agenta, který zpřístupňuje základní údaje. Pro pokročilejší SNMP je nutné nainstalovat balík net-snmp. Pro účely statistik rozhraní postačí základní verze. •
Nastavit snmp agenta.
•
Čtení údajů pomocí programu snmpwalk.
2. MRTG (Multi Router Traffic Grapher) – pomocí protokolu SNMP sbírá statistiky síťového provozu a vytváří grafy. •
Nainstalovat balík mrtg.
•
Vytvořit konfigurační soubor. Lze použít utilitu mrtgcfg, připadně
•
Zajisti spouštění mrtg z crona (každých 5 minut).
•
Mrtg vyváří HTML stránky, které zpřístupňuje webový server.
Úkol: Na VPC R nastavte SNMP agenta a na VPC F rozjeďte MRTG a webový server.
Poslední změna: 17.12.2011