Router configuratie met IPFilter
In deze howto gaan we een router op zetten met ipfilter en ipnat‚ dit is het alternatief voor ipfirewall. Welke je kiest is afhankelijk van je keuze’s‚ echter mijn voorkeur gaat uit naar ipfilter‚ daarom ook deze howto.
Het eerste deel is gekoppierd uit
deze howto
==========================
Ik ga ervanuit dat je ssh gebruikt mocht je nog met telnet werken zoek dan eerst
een howto om over te stappen naar ssh.
Firewall in de kernel bakken.
Shell:
| # cp /usr/local/sys/i386/conf/GENERIC /usr/local/sys/i386/conf/FIREWALL |
Vervolgens edit je de file /usr/local/sys/i386/conf/FIREWALL
en zet je overal waar GENERIC staat FIREWALL neer.
vervolgens zoek je dit blok op en zorg je dat er het volgende komt te staan.
Uiteraard moet je zelf de goede cpu instellen door de rest af te #-en
Shell:
| machine i386 #cpu I386_CPU #cpu I486_CPU cpu I586_CPU #cpu I686_CPU ident FIREWALL maxusers 32 options MATH_EMULATE #Support for x87 emulation |
LET OP dat je een # zet voor de laatste regel !!(in bovestaand stuk)
Anders kun je straks niet meer bij de co-located bak!
vervolgens compileer je de kernel.
Shell:
| # cd /usr/src # make clean # make buildkernel KERNCONF=FIREWALL |
controleer nu of het bestand /etc/ipf.rules bestaat? deze mag NIET bestaan als
er een staat verwijder deze dan (zorg wel voor een backup)
Shell:
| # cd /usr/src/ # make installkernel KERNCONF=FIREWALL |
==========================
We gaan hier verder met het configureren (dit gedeelte is door mij geschreven)
Edit je /etc/rc.conf en zorg dat hij er ongeveer zo uit komt te zien
File:
| ifconfig_ed0=”inet EXTERNE_IP netmask NETMASK” ifconfig_lnc0=”inet 192.168.1.1 netmask 255.255.255.0″ defaultrouter=”212.204.160.1″ ipfilter_enable=”NO” ipnat_enable=”YES” gateway_enable=”YES” |
In dit geval is ed0 mijn netwerk kaart die aan internet hangt en lnc0 degene die mijn interne netwerk verbind met de router. Het belangrijkste is dat je een verbinding hebt met het internet‚ dus de ifconfig instellingen zullen voor iedereen anders zijn.
Nu gaan we de daadwerkelijke router instellen‚ open daarvoor /etc/ipnat.rules en zorg dat hij er zo uit komt te zien:
File:
| map ed0 192.168.1.0/24 -> 0/32 proxy port ftp ftp/tcp map ed0 192.168.1.0/24 -> 0/32 portmap tcp/udp auto map ed0 192.168.1.0/24 -> 0/32 |
ed0 is dus mijn externe netwek kaart‚ mijn intere netwerk is 192.168.1 9 (je kunt hier dus ook ziets hebben als 10.0.0) De eerste regel zorgt ervoor dat ftp ook goed werkt en door “0/32″ zorg je ervoor dat de juiste ip wordt gerbuikt (als je bv een dynamisch ip hebt)
Wil je nu een bepaalde poort doorsturen voeg dan de volgende regels toe aan je /etc/ipnat.rules
File:
| rdr ed0 0/32 port 6800-6833 -> 192.168.1.2 port 6800 tcp/udp rdr ed0 0/32 port 81 -> 192.168.1.2 port 80 tcp/udp |
De eerste regel zorgt ervoor dat poorten 6800 t/m 6833 worden doorgestuurd naar 192.168.1.2‚ deze poorten stel je dan bv in bij ICQ en je hebt filetransfer werkend. De tweede regel stuurt poort 81 door naar 192.168.1.2 op poort 80. Je kan dit bv gebruiken om op 192.168.1.2 een webserver te laten draaien en wil dan van buiten je netwerk verbinding maken met de webserver op 192.168.1.2 dan kun je het volgende adres gebruiken http://EXTERNE_IP:81
Reboot nu de machine en kijk of het allemaal werkt
Shell:
| reboot |
Als dit werkt kunnen we het wat veiliger maken door een firewall toe te voegen. De werkwijze die ik normaal aan houdt is: eerst alles dicht en dan wat gaatjes in de firewall maken.
Ik gebruik de volgende firewall rules (lees ze nog wel even door en kijk of ze ook voor jouw goed zijn):
Deze zet je in: /etc/ipf.rules
File:
################################################################# # Outside Interface ################################################################# # loopback pakets left unmolested pass in quick on lo0 all pass out quick on lo0 all #—————————————————————- # Allow out all TCP‚ UDP‚ and ICMP traffic & keep state on it # so that it’s allowed back in. #—————————————————————- pass out quick on ed0 proto tcp from any to any keep state pass out quick on ed0 proto udp from any to any keep state pass out quick on ed0 proto icmp from any to any keep state block out quick on ed0 all #—————————————————————- # drop any IP packets with options set in them # This host only runs sshd‚ no other services # Apache Webserver # To receive traceroute replies # Outbound traffic from our own IPs is allowed # Block and log all remaining traffic coming into the firewall ################################################################# #—————————————————————- |
Let er wel op‚ als je poorten door wilt sturen en je gebruikt een firewall dat je die poorten ook open zet in je firewall en niet alleen in je ipnat configuratie.
We kunnen nu de firewall testen door het volgende commando te geven:
Shell:
| ipf -Fa -f /etc/ipf.rules && sleep 180 && ipf -Fa |
Je kunt nu 3 minuten testen of alles nog werkt.
Werkt dit goed dan kun je in je /etc/rc.conf de volgende waarde veranderen in:
File:
| ipfilter_enable=”YES” |
Bij de volgende reboot wordt alles dan automatisch geladen.
Wat handige commando’s indien je de firewall of ipnat rules wijzigt (hoef je niet te rebooten)
Shell:
| ipf -Fa -f /etc/ipf.rules |
Deze regel herlaad je firewall regels
Shell:
| ipnat -CF -f /etc/ipnat.rules |
Deze regel herlaad je ipnat rules.
Indien je hiervoor ipfirewall draaide zorg er dan voor dat die niet meer draait.
Veel su6

September 3rd, 2002
Hmm,
Als ik mijn adsl modem probeer te pingen (ping 10.0.0.138) krijg ik permission denied.
Ik ga maar eens mij removable HD vervangen en een clean Install van FreeBSD doen zodat ik als alle eerste met NAT en routen kan gaan stoeien.
September 4th, 2002
Zonder een firewall???
Dus eerst kijken of nat werkt zonder firewall en dan pas die firewall activeren.
September 4th, 2002
Even wat opmerkingen.
Eerst het bestand ipnat.rules.
Hierin zie ik niet de portmap entry staan. Deze zorgt ervoor de als er meerdere hosts dezelfde source port willen bereiken, dat deze eerst vertaald wordt. (zie ipf docs voor info).
Het is aan te raden om het volgende toe te voegen aan je ipnat.rules: (belangrijk: zet dit tussen de proxy en de laatste nat rule)
> map ed0 192.168.1.0/24 -> 0/32 portmap tcp/udp auto
Aan het ipf.rules bestand dat hierboven staat kan ook wel het 1 en ander aan veranderd worden.
Je kunt deze rules veel meer tweaken, maak je rules in de volgende volgorde (allemaal als ‘quick’):
-> pass lo0 regels bovenaan, je loopback device hoort niet gehinderd te worden door rules die toch niet opgaan.
->je internal LAN device rules _zonder_ keep state, dit is nutteloos en overhead voor in je LAN.
-> blocken van gereserveerde ip’s op external if.
-> blocken van packets met opties.
-> toelaten van services (zoals webserver) met keep state en evt. vlaggen.
-> als je een caching dns server draait -> UDP port 53 open zetten met keep state
-> toelaten van verkeer naar buiten met keep state
-> default block
Zo hoort een goede firewall eruit te zien.
Voor mijn firewall, check deze: http://panoramix.homeip.net/~peter/conf/ipf.conf
Voor de rest is het wel ok
September 4th, 2002
[quote][2P] kwam met een aantal aanpassingen[/quote]
Deze heb ik er aan toegevoegt thx voor het commentaar.
Default block niet gedaan omdat het wel eens verkeerd kan gaan.
September 4th, 2002
[quote]
Posted by Inferno on 04 Sep 2002 00:41:13
Zonder een firewall???
Dus eerst kijken of nat werkt zonder firewall en dan pas die firewall activeren.
[/quote]
Ja zonder Firewall.
Ik vraag mij af waar die permission denied vandaan komt.
Ik heb geen chmod -x op de0 of de1 gedaan :+ :+ (GEINTJE)
September 4th, 2002
Ook geen default block aan staan?
September 4th, 2002
Hmm,
Moet het effe vanavond nakijken.
Het was gisteren al laat en ja ik ben weer gefrusteerd naar bed gegaan.
September 4th, 2002
Inferno,
Wat bedoel je eigenlijk met default blok?
September 5th, 2002
#options IPFILTER_DEFAULT_BLOCK #block by default
deze regel in kernel config
September 5th, 2002
Ah,
Ik snap, ik zat in de ipnat.rules te kijken. :+
September 8th, 2002
He he,
Hij doet het, (ik word op dit moment door freebsd geroute :+ ) !
Het lag aan mijn DNS, de DNS van de provider ingesteld en het werkte gelijk.
Toch raar want ik heb BIND draaien net zoals onder Freesco en daar werkt het wel (ik bedoel dus dat ik met Freesco mijn eigen DNS draai en dat het daar goed gaat.)
Nou ja het werkt, ik kan weer mijn slaap gaan inhallen.
February 4th, 2005
hoe activeert je firewall?