• Skip to main content
  • Skip to primary sidebar

BSDFreaks.nl

For starters and advanced *BSD users

Tags

brand dmi enschede FreeBSD harddisk Hardware Howto's Howto's move new ports server serverruimte universiteit utwente

Firewall

Router configuratie met IPFilter

September 3, 2002 by Rob

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
[url=http://www.bsdfreaks.nl/index.php/front_howto/53/100]deze howto[/url]

==========================
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[/shell]

Vervolgens edit je de file [i]/usr/local/sys/i386/conf/FIREWALL[/i]
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
options INET #InterNETworking
options IPFILTER #enable the filter in
general
options IPFILTER_LOG #logging enabled
#options IPFILTER_DEFAULT_BLOCK #block by default
[/shell]

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[/shell]

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
[/shell]
==========================
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”[/file]
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[/file]
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[/file]
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[/shell]

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

#—————————————————————-
# Allow bootp traffic in from your ISP’s DHCP server only.
# Replace X.X.X.X/32 with your ISP’s DHCP server address.
#—————————————————————-
#pass in quick on ed0 proto udp from 212.120.66.200/32 to any port = 68 keep state
# block incoming/outgoing unroutable addresses on interface ex1
block in quick on ed0 from 192.168.0.0/16 to any
block in quick on ed0 from 172.16.0.0/12 to any
block in quick on ed0 from 127.0.0.0/8 to any
block in quick on ed0 from 10.0.0.0/8 to any
block in quick on ed0 from 169.254.0.0/16 to any
block in quick on ed0 from 192.0.2.0/24 to any
block in quick on ed0 from 204.152.64.0/23 to any
block in quick on ed0 from 224.0.0.0/3 to any
block in quick on ed0 from 255.255.255.255/32 to any
block in quick on ed0 from 0.0.0.0/32 to any
block out quick on ed0 from any to 192.168.0.0/16
block out quick on ed0 from any to 172.16.0.0/12
block out quick on ed0 from any to 127.0.0.0/8
block out quick on ed0 from any to 10.0.0.0/8
block out quick on ed0 from any to 169.254.0.0/16
block out quick on ed0 from any to 192.0.2.0/24
block out quick on ed0 from any to 204.152.64.0/23
block out quick on ed0 from any to 224.0.0.0/3
block out quick on ed0 from any to 255.255.255.255/32
block out quick on ed0 from any to 0.0.0.0/32

# drop any IP packets with options set in them
block in quick all with ipopts
block in quick all with frag
block in quick all with short
block return-rst in quick proto tcp all flags FUP

# This host only runs sshd‚ no other services
pass in quick on ed0 proto tcp from any to any port = 22 flags S keep state

# Apache Webserver
pass in quick proto tcp from any to any port = 80 flags S keep state

# To receive traceroute replies
pass in quick on ed0 proto icmp from any to any icmp-type timex keep state
pass in quick on ed0 proto icmp from any to any icmp-type echorep

# Outbound traffic from our own IPs is allowed
# Could be made more strict for icmp
pass out quick on ed0 proto tcp/udp from EXTERNIP/32 to any
pass out quick on ed0 proto tcp/udp from EXTERNIP/24 to any
pass out quick on ed0 proto icmp from EXTERNIP/32 to any
pass out quick on ed0 proto icmp from 192.168.1.0/24 to any

# Block and log all remaining traffic coming into the firewall
block return-rst in log quick on ed0 proto tcp from any to any
block return-icmp-as-dest(port-unr) in log quick on ed0 proto udp from any to any
block in log quick on ed0 all

#################################################################
# Inside Interface
#################################################################
#—————————————————————-
# Allow out all TCP‚ UDP‚ and ICMP traffic & keep state
#—————————————————————-
pass out quick on lnc0 proto tcp from any to any
pass out quick on lnc0 proto udp from any to any
pass out quick on lnc0 proto icmp from any to any

#—————————————————————-
# Allow in all TCP‚ UDP‚ and ICMP traffic & keep state
#—————————————————————-
pass in quick on lnc0 proto tcp from any to any
pass in quick on lnc0 proto udp from any to any
pass in quick on lnc0 proto icmp from any to any
[/file]

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[/shell]
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”[/file]
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[/shell]
Deze regel herlaad je firewall regels

[shell]ipnat -CF -f /etc/ipnat.rules[/shell]
Deze regel herlaad je ipnat rules.

Indien je hiervoor ipfirewall draaide zorg er dan voor dat die niet meer draait.

Veel su6

Filed Under: Firewall

[*BSD] Wat voor soort firewall heb je?

April 3, 2002 by Rob

Er zijn drie artikelen verschenen over het hoe en wat met firewall op *NIX sytemen.
Erg handig als je nog niet zo bekend bent met firewalls.
[url=http://www.freebsdforums.org/forums/showthread.php?threadid=694]Link[/url]

Filed Under: Firewall

[FreeBSD] Ipfilter installeren op een Co-located server

December 14, 2001 by Rob

Hoi‚ hierbij een beschrijving van het bouwen van een firewall op een FreeBSD machine (co-located webserver)

In dit geval beschrijf ik een firewall die opgezet is/word op een machine met slechts 1 NIC‚ dit om het simpel te houden. mocht je meerdere nics in je systeem willen hebben dan zul je zelf even verder moeten kijken‚ maar nadat je dit verhaal heb gelezen weet je een aantal handige ipf commando’s om onverschrokken aan het testen te gaan‚ Ook op co-located machines !!!
[pagebreak]
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
[/shell]

Vervolgens edit je de file [i]/usr/local/sys/i386/conf/FIREWALL[/i]
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

#makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbols

options MATH_EMULATE #Support for x87 emulation
options INET #InterNETworking
options IPFILTER #enable the filter in general
options IPFILTER_LOG #logging enabled
#options IPFILTER_DEFAULT_BLOCK #block by default
[/shell]

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
[/shell]

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
[/shell]

[shell]# reboot
[/shell]

nu maar bidden dat de machine weer overeind komt. zoniet‚ sorry je zult naar de machine toe moeten om te booten met de oude kernel (zie andere howto’s)

We gaan er dus even vanuit dat de machine weer goed overeind komt.

zet nu de volgende firewall rules in [b]ipf.rules.test[/b]

[shell]# Outside interface: rl0 -> rl0
# Outside ipno 193.173.210.132
# Netmask 255.255.255.192
#
# Default Policies
block in log all
pass out all

# accept packets comming on the loopback interface
pass in on lo0 all

# deny illegal packets from the outside
block in log quick on rl0 from 0.0.0.0/32 to any
block in log quick on rl0 from 255.255.255.255/32 to any
block in log quick on rl0 from 127.0.0.0/8 to any
block in log quick on rl0 from any to 0.0.0.0/32
block in log quick on rl0 from any to 255.255.255.255/32
block in log quick on rl0 from any to 127.0.0.0/8

# deny packets that should never be inbound
block in log quick on rl0 from 192.168.0.0/16 to any
block in log quick on rl0 from 172.16.0.0/12 to any
block in log quick on rl0 from 10.0.0.0/8 to any

# block the draft-manning-dsua091.txt nets on outside interface
block in quick on rl0 from 0.0.0.0/8 to any
block in quick on rl0 from 169.254.0.0/16 to any
block in quick on rl0 from 192.0.2.0/24 to any
block in quick on rl0 from 224.0.0.0/4 to any
block in quick on rl0 from 240.0.0.0/4 to any
block in quick on rl0 from any to 0.0.0.0/8
block in quick on rl0 from any to 169.254.0.0/16
block in quick on rl0 from any to 224.0.0.0/4
block in quick on rll0 from any to 240.0.0.0/4
block out log quick on rl0 from any to 0.0.0.0/8
block out log quick on rl0 from any to 169.254.0.0/16
block out log quick on rl0 from any to 192.0.2.0/24
block out log quick on rl0 from any to 224.0.0.0/4
block out log quick on rl0 from any to 240.0.0.0/4
# block outbound RIP (routing protocol‚ mag NOOIT naar buiten)
block out log quick on rl0 proto tcp from any to any port = 520
block out log quick on rl0 proto udp from any to any port = 520

# Allow some types of ICMP (mogelijk nog een type toestaan)
pass in quick on rl0 proto icmp all icmp-type 0
pass in quick on rl0 proto icmp all icmp-type 3
pass in quick on rl0 proto icmp all icmp-type 8
pass in quick on rl0 proto icmp all icmp-type 11

###
### Persoonlijke rules
###

# Allow connections to SSH
#pass in on rl0 proto tcp from any to 193.173.210.132/32 port = 22 flags S/SA keep state
pass in quick on rl0 proto tcp from any to any port = 22 flags S/SA keep state

# Allow connections to apache
pass in quick on rl0 proto tcp from any to 193.173.210.132/32 port = 80 flags S/SA keep state

# Allow connections to sendmail
pass in quick on rl0 proto tcp from any to 193.173.210.132/32 port = 25 flags S/SA keep state

# Allow replies to requests of bind
pass out quick on rl0 proto udp from 193.173.210.132/32 to any port = 53 keep state

# Prevent outside machines from initiating TCP connections to this machine
block in on rl0 proto tcp all flags S/SA
block out on rl0 proto tcp all flags SA/SA

# Allow return packets from connections we initiated
pass out on rl0 proto tcp all keep state

# REJECT ident request (don’t just drop them)
block return-rst in on rl0 proto tcp from any to any port = 113
[/shell]

nu gaan we overschakelen naar deze ruleset maar om er zeker van te zijn dat we niet buiten gesloten worden doen we dat met volgend commando
[shell]# ipf -FA -f /etc/ipf.rules.test && sleep 180 && ipf -FA
[/shell]

je hebt dan 3 minuten tijd om te zien of je met ssh nog naar de machine kunt connecten. (doe dat met een 2e ssh client scherm).
indien een mail/httpd server erg belangrijk is test je deze ook meteen‚ mag deze wel even offline zijn dan test je dat nog niet.

wacht de 3 minuten even af voor de zekerheid.
nu kopieren we de firewall ruleset naar ipf.rules en activeren we de rules
[shell]# cp /etc/ipf.rules.test /etc/ipf.rules.test /etc/ipf.rules
# ipf -FA -f /etc/ipf.rules
[/shell]

Ok je bent nog steeds op de machine en je firewall draait!!

nu ga ik je nog kort uitleggen hoe je nou veilig nog meer nieuwe rules kunt testen op een colocated machine. 😀

Breng de gewenste veranderingen aan in /etc/ipf.rules[b].test[/b]
vervolgens gaan we vanaf de huidige ruleset gedurende een minuut ruleset ipf.rules.test draaien en daarna weer terug naar de goede oude vertrouwde set. Dit om er zeker van te zijn dat we niet buiten gesloten worden door de nieuwe set.

Switchen van de huige rulset naar de extra set doe je met -s daarin laden we de test set en vervolgens wachten we een minuut‚ dan switchen we terug naar de originele set.
[shell]ipf -s -Fa -f /myrules && sleep 60 && ipf -s
[/shell]

Je hebt nu 1 minuut om te testen of je ruleset doet wat jij wilt.

Ben je tevreden over de ruleset dan kopieer je de ruleset naar /etc/ipf.rules en vertel je ipf om alles te flushen (= leeggooien -FA) en de nieuwe set te laden vanuit file /etc/ipf.rules ( -f /etc/ipf.rules)
[shell]#ipf -FA -f /etc/ipf.rules
[/shell]

Ok nog een paar korte aantekeningen

ipf -s (= switchen van ruleset‚ er kunnen 2 rulesets in het geheugen!)
ipf -FA (= [b]F[/b]lush [b]A[/b]ll‚ dat is het leeggooien van het ipf geheugen‚ je draait nu helemaal geen rules!)
ipf -FA -f /file (= -FA‚ fushen‚ en -f geeft aan vanuit welke file hij een ruleset in moet lezen.)

nu nog een laatste toegift. :))

Op het moment dat er geen ruleset geladen is is ALLES toegestaan. we hebben namelijk bij het compileren van de kernel
de regel
[shell]#options IPFILTER_DEFAULT_BLOCK #block by default
[/shell]
als commentaar neergezet.

bij het opstarten zijn er een aantal secondes dat ipf [b]wel[/b] geladen is maar de ruleset nog niet ! Ook als de machine om een of andere reden /etc/ipf.rules niet kan lezen dan is alles toegestaan. dit erg handig (je kunt namelijk nog bij de machine met ssh) maar tevens onveilig!

als je het # voor de regel weghaald en de kernel opnieuw compileerd en installeerd weet je zeker dat je firewall dicht zit als er geen rules in het geheugen zitten.
Ik ga hier nu niet verder op in omdat het een erg gevaarlijke optie is. als je veel ervaring hebt met FreeBSD kun je deze regel meecompileren op eigen risico‚ doe dit echter pas als er een goede ipf.rules bestaat !!!!

Veel success.

XychiX

Filed Under: Firewall

[FreeBSD] Router met IpFilter firewall

December 3, 2001 by Rob

De heer Marty Schlacter heeft een heel mooie Engelstalige howto geschreven. Als je
deze howto volgt is je systeem erg veilig.

Als iemand er niet uitkomt betreffende de taal of andere problemen‚ schroom dan
niet om te mailen naar [mail=rob@bsdfreaks.nl]Rob[/mail] of zet het in het
forum.

[pagebreak]
[url=http://www.defcon1.org/~ghostrdr/FreeBSD-STABLE_and_IPFILTER.html]Ipfilter router howto[/url]

Filed Under: Firewall, FreeBSD, Networking

Primary Sidebar

Pages

  • Howto overview
  • iPhone mail setup
  • Links

Categories

  • *BSD news from the past
  • Console
  • Firewall
  • FreeBSD
  • FTP server
  • Hardware
  • Howto's
  • Installation
  • Kernel
  • Mail server
  • Miscellaneous
  • Networking
  • News
  • News imported
  • OpenBSD
  • Operating System
  • Programming
  • Security
  • Site news
  • Software
  • Sysutils
  • Web server

Recent Comments

  • admin on Qmail FreeBSD Mail Toaster Spam en virus control addon
  • admin on [FreeBSD] Het opzetten van een Vlan
  • Jap on [FreeBSD] Installing GlFtpd
  • Jap on [FreeBSD] Installing GlFtpd
  • Crashjuh on Wireless access point met OpenBSD + VPN

Copyright © 2025 · Genesis Sample Theme on Genesis Framework · WordPress · Log in