Re: FreeBSD 7.0 pf problemer

From: Thomas Rasmussen (none@thomas--gibfest.dk.lh.bsd-dk.dk)
Date: Tue 23 Sep 2008 - 14:36:00 CEST


Date: Tue, 23 Sep 2008 14:36:00 +0200
From: Thomas Rasmussen <none@thomas--gibfest.dk.lh.bsd-dk.dk>
To: bsd-dk@bsd-dk.dk
Subject: Re: FreeBSD 7.0 pf problemer

Robert Jeppesen wrote:
> Har opsat en mailgateway der har det ene ben på public net a.b.c.d og det
> andet ben på private net f.g.h.i
> Gatewayen kører spamd/pf samt maia-mailguard og skal relay'e til vores
> interne mailserver. Udgående mail skal også gennem gatewayen.
> Default gateway i public net og dns/ntp på private net
>
>
Hejsa

Jeg er ikke sikker på jeg helt forstår hvad du gerne vil. Mht. makroen
tcp_int_services virker det (i dit regelsæt) som om at du vil bruge den
til at åbne porte på gatewayens inderside interface, hvilket også er
helt iorden. Men den anden makro der hedder udp_int_services virker det
som om du bruger til at tillade udgående trafik (både tcp og udp) fra
gatewayen til internt lan. Men hvis du vil tillade alt udgående trafik
fra gateway til internt lan er den jo ikke nødvendig så det bliver lidt
forvirrende. Ligeledes: hvis du kun skal tillade udgående http trafik
fra gatewayen til internet, og gatewayen ikke skal fungere som webserver
behøver du ingen regler ud over den som tillader alt udgående på det
eksterne interface - den opretter state og retur trafikken bliver hermed
tilladt.

Du skal også huske at angive retningen på trafikken i dine regler (in
eller out) og så skal du som sagt huske at der bliver oprettet states
som default når reglen matcher, den state tillader også retur trafik. Så
du skal altså matche trafikken i dine regler en gang per interface, når
trafikken første gang rammer et givent interface (og da denne gateway jo
ikke router trafik vil det sige éen gang). Jeg har prøvet at ordne dine
regler i "interface, retning" sektioner for at gøre det mere
overskueligt. Du skal også huske at bruge "quick" så den stopper med at
læse regler når pakken har matched, så er der jo blevet oprettet en
state og det er sjældent nødvendigt at læse videre i regelsættet (og det
kan føre til uønsket opførsel hvis man glemmer det).

Hvis jeg skal gætte lidt vil jeg tro at det samlede regelsæt skulle se
cirka således ud (ikke testet, med forbehold for typos):
########### macros #############################################
ext_if = "em1"
int_if = "em0"
internal_net = "{ f.g.h.0/24 }"
lan_tcp_services = "{ smtp, ssh, domain, www }"

########### normalization #########################################
scrub in
antispoof for $ext_if
antispoof for { lo0 $int_if }

########### filtering #############################################
#block all traffic on all interfaces in both directions
block log all

########## loopback interface
#no filtering on loopback interface
set skip on lo0

########## internal interface
#internal interface, incoming traffic initiated from the lan, allow
access to tcp services in the macro $lan_tcp_services
pass in quick on $int_if proto tcp from $internal_net to ($int_if) port
$lan_tcp_services

#internal interface, outgoing traffic (traffic initiated by the
firewall), allow everything
pass out quick on $int_if from ($int_if) to $internal_net

########## external interface
#external interface, incoming traffic (traffic initiated from the
internet), allow smtp only
pass in quick on $ext_if proto tcp from any to ($ext_if) port smtp

#external interface, outgoing traffic (traffic initiated by the
firewall, spampd downloads for instance), allow everything
pass out quick on $ext_if from ($ext_if) to any
########### EOF ###############################################

Jeg håber det er nogenlunde forståeligt det jeg har skrevet, det er lidt
svært at forklare om retninger og states uden at det bliver en roman :)
Hvis jeg har misforstået noget må du lige skrive så skal jeg se om jeg
kan hjælpe.

Mvh

Thomas Rasmussen



This archive was generated by hypermail 2b30 : Tue 30 Sep 2008 - 23:00:01 CEST