Re: pf og pass

From: Michael Knudsen (none@e--molioner.dk.lh.bsd-dk.dk)
Date: Wed 03 Nov 2004 - 21:26:00 CET


Date: Wed, 3 Nov 2004 21:26:00 +0100
From: Michael Knudsen <none@e--molioner.dk.lh.bsd-dk.dk>
To: bsd-dk@bsd-dk.dk
Subject: Re: pf og pass

Quoting Tue Topholm (tt@device.dk):
> og umiddelbart er der et par fejl:
> pass out on vr0 inet proto tcp from any to 1.2.3.4 port = www keep state
> pass out on vr0 inet proto tcp from any to1.2.3.4 port = 5900 keep state
> pass out on vr0 inet proto tcp from any to 1.2.3.4 port = 5900 keep state
>
> De ovenstående burde jo ikke du.

Hvis jeg forstaar din hensigt med reglerne korrekt, vil du tillade
returpakkerne fra `in'-reglerne. I saa fald skal du bruge `from
1.2.3.4'; dvs. reglen `vender' forkert.

> Mit spørgsmål er så:
>
> Hvorfor hvis jeg gå på webserveren (www), at jeg kan få en pakke tilbage,
> når jeg kun har åbnet indgående og ikke udgåendende..

Som Claus skriver, skyldes det, du bruger state. Naar forespoergslen
kommer ind paa firewallen, bliver der oprettet en state entry. Naar
svarpakkerne kommer, slaar pf op i state table og ser, at pakkerne
hoerer til en godkendt forbindelse, og derfor bliver de lukket igennem.

> Kan det betale at bruge modulate state i stedet for keep state.

Ja, paa tcp-reglerne (pf laver det vist om til `keep state' ved
udp-regler) soerger det blandt andet for at lukke tilhoerende
ICMP-trafik igennem firewallen, saa man kan modtage source-quenches for
godkendte forbindelser.

Overvej at skrive dine regler lidt mere kompakt, saa de bliver nemmere
at overskue (jeg gaettede paa anvendelsen af dine netkort):

# Definér makroer til netkortene
int_if="rl0"
ext_if="vr0"

# Definér makroer til servere
server="1.2.3.4"

# Luk al trafik fra det interne netvaerk
# ud og opret state for SYN-pakker.
pass in quick on $int_if all flags S/SA modulate state

# Default drop paa det eksterne netkort
block drop log on $ext_if all

# Luk godkendte services igennem
pass in on $ext_if inet proto tcp from any to $server \
        port www flags S/SA modulate state
pass in on $ext_if inet proto {tcp udp} from any to $server \
        port 5900 flags S/SA modulate state

Bemaerk, at jeg har indsat `flags S/SA'. Dette goer, at kun SYN-pakken
matches ved TCP. Der er ikke grund til at lukke pakker igennem (og
oprette state), hvis man ikke har set en SYN-pakke.

Som Claus ogsaa skriver, saa tag et grundigt kig paa FAQ til pf. Den er
virkelig god til at komme i gang med pf.

Mvh. Michael.

-- 
Winter meant the coming of the lazy wind, which couldn't be bothered to
blow around people and blew right through them instead.
-- (Terry Pratchett, Wyrd Sisters)



This archive was generated by hypermail 2b30 : Wed 15 Nov 2006 - 18:24:46 CET