Gå til innhold

BSD/UnixIpfw til pf


Anbefalte innlegg

Hei. jeg er i en fase hvor jeg vil prøve og kommer over fra ipfw til pf.

 

mitt nettverk er som følger:

 

internet

----|----------

____em0_________

|--------------|

|-----em1------|

|__vlan1-vlan2_|

----|-----|----

--priv---guest

 

IP:

priv har 192.168.4.1

guest har 10.0.0.1

 

Problemet her er og få alle pakker fra guest (vlan2) til å gå direkte ut via em0 og ikke ha "låv" å gå til vlan1 osv. Slik det er nå kan jeg gå frem og tilbake på vlanene gjennom nat.

Her er det jeg har i pf:

 

nat on em0 from 10.0.0.0/24 to any -> (em0)

pass on vlan2 from 10.0.0.0/24 to any keep state (er det ikke mulig og spesifisere hvor denne skal gå ut ? som ipfw's "out via" og "in via"

 

Gjorde dette enkelt i ipfw med en regel som dette:

$cmd 014 allow all from 10.0.0.0/24 to any out via vlan2

$cmd 016 allow all from 10.0.0.0/24 to any in via vlan2

 

takker for alle svar :)

Endret av xpenziuz
Lenke til kommentar
Videoannonse
Annonse

Ikke uoverkommelig dette, men det lønner seg gjerne å bruke et par pf-triks for å få det til:

 

priv = "192.168.4.1/24"

guest = "10.0.0.1/24"

ext_if = em0

priv_if=vlan1

guest_if=vlan2

 

block all

pass in on $guest_if from $guest

pass out on $ext_if from $guest

 

# [ andre filtreringsregler ]

 

Med 'block all' som første filtreringsregel må du eksplisitt tillate hver enkelt tjeneste, det gir som regel bedre oversikt, og på denne måten får du den separasjonen du vil ha.

 

Med fare for å være for selvhevdende vil jeg anbefale å ta en titt på http://home.nuug.no/~peter/pf/, eventuelt skaffe et eks av http://nostarch.com/pf2.htm (elektronisk utgave leveres om jeg forstår det rett med en gang du har knappet inn kredittkortinfo :))

 

- Peter

Lenke til kommentar

Ikke uoverkommelig dette, men det lønner seg gjerne å bruke et par pf-triks for å få det til:

 

priv = "192.168.4.1/24"

guest = "10.0.0.1/24"

ext_if = em0

priv_if=vlan1

guest_if=vlan2

 

block all

pass in on $guest_if from $guest

pass out on $ext_if from $guest

 

# [ andre filtreringsregler ]

 

Med 'block all' som første filtreringsregel må du eksplisitt tillate hver enkelt tjeneste, det gir som regel bedre oversikt, og på denne måten får du den separasjonen du vil ha.

 

Med fare for å være for selvhevdende vil jeg anbefale å ta en titt på http://home.nuug.no/~peter/pf/, eventuelt skaffe et eks av http://nostarch.com/pf2.htm (elektronisk utgave leveres om jeg forstår det rett med en gang du har knappet inn kredittkortinfo :))

 

- Peter

 

Hei. takk for svar, men det funket ikke. har allerede block all i pf.conf. prøvde å forenkle det litt for den som eventuelt svarte :)

 

Så om det var på en måte mulig å lage en slags "tunnel" fra $vlanguestnet til ut i verden?

Og som erfart med ipfw kunne dette gjøres med "out via $ext_if"

 

her er det egentlige pf script:

#"Macros"
#User-defined variables may be defined and used later, simplifying
#the configuration file.  Macros must be defined before they are
#referenced in pf.conf.


#Interfaces:
ext_if = "re1"
int_if = "re0"

#Virtual interfaces:
vlanguest = "vlan30"
vlanpriv = "vlan40"

vlanprivnet = "vlan40:network"
vlanguestnet = "vlan30:network"
#Nat on interfaces:
naton = "{ 192.168.4.0/24, 192.168.5.0/24 }"

#Noroutes
noroute = "{ 127.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8 }"

#Mailserver
mail-ip = "192.168.1.2"
mail-ports = "{ smtp, https, pop, 8025 }"


#"Tables"
#Tables provide a mechanism for increasing the performance and flex-
#ibility of rules with large numbers of source or destination
#addresses.
#table <private> const { 10/8, 172.16/12, 192.168/16 }
table <badhosts> persist


#"Options"
#Options tune the behaviour of the packet filtering engine.




#Traffic Normalization (e.g. scrub
#Traffic normalization protects internal machines against inconsis-
#tencies in Internet protocols and implementations.

#"Queueing"
#Queueing provides rule-based bandwidth control.

#"Translation" (NAT)
#Translation rules specify how addresses are to be mapped or redi-
#rected to other addresses.
nat on $ext_if from $naton to any -> ($ext_if) 
#nat on $ext_if from ! $vlanguestnet to any tag NAT -> ($ext_if)

#"Packet Filtering"
#Packet filtering provides rule-based blocking or passing of pack-
#ets.

#Block all by default
block all

#Block bad hosts
block quick from <bad_hosts>

#Rfc1918 (private ip ranges)
#block in log quick on $ext_if from $noroute to any
#block out log quick on $ext_if from any to $noroute 


#Pass traffic for local lan
#pass on $vlanguest from $vlanguestnet to any keep state
#Pass traffic from me to any
pass in on $vlanguest from $vlanguestnet
pass out on $ext_if from $vlanguest


pass from $ext_if to any keep state
#Allowed incoming connections to me
pass in on $ext_if proto tcp to $ext_if port www keep state \
(max-src-conn-rate 100/10, overload <badhosts> flush global)
pass in on $ext_if proto tcp to $ext_if port ssh keep state \
(max-src-conn-rate 100/10, overload <badhosts> flush global)
pass in on $ext_if proto tcp to $ext_if port 10000 keep state

Lenke til kommentar

pass in on $vlanguest from $vlanguestnet
pass out on $ext_if from $vlanguest

 

Her mener du antakelig

 

pass out on $ext_if from $vlanguestnet

 

du kan også leke med slikt som

 

pass in on $vlanguest from $vlanguestnet to ! $vlanprivnet

 

hvilken freebsd-versjon er dette, forresten? fra og med 7.1 skal 'keep state' uten ekstra argumenter ala state tracking være overflødig.

 

og noe helt annet men beslektet - for å sjekke at reglene faktisk oppfører seg som du tror (spesielt makroer osv) kan det være smart å studere output fra

 

pfctl -vnf /etc/pf.conf

 

altså ikke laste reglene, men syntakssjekke og vise ferdigbehandlet regelsett slik som det faktisk blir lastet.

Endret av pitrh
Lenke til kommentar

Bruker freebsd 8.1, holder på å bytte server, så jeg driver bare litt testing før jeg setter freebsd 8.1 serveren på plass.

 

Kan det eventuelt være en ide og og tillate alt og blokkere traffik mellom de etterpå?¨

eks:

    73 pass on $vlanguest from $vlanguestnet to any keep state
    74 block on $vlanguest from $vlanguestnet to $vlanprivnet
    75 block on $vlanguest from $vlanprivnet to $vlanguestnet
    76 block on $vlanpriv from $vlanprivnet to $vlanguestnet
    77 block on $vlanpriv from $vlanguestnet to $vlanprivnet

eller vil det åpne for å sette "en ip" og komme seg inn ved eks å ha 10.0.1.4 og dermed komme gjennom alikevel ?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...