#!/bin/sh
#04/04/1999
#voorbeeld rc.firewall script voor de nieuwere 2.1/2.2 kernels die ipchains
#gebruiken welke gebruik gedefineerde chains maakt voor elk interface.
#Er zijn firewall regels voor spoofing protectie welke onnodig zijn sinds
#de nieuwere kernels spoofing protectie aan kunnen hebben staan. Je kunt
#denken dat dit dan een beetje overbodig is.
#Zend vragen of commentaar naar acj@home.com.
#---------------------------------------------------------------------
#Variabelen
#---------------------------------------------------------------------
#lokaal ethernet interface
localip=
localif=eth0
#statisch ethernet interface
staticip=
staticif=eth1
#loopback interface
loopback=lo
PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin"
#---------------------------------------------------------------------
#Flush ingebouwde input, output, and forward ipchains; stel de standaard politiek
#in. Goed politiek is om alle pakketjes te wijgeren, vooral bij het instellen
#van chains
#---------------------------------------------------------------------
#stel inkomende firewall politiek default op 'niet toegestaan'
ipchains -P input DENY
#flush inkomende firewall politiek
ipchains -F input
#---------------------------------------------------------------------
#stel uitgaande firewall politiek default op 'niet toegestaan'
ipchains -P output DENY
#flush uitgaande firewall politiek
ipchains -F output
#---------------------------------------------------------------------
#stel forwarding firewall politiek default op 'niet toegestaan'
ipchains -P forward DENY
#flush forwarding firewall politiek
ipchains -F forward
#---------------------------------------------------------------------
#flush alle politieken -overbodig voor algemene politiek, maar flusht ook
#gebruik gedifineerde politieken
#ipchains -F
#Verwijder alle gebruiker gedefineerde politieken - je kan er voor kiezen om
#dit niet te doen
#ipchains -X
#---------------------------------------------------------------------
#Inkomende Firewall Politiek
#---------------------------------------------------------------------
#maak een nieuwe input chain voor static ethernet interface
ipchains -N $staticif"-i"
#flush all regels in chain (sanity flush)
ipchains -F $staticif"-i"
#blok inkomende SYN pakketjes op alle poorten op staticif en log
#dit kan een beetje grof zijn, maar het kan handig zijn in de toekomst
#ipchains -A $staticif"-i" -j DENY -p tcp -y -i $staticif -s 0/0 \
#-d $staticip : -l
#remote interface, claimend te komen van lokale machine (IP spoofing) niet toestaan en loggen
ipchains -A $staticif"-i" -j DENY -i $staticif -s $localip/16 -d 0/0 -l
#remote interface, elke bron, naar staticip adres is goed
ipchains -A $staticif"-i" -j ACCEPT -i $staticif -s 0/0 -d $staticip/32
#alle inkomende pakketjes worden afgewezen en gelogd
ipchains -A $staticif"-i" -j DENY -s 0/0 -d 0/0 -l
#---------------------------------------------------------------------
#maak een nieuwe input chain voor lokaal ethernet interface
ipchains -N $localif"-i"
#flush alle regels in chain (sanity flush)
ipchains -F $localif"-i"
#lokaal interface, lokale machines, gaand naar overal is goed
ipchains -A $localif"-i" -j ACCEPT -i $localif -s $localip/24 -d 0/0
#alle andere inkomende pakketjes worden afgewezen en gelogd
ipchains -A $localif"-i" -j DENY -s 0/0 -d 0/0 -l
#---------------------------------------------------------------------
#maak een nieuwe input chain voor loopback interface
ipchains -N $loopback"-i"
#flush alle regels in chain (sanity flush)
ipchains -F $loopback"-i"
#loopback interface is goed
ipchains -A $loopback"-i" -j ACCEPT -i $loopback -s 0/0 -d 0/0
#alle andere inkomende pakketjes worden afgewezen en gelogd
ipchains -A $loopback"-i" -j DENY -s 0/0 -d 0/0 -l
#--------------------------------------------------------------------------
#Forwarding firewall politiek
#--------------------------------------------------------------------------
#maak een nieuwe forward chain voor static ethernet interface
ipchains -N $staticif"-f"
#flush alle rules in chain (sanity flush)
ipchains -F $staticif"-f"
#masquerade van localnet op static interface naar overal
ipchains -A $staticif"-f" -j MASQ -i $staticif -s $localip/24 -d 0/0
#alle ander forwarding is verboden en wordt gelogd
ipchains -A $staticif"-f" -j DENY -s 0/0 -d 0/0 -l
#---------------------------------------------------------------------
#maak een nieuwe forward chain voor local ethernet interface
ipchains -N $localif"-f"
#flush alle regels in chain (sanity flush)
ipchains -F $localif"-f"
#alle ander forwarding is verboden en wordt gelogd
ipchains -A $localif"-f" -j DENY -s 0/0 -d 0/0 -l
#---------------------------------------------------------------------
#maak een nieuwe forward chain voor loopback interface
ipchains -N $loopback"-f"
#flush alle regels in chain (sanity flush)
ipchains -F $loopback"-f"
#alle ander forwarding is verboden en wordt gelogd
ipchains -A $loopback"-f" -j DENY -s 0/0 -d 0/0 -l
#---------------------------------------------------------------------
#Uitgaande Firewall Politiek
#---------------------------------------------------------------------
#maak een nieuwe output chain voor static ethernet interface
ipchains -N $staticif"-o"
#flush alle regels in chain (sanity flush)
ipchains -F $staticif"-o"
#uitgaand naar localnet op remote interface(stuffed routing) niet toegestaan & log
ipchains -A $staticif"-o" -j DENY -i $staticif -s 0/0 -d $localip/24 -l
#outgaand van local net op remote interface, stuffed masquerading, 'niet toestaan'
ipchains -A $staticif"-o" -j DENY -i $staticif -s $localip/24 -d 0/0 -l
#alle andere dingen op remote interface zijn goed
ipchains -A $staticif"-o" -j ACCEPT -i $staticif -s $staticip/32 -d 0/0
#alle andere uitgaande pakketjes zijn verboden en worden gelogd
ipchains -A $staticif"-o" -j DENY -s 0/0 -d 0/0 -l
#---------------------------------------------------------------------
#maak een nieuwe output chain voor local ethernet interface
ipchains -N $localif"-o"
#flush alle regels in chain (sanity flush)
ipchains -F $localif"-o"
#lokaal interface, elke bron gaand naar local net is toegestaan
ipchains -A $localif"-o" -j ACCEPT -i $localif -s 0/0 -d $localip/24
#alle andere uitgaande pakketjes zijn verboden en worden gelogd
ipchains -A $localif"-o" -j DENY -s 0/0 -d 0/0 -l
#---------------------------------------------------------------------
#maak een nieuwe output chain voor loopback interface
ipchains -N $loopback"-o"
#flush alle regels in chain (sanity flush)
ipchains -F $loopback"-o"
#loopback interface is toegestaan
ipchains -A $loopback"-o" -j ACCEPT -i $loopback -s 0/0 -d 0/0
#alle andere uitgaande pakketjes zijn verboden en worden gelogd
ipchains -A $loopback"-o" -j DENY -s 0/0 -d 0/0 -l
#--------------------------------------------------------------------------
#weet zeker dat forwarding in de kernel aan staat
#--------------------------------------------------------------------------
/bin/echo 1 > /proc/sys/net/ipv4/ip_forward
#--------------------------------------------------------------------------
#Voeg pointers toe aan ingebouwde chains om de gebruiker gedifineerde chains
#te activeren verander de volgorde om te optimaliseren voor een interface
#--------------------------------------------------------------------------
#voeg local interface input chain toe
ipchains -A input -i $localif -j $localif"-i"
#voeg static interface input chain toe
ipchains -A input -i $staticif -j $staticif"-i"
#voeg loopback interface input chain toe
ipchains -A input -i $loopback -j $loopback"-i"
#-------------------------------------------------------------------------
#voeg local interface output chain toe
ipchains -A output -i $localif -j $localif"-o"
#voeg static interface output chain toe
ipchains -A output -i $staticif -j $staticif"-o"
#voeg loopback interface output chain toe
ipchains -A output -i $loopback -j $loopback"-o"
#-------------------------------------------------------------------------
#voeg local interface forward chain toe
ipchains -A forward -i $localif -j $localif"-f"
#voeg static interface forward chain toe
ipchains -A forward -i $staticif -j $staticif"-f"
#voeg loopback interface forward chain toe
ipchains -A forward -i $loopback -j $loopback"-f"
#---------------------------------------------------------------------
#Super Paranoide check --- ook als staat de default politiek op niet toestaan
#blok alle pakketjes op elk interface
#---------------------------------------------------------------------
#alle andere inkomende pakketjes zijn niet toegestaan en worden gelogd
ipchains -A input -j DENY -s 0/0 -d 0/0 -l
#alle andere uitgaande pakketjes zijn niet toegestaan en worden gelogd
ipchains -A output -j DENY -s 0/0 -d 0/0 -l
#alle andere forwarding is niet toegestaan en worden gelogd
ipchains -A forward -j DENY -s 0/0 -d 0/0 -l
exit 0