| Netfilter/IPTables Mini-HOEDOE |
|
auteur: martijn, geplaatst: 2001-11-03, laatste update: 2001-11-03, populariteit:     16900+ |
|
Ik heb hier een Linux-bakje met RedHat 62 draaien, met daarop een vuurmuurtje. Deze PC gebruik ik als servertje met daarachter een aantal Windows machines. (Natuurlijk heb ik liever een Windows machine met daarop WinGate ofzo maar dat kan ik niet betalen ;)) Deze Linux-bak moet dus al het verkeer van deze windows-bakken door sturen (IP masquerading) verder heb ik een FTP-server (ProFTPD) en deze moet vanaf overal benaderd kunnen worden.
Voor de firewall gebruik ik netfilter, dit is onderdeel van kernel 2.4. iptables is een utility om netfilter te configureren. Mijn vuurmuur moet het volgende verkeer doorlaten:
- Ping requests en replies. (van m'n linuxbak naar internet en omgekeerd)
- FTP verkeer (ook twee kanten op)
- Samba (alleen voor m'n LAN)
- DNS verkeer. (twee kanten op)
- HTTP (alleen naar buiten toe, ik heb Apache nog niet draaien)
Kernel aanpassen
Voordat je je firewall op kunt zetten dient netfilter aan de kernel toegevoegd te worden.
In de kernel (onder Networking options) even "Network packet filtering" aanzetten. Bij "Netfilter Configuration" heb ik alles (behalve ipchains en ipfwadm) aangezet. Ik heb alles als module gecompileerd maar het schijnt veiliger te zijn om netfilter in je kernel zelf te bakken.
Oké, nu even je uptime om zeep helpen zodat netfilter geladen wordt....
IPTables
Zoals gezegd kun je met IPTables netfilter instellen, iptables is een command-line utility.
Met de optie -P kan de policy ingesteld worden voor een bepaalde chain. De meest gebruikte chains zijn:
- INPUT
- OUTPUT
- FORWARD
De INPUT-chain regelt het verkeer dat als doel onze server heeft.
De OUTPUT-chain regelt het verkeer dat onze server verlaat en de FORWARD-chain bepaald welk verkeer er door gestuurd wordt. (Nodig voor o.a. ip masquerading)
De policy kan zijn:
- ACCEPT
- DROP
- REJECT
Bij ACCEPT wordt het verkeer door gelaten, bij DROP wordt het verkeer zonder melding aan de andere PC gestopt met REJECT wordt het verkeer gestopt met melding aan de andere PC.
Naast de policies kun je nog per chain extra regels toevoegen (poorten open zetten).
Voorbeeld:
iptables -P INPUT DROP
iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT
De bovenstaande regels zorgen ervoor dat al het inkomende verkeer gestopt wordt (-P INPUT DROP) en dat het TCP-verkeer dat over port 20 en 21 komt toegestaan wordt (FTP).
Op deze manier kun je heel je firewall configureren.
iptables is te downloaden op netfilter.samba.org.
iptables uitpakken, dan "./configure && make all install" runnen en iptables zou geinstalleerd moeten zijn in /sbin.
Nu alleen nog even een scriptje maken.
#!/bin/sh
# /etc/init.d/rc.firewall
# Even alle huidige regels weggooien. (De policies blijven gehandhaafd)
/sbin/iptables -F
# Bakje helemaal dicht gooien.
/sbin/iptables -P INPUT DROP
/sbin/iptables -P OUTPUT DROP
/sbin/iptables -P FORWARD DROP
# Zo nu is je bak helemaal dicht! Mooi, nooit meer gehacked, alleen niet echt handig lijkt me zo.
# IP Forwarding & masquerading
# De volgende regel laat al het verkeer van m'n Windows-bakjes door, dus dan blijven de trojans gelukkig werken.
#/sbin/iptables -P FORWARD ACCEPT
# Deze twee regels zorgen ervoor dat de Windows-bakken kunnen surfen.
# HTTP-forwarding
/sbin/iptables -A FORWARD -p tcp --sport 80 -j ACCEPT
/sbin/iptables -A FORWARD -p tcp --dport 80 -j ACCEPT
# DNS-forwarding
/sbin/iptables -A FORWARD -p tcp --sport 53 -j ACCEPT
/sbin/iptables -A FORWARD -p tcp --dport 53 -j ACCEPT
/sbin/iptables -A FORWARD -p udp --sport 53 -j ACCEPT
/sbin/iptables -A FORWARD -p udp --dport 53 -j ACCEPT
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
# eth0 is mijn internetnetwerkkaartje (zo, punten voor scrable weer binnen :))
# Al het verkeer van het lokale network wordt nu geforward. En iedereen achter het servertje zou
# toegang moeten hebben tot het netwerk aan de andere kant van m'n LAN.
# ping requests en replies toestaan.
/sbin/iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
/sbin/iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
/sbin/iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
/sbin/iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
# DNS lookups... niet nodig als je alle ip's uit je hoofd kent
/sbin/iptables -A INPUT -p tcp --sport 53 -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
/sbin/iptables -A INPUT -p udp --sport 53 -j ACCEPT
/sbin/iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
# Daytime... (CRON-job: /usr/bin/rdate -s time.u.washington.edu)
/sbin/iptables -A INPUT -p tcp --sport 37 -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --dport 37 -j ACCEPT
/sbin/iptables -A INPUT -p udp --sport 37 -j ACCEPT
/sbin/iptables -A OUTPUT -p udp --dport 37 -j ACCEPT
# HTTP outgoing.. (Lynx rules, heb natuurlijk geen X op m'n servertje)
/sbin/iptables -A INPUT -p tcp --sport 80 -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
# FTP (in en out)
/sbin/iptables -A INPUT -p tcp --sport 20:21 -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --dport 20:21 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --sport 20:21 -j ACCEPT
# Nu nog even Samba, alleen voor ons eigen LAN natuurlijk...
/sbin/iptables -A INPUT -p tcp -d 192.168.0.0/24 -dport 137:139 -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp -s 192.168.0.0/24 -sport 137:139 -j ACCEPT
/sbin/iptables -A INPUT -p udp -d 192.168.0.0/24 -dport 137:139 -j ACCEPT
/sbin/iptables -A OUTPUT -p udp -s 192.168.0.0/24 -sport 137:139 -j ACCEPT
:wq
rc.firewall ergens in je opstartscripten linken, even opstart (alleen het scriptje natuurlijk) en alles zou moeten werken.
Zelf heb ik nog DHCP open staan (port 67 en 68 udp) omdat @Home met dit protocol werkt. Maar dat is niet echt nodig, ze bellen vanzelf wel hè Maurice!
Oh, nog even over Samba. In het configuratiebestand van samba kun je aangeven naar welke ethernet kaart Samba moet luisteren, daar zou je natuurlijk eth0 op kunnen geven maar dat heb ik maar niet gedaan, eth1
vond ik meer gepast.
Links:
http://netfilter.samba.org
http://www.linuxfromscratch.org (Zie de firewall hint)
Tags Linux  How-to`s  
 Copyright © 1999-2008 Maurice de Bijl Dit artikel is gepubliceerd op 2001-11-03
|
Reacties op dit artikel Er zijn nog geen reacties geplaatst op dit artikel. Je kunt de eerste zijn.
Reactie toevoegen Een reactie toevoegen is simpel en registratie is niet nodig!Je IP-adres wordt gelogd, maar niet gepubliceerd, alle reacties hebben een E-mail bevestiging nodig en worden stuk voor stuk gemodereerd. Misbruik wordt niet getolereerd. Naderhand wijzigen van je reactie is niet mogelijk
|  |
 |