Iptables for dummies

From www.ReeltoReel.nl Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Netfilter

Elke Linux distributie gebruikt Netfilter (in de kernel) voor firewalling. De beheertool daarvoor is 'iptables', via de commandline.

Hoe werkt het? Er zijn drie soorten verkeer: INPUT, OUTPUT en FORWARD. Dit worden ook wel 'chains' genoemd.

  • INPUT is alles op je interface binnenkomt
  • OUTPUT is alles wat je interface verlaat
  • FORWARD is als de computer als router is geconfigureerd, dus met meerdere netwerkkaarten

Om te beginnen, moeten we de firewall service stoppen. Op openSUSE is dat

rcSuSEfirewall2 stop

controle

Vervolgens beginnen we met een schone lei. Verwijder alle firewall regels

iptables -F

Controleer dit met

iptables -L -v

dichtzetten

Hierna staat je firewall uit en is leeg, dus we gaan hem snel dichtzetten. We gebruiken hiervoor 'policies'.

iptables -p INPUT DROP
iptables -p OUTPUT DROP
iptables -p FORWARD DROP

-p betekent hier policy, INPUT is de chain waarop hij werkt, en de 'target' is 'drop'.

targets

Er zijn de volgende targets:

  • DROP: alle pakketjes worden gedropt, er is geen terugmelding
  • REJECT: het pakketje wordt verworpen, er gaat wel een melding terug
  • ACCEPT: het pakketje wordt geaccepteerd
  • LOG: er wordt een melding in syslog geschreven over het binnenkomende pakketje

Nu is de computer potdicht, en er is dus niet mee te werken met communicatie naar buiten. We gaan hem zo inrichten dat er communicatie naar buiten mogelijk is.

loopback goedzetten

Maar eerst moet er de loopback interface (lo) goed geconfigureerd worden. Hoewel niet strikt noodzakelijk, maar dit zorgt ervoor dat een hoop zaken goed verlopen.

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

-A betekent 'append', aan het eind. De volgorde van de regels is belangrijk! De eerste 'hit' wordt uitgevoerd en er wordt daarna niet meer verder gekeken.

-i is de interface

-j (jump) naar welke target

Hierna kan er gepinged worden naar de loopbackinterface:

PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.034 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.019 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.027 ms

uitgaand verkeer toestaan

We gaan nu alle uitgaande verkeer toestaan.

iptables -A OUTPUT -o eth0 -j ACCEPT

Dit zorgt voor uitgaande pakketjes, maar antwoorden hierop die binnenkomen, kunnen nog steeds niet de computer bereiken.

iptables -A INPUT -m state - state=ESTABLISHED,RELATED -j ACCEPT

creert een stateful filter.