Iptables
Fra GNUskole
Linux' egen lavnivå brannmurkode heter iptables. Det er denne som ligger i bunnen av de fleste Linuxbaserte brannmurer og egne brannmurdistibusjoner.
Linux som router
Linux kan settes opp til å rute pakker på følgende måte:
echo "1" > /proc/sys/net/ipv4/ip_forward
Denne kommandoen kan enten legges i et oppstartsskript/brannmurskript, eller man kan gjøre den permanent ved å legge følgende inn i /etc/sysctl.conf
net.ipv4.ip_forward = 1
og deretter reboote.
Etter denne endringen vil Linuxmaskinen sende pakker den mottar på et nettverk videre til et annet:
+------------+
192.168.4.0/24 192.168.4.1 | | 10.1.1.1
------------------------------------+ Linuxboks +----------------------+
eth0 | | eth1 |
+------------+ |
10.1.1.0/24 |
Vi har her en Linuxboks med to nettverkskort; 192.168.4.1 definert på eth0 og 10.1.1.1 på eth1. Hvis maskinen mottar pakker på eth0 som skal til 10.1.1.0/24-nettet vil den sende dem ut eth1 etter at vi slo på ruting. Tilsvarende; hvis den mottar pakker på eth1 som har destinasjon 192.168.4.0/24, vil den rute disse ut eth0. Linuxboksen har blitt en router.
Dette har strengt tatt ikke noe med iptables å gjøre, men de fleste Linuxbrannmurer gjør en variant av ruting kalt adresseoversettelse (NAT), og dette håndteres av iptables.
NAT
NAT (adresseoversettelse) vil si at en maskin mottar pakker og skriver om kilde og/eller måladressene og TCP/UDP-portene til IP-pakkene den håndterer. Dette er nyttig hvis man har et nettverk med private IP-adresser og ønsker at alle disse skal kunne aksessere Internett. Det holder da å ha en maskin som har kommunikasjon med både Internett og det private nettverket, og la denne gjøre NAT på vegne av alle de interne maskinene.
+------------+
192.168.4.0/24 192.168.4.1 | | 1.2.3.4 <-- Offentlig IP
------------------------------------+ Linuxboks +----------------------+
eth0 | | eth1 |
+------------+ |
I dette scenarioet vil alle maskinene på 192.168.4.0/24-nettet kunne aksessere Internett gjennom Linuxboksen hvis den gjør NAT. For maskiner på Internett vil det se ut som all trafikken kommer fra en eneste maskin med IP 1.2.3.4, og de vil sende returtrafikk tilbake til denne. Det er så Linuxboksen som skriver om datapakkene og holder rede på hvilken av de interne klientene som skal ha hvilket svar.
De fleste billige trådløse routere og Linux brannmurdistribusjoner har denne NAT-funksjonen. For å aktivere den på en Linuxmaskin kan man kjøre følgende kommando, kombinert med at man slår på ruting som nevnt ovenfor:
/sbin/iptables -A POSTROUTING -t nat -o eth1 -j MASQUERADE
Her er eth1 det eksterne nettverkskortet, dvs det som står mot Internett.