Gå til innhold

BSD/UnixHjelp til å sette opp OpenBSD som gateway


Gjest Slettet+432

Anbefalte innlegg

Gjest Slettet+432

Hey!

 

Slik ser nettverket mitt ut nå:

post-31872-1167405483_thumb.png

 

Kan kanskje se litt rart ut, men det skal være sånn.

 

Det jeg vil er å kjøre all trafikk fra AP2 (topcom) gjennom en server som kjører MAC-adresse filtrering (pga verken topcom routerens mac-adresse filtrering eller kryptering ikke virker) og en squid gjennomsiktig proxy (for filtrering av div. dritt som en 7-åring ikke bør se).

 

Har nettopp installert OpenBSD 4.0. Vet at det er pf som skal brukes, men kan lite med dette, egentlig lite med nettverks-teori generelt, og vet ikke om jeg skal sette nettverket bak gatewayen på et annet subnett eller noe sånt. Har lite peiling på det, så om noen kunne gi meg et hint om det, og hvordan jeg skal sette opp OpenBSD og pf så hadde det vært flott. :)

 

Håper noen kan hjelpe en helt ny OpenBSD bruker som aldri har vært borti *BSD før :)

 

Edit: Maskinen jeg skal bruke:

 

Intel Celeron 333 MHz

192 MB RAM (tror det er noe sånt)

2 disker: 10 GB og 13 GB

2 nettverkskort (dc0 = inn og fxp0 = ut som jeg har forstått det?)

Endret av Slettet+432
Lenke til kommentar
Videoannonse
Annonse

Det er i utgangspunktet 2 ting du må endre på for å få OpenBSD til å fungere som en ruter. i /etc/sysctl.conf må du fjerne kommenteringen for "net.inet.ip.forwarding=1"

og i /etc/rc.conf.local (evt. /etc/rc.conf) må linjen "pf=YES" finnes.

 

Nå er maskinen satt opp til å kunne rute pakker og til å benytte seg av PF.

 

Videre for å konfigurere PF editerer du /etc/pf.conf etter eget ønske.

Det finnes masse howtos der ute, så det er bare å google i vei.

 

For å kontrollere PF bruker du "pfctl" for å se de forskjellige argumentene pfctl tar lønner deg se å lese man fila ("man pfctl"), men for at du kommer raskt i gang er kommandoen for å flushe regler og lese nye regler: "pfctl -Fa -f /etc/pf.conf"

 

Når det gjelder nettverkskort, og at disse ikke heter ethX som i Linux, forklares det enkelt med at *BSD heller navngir nettverkskortene etter hvilken driver de benytter seg av.

 

xlX - de fleste 3com 100mbit kort

rlX - de fleste Realtek 100mbit kort

fxpX - de fleste Intel 100mbit kort

dmX - de fleste Realtek 1000mbit kort

emX - de fleste Intel 1000mbit kort.

 

 

Velkommen til *BSD verdenen og lykke til:)

Lenke til kommentar
Gjest Slettet+432
Det er i utgangspunktet 2 ting du må endre på for å få OpenBSD til å fungere som en ruter. i /etc/sysctl.conf må du fjerne kommenteringen for "net.inet.ip.forwarding=1"

og i /etc/rc.conf.local (evt. /etc/rc.conf) må linjen "pf=YES" finnes.

 

Nå er maskinen satt opp til å kunne rute pakker og til å benytte seg av PF.

 

Videre for å konfigurere PF editerer du /etc/pf.conf etter eget ønske.

Det finnes masse howtos der ute, så det er bare å google i vei.

 

For å kontrollere PF bruker du "pfctl" for å se de forskjellige argumentene pfctl tar lønner deg se å lese man fila ("man pfctl"), men for at du kommer raskt i gang er kommandoen for å flushe regler og lese nye regler: "pfctl -Fa -f /etc/pf.conf"

 

Når det gjelder nettverkskort, og at disse ikke heter ethX som i Linux, forklares det enkelt med at *BSD heller navngir nettverkskortene etter hvilken driver de benytter seg av.

 

xlX - de fleste 3com 100mbit kort

rlX - de fleste Realtek 100mbit kort

fxpX - de fleste Intel 100mbit kort

dmX - de fleste Realtek 1000mbit kort

emX - de fleste Intel 1000mbit kort.

 

 

Velkommen til *BSD verdenen og lykke til:)

7602151[/snapback]

Takk for svar :) Hadde håpet å få et lite hint til konfigurasjonen... På google finner jeg hauger av guider for OpenBSD 3x, men finner ingen som passer til mitt formål. ;)

Lenke til kommentar

PF er ganske enkelt genialt enkelt:)

 

Hvis du ønsker å benytte deg av NAT har du anledning til det ved å legge til en enkel linje, eller å editere den som ligger der som et eksempel. (Jeg har ikke tilgang til noen pf.conf jeg tidligere har skrevet her nå, så det blir litt abstrakt)

 

Hvis du ikke ønsker å benytte deg av NAT i PF, men heller i netopia routeren din, kan du enkelt og greit sette opp en bridge mellom dc0 og fxp0, for så å kjøre en gjennomsiktig brannmur/proxy.

 

Lag en ny fil som heter /etc/bridgename.bridge0 og legg til følgende linjer:

"

add dc0

add fxp0

up

"

 

Restart serveren eller nettverket etter eget ønske, og du skal nå ha en fungerende bridge satt opp mellom dc0 og fxp0.

 

En enorm fordel med OpenBSD som jeg ikke har sett i Linux (kanskje pga. manglende kunnskap) er at du fremdeles kan beholde IP'r på NICene, selv om det er satt opp en bridge.

 

Videre må du så legge til regler i PF etter eget ønske. Det du må huske på er at nettverkspakker som går gjennom bridgen din kan bli prosessert på 4 steder.

innkommende på dc0 -> utgående på fxp0

innkommende på fxp0 -> utgående på dc0

 

si at dc0 nå er nettverkskortet som er koblet til ap2, og du ikke er redd for trafikk som kommer internt fra det resterende nettverket tilkoblet fxp0

pass all in on fxp0

pass all out on fxp0

drop all in on dc0

pass all out on dc0

Videre, for å tillate trafikk senere kan du med argumentet 'quick' overstyre de generelle reglene.

 

(når det kommer til MAC filtrering har jeg aldri testet ut dette i praksis, da jeg heller har benyttet meg av andre former for å sikre trådløse nettverk. OpenVPN er f. eks. en genial løsning for å sikre nettverk for alle mulige innbrudd. Uansett, se her for en grei guide til hvordan det gjøres: http://www.openbsd.org/faq/pf/tagging.html)

pass in quick on dc0 tagged USER1 keep state

 

I tillegg må du evt. legge til en linje som redirecter alle forespørsler mot port 80 til en lokal proxy. Slike regler skal stå først i regelsettet mener jeg å huske, men les gjennom http://www.openbsd.org/faq/pf for å være sikker:)

 

rdr on dc0 proto tcp from any to any port 80 -> 127.0.0.1 port XXXXX

Lenke til kommentar
Gjest Slettet+432

Tusen takk! Det var til mye mer hjelp :) Om noen vet noe om MAC filtrering også så hadde det vært kjempeflott :)

pass all in on dc0
pass all out on dc0
drop all in on fxp0
pass all out on fxp0

(redigerte det så det passer til mitt nettverk)

All trafikk kan komme inn gjennom dc0 (LAN). All trafikk fra fxp0 (ap2) kan gå ut gjennom dc0 og til resten av nettverket. All trafikk inn på fxp0 (altså bak gatewayen) blir droppet, og all trafikk ut gjennom fxp0 tillates.

 

Har jeg forstått det riktig? Men hvorfor vil jeg droppe all trafikk inn på fxp0, altså inn til ap2? Da får de vel ikke motatt websider eller noe da? Eller er jeg helt på jordet nå?

 

pass in quick on dc0 tagged USER1 keep state

 

Hva gjør denne?

Endret av Slettet+432
Lenke til kommentar

Det er viktig at du klarer å se for deg trafikkflyten gjennom gatewayen. Vi tar for oss fxp0 som har en kabel til AP2. Hvis vi snakker om "out on fxp0" betyr det trafikk fra fxp0 og til AP2. Snakker vi om "in on fxp0" betyr det da fra AP2 og til fxp0.

Dvs. ønsker du å sette opp MACfiltrering på fxp0, vil du altså ikke være interessert i at alle tilkoblet AP2 får kontakt med fxp0, men kun de som har riktige MAC adresser.

 

Som jeg nevnte tidligere kan du lese om MAC filtrering her: http://www.openbsd.org/faq/pf/tagging.html

Nederst på den siden står den greit forklart hvordan du kan "tagge" visse kriterier for bridgen din, og videre hvordan du bruker denne taggingen videre i pf.conf. (Det er der jeg hentet "USER1" fra.

 

Det som da blir riktig for deg er:

pass in quick on fxp0 tagged USER1 keep state

"keep state" er et argument som gjør regelen dynamisk. Det har ikke så mye for seg i dette tilfellet, da den eneste regelen du har går på MAC. Derimot, la oss si at du hadde sagt

drop in on dc0

drop out on dc0

drop in on fxp0

drop out on fcp0

pass in quick on fxp0 proto tcp from any to any port 80 keep state

pass out quick on dc0 proto tcp from any to any port 80 keep state

Ville dette tillate all webtrafikk mot Internett, og regler ville automatisk bli laget for tilhørende trafikk som f. eks. repons fra webtjeneren etc.

 

 

Jeg vil anbefale deg å begynne å grave deg godt ned i FAQs og howtos om PF, det meste lar seg gjøre, og syntax/brukervennlighet er et godt stykke over tilsvarende brannmurer som IPFW og IPTABLES:)

Lenke til kommentar
Gjest Slettet+432
Det er viktig at du klarer å se for deg trafikkflyten gjennom gatewayen. Vi tar for oss fxp0 som har en kabel til AP2. Hvis vi snakker om "out on fxp0" betyr det trafikk fra fxp0 og til AP2. Snakker vi om "in on fxp0" betyr det da fra AP2 og til fxp0.

Dvs. ønsker du å sette opp MACfiltrering på fxp0, vil du altså ikke være interessert i at alle tilkoblet AP2 får kontakt med fxp0, men kun de som har riktige MAC adresser.

 

Som jeg nevnte tidligere kan du lese om MAC filtrering her: http://www.openbsd.org/faq/pf/tagging.html

Nederst på den siden står den greit forklart hvordan du kan "tagge" visse kriterier for bridgen din, og videre hvordan du bruker denne taggingen videre i pf.conf. (Det er der jeg hentet "USER1" fra.

 

Det som da blir riktig for deg er:

pass in quick on fxp0 tagged USER1 keep state

"keep state" er et argument som gjør regelen dynamisk. Det har ikke så mye for seg i dette tilfellet, da den eneste regelen du har går på MAC. Derimot, la oss si at du hadde sagt

drop in on dc0

drop out on dc0

drop in on fxp0

drop out on fcp0

pass in quick on fxp0 proto tcp from any to any port 80 keep state

pass out quick on dc0 proto tcp from any to any port 80 keep state

Ville dette tillate all webtrafikk mot Internett, og regler ville automatisk bli laget for tilhørende trafikk som f. eks. repons fra webtjeneren etc.

 

 

Jeg vil anbefale deg å begynne å grave deg godt ned i FAQs og howtos om PF, det meste lar seg gjøre, og syntax/brukervennlighet er et godt stykke over tilsvarende brannmurer som IPFW og IPTABLES:)

7603441[/snapback]

Tusen takk! pf er genialt da, slipper alle de der parameterne som vi har i iptables, f els iptables -n dott -p er3e4 -d ditt -a datt. Sinnsykt ¨å holde styr på:p

Lenke til kommentar

helt klart. Jeg gikk fra IPFW til PF, og i ettertid bruker jeg også IPTABLES på noen tjenester som jeg må bruke Linux til. Helt forferdelig i forhold:) Vi får bare be og håpe på at de som har peil på slikt jobber med å porte PF eller kode noe tilsvarende for andre operativsystemer:)

Lenke til kommentar
Gjest Slettet+432

Hm... Under oppstart får jeg:

 

/etc/pf.conf: 7: Syntax error

/etc/pf.conf: 8: Syntax error

/etc/pf.conf: 10: Syntax error

 

pfctl: Syntax error in config file: pf rules not loaded

 

Min /etc/pf.conf ser slik ut nå:

#       $OpenBSD: pf.conf,v 1.31 2006/01/30 12:20:31 camield Exp $
#
# See pf.conf(5) and /usr/share/pf for syntax and examples.
# Remember to set net.inet.ip.forwarding=1 and/or net.inet6.ip6.forwarding=1
# in /etc/sysctl.conf if packets are to be forwarded between interfaces.

pass all in on dc0
pass all out on dc0
drop all in on fxp0
pass all out on fxp0

# MAC-filtrering
pass in on fxp0 tagged USER1
pass in on fxp0 tagged USER2

Hva er galt? Jeg tok backup av originalfilen, men den hadde vel ikke noe å si uansett, alt var kommentert ut...

 

Edit: Kjørte

brconfig bridge0 rule pass in on fxp0 src 0:de:ad:be:ef:0 tag USER1

før reboot, men den forsvinner etter reboot... Hvorfor det?

 

Edit2: Kommer ikke inn via SSH og den svarer ikke på ping lenger.. Hehe.

 

EDIT:

 

Fant ut at du hadde skrevet litt feil :) Det er "pass out on dc0" (osv) og block in on fxp0. Altså ikke all og ikke drop. Nå svarer den på ping og SSH også, etter at jeg fikk startet pf. Lurer fortsatt på hvordan jeg får "lagret" mac-adressene så de fortsatt er tillatt etter reboot?

 

EDIT: Nå fikk jeg det til, alt funker.. Utenom squid. Under oppstart får jeg "Terminated ABNORMALLY!". Har ikke gjort noe med det, noen peiling på hva jeg må gjøre egentlig?

Endret av Slettet+432
Lenke til kommentar
Gjest Slettet+432

Okey.. Trenger ikke proxy, fant ut av det nå :) Har et lite problem her..

 

På min bror sin M$ Win XP maskin er alt satt opp på DHCP. Den kobler til og får IP-adresse (så sant MAC adressen er godkjent), og alt funker. Så prøver jeg med Powerbooken min. Den får IP. Men det står at den ikke er tilkoblet internett, og jeg kommer ikke inn på noen nettsider.. Prøver først å pinge AP2. Svar der. Så prøvde jeg å pinge fxp0 (192.168.1.16). Ikke noe svar der (fant ut i ettertid at den har sluttet å svare på ping fra XP maskinen også, men det funker der selv om), og heller ikke noen andre ting utenfor gatewayen. Hvorfor er det slik? Noe jeg kan gjøre for at det skal funke?

 

Vil gjerne koble meg på der jeg også av og til, fordi AP2 står nærmere stuen og da slipper jeg å laste filmer over på maskinen for å se på TV, heller bare streame fra server.

 

Output av brconfig:

# brconfig
bridge0: flags=41<UP,RUNNING>
       Configuration:
               priority 32768 hellotime 2 fwddelay 15 maxage 20
       Interfaces:
               fxp0 flags=3<LEARNING,DISCOVER>
                       port 1 ifpriority 128 ifcost 55
                   pass in on fxp0 src 00:03:2f:26:3f:08 tag AP2
                   pass in on fxp0 src 00:50:fc:bc:f6:b4 tag MIKAEL
                   pass in on fxp0 src 00:11:24:21:93:5f tag ALEKS
               dc0 flags=3<LEARNING,DISCOVER>
                       port 2 ifpriority 128 ifcost 55
       Addresses (max cache: 100, timeout: 240):
               00:11:24:21:93:5f dc0 1 flags=0<>
               00:00:c5:92:95:b8 dc0 1 flags=0<>
               00:50:fc:bc:f6:b4 fxp0 0 flags=0<>
               00:16:cb:a0:c6:09 dc0 1 flags=0<>
               00:03:2f:26:3f:08 fxp0 1 flags=0<>

 

Innhold i pf.conf:

#       $OpenBSD: pf.conf,v 1.31 2006/01/30 12:20:31 camield Exp $
#
# See pf.conf(5) and /usr/share/pf for syntax and examples.
# Remember to set net.inet.ip.forwarding=1 and/or net.inet6.ip6.forwarding=1
# in /etc/sysctl.conf if packets are to be forwarded between interfaces.

pass in on dc0
pass out on dc0
block in on fxp0
pass out on fxp0

# Mac-adresse filtrering
pass in on fxp0 tagged AP2
pass in on fxp0 tagged MIKAEL
pass in on fxp0 tagged ALEKS

Endret av Slettet+432
Lenke til kommentar

Ved nærmere ettertanke bør du åpne for utgående både på dc0 og fxp0

 

pass out on fxp0 keep state

pass out on dc0 keep state

 

I tillegg må du muligens også åpne opp for sshd, jeg er sannelig ikke sikker på hvor effektiv den MAC filtreringa egentlig er.

 

Og, mulig du kan tjene på å kjøre en "scrub in all" i starten av pf.conf, for å påse at kun komplette nettverkspakker kommer videre i brannmuren. Fragmenterte pakker kan bety litt trøbbel når det gjelder å gjenkjenne dem.

 

Jeg har dårlig tid nå, men slenger med min sist brukte pf.conf.

 

Oppsettet der er som følger:

fxp0 - internett

fxp1 - trådløst

re0 - arbeidsstasjon

 

Maskiner som kobler seg til det trådløse "åpne" nettverket får kun tilgang til dns servere, port 80 (men da blir alt redirected til den lokale serveren) og en vpn server som kjører på port XXXXXX. Poenget er det at brukere som kobler seg til uten lov, får opp samme webside uansett hva de prøver å komme seg inn på, som forteller dem at de bare har å holde seg unna. Autoriserte brukere kobler seg opp via vpn, og får således tilgang til Internett, og de har automatisk også en del porter forwardet videre til seg.

 

 

Klikk for å se/fjerne innholdet nedenfor
ext_if="fxp0"

int_if="fxp1"

vpn_if="tun0"

pc_if="re0"

bri_if="bridge0"

loc_net="192.168.0.0/24"

vpn_net="172.30.0.0/24"

dns1="xxx.xxx.xxx.xxx"

dns2="xxx.xxx.xxx.xxx"

 

 

scrub in all

 

altq on fxp0 cbq bandwidth 1024Kb queue { http_out, ftp_out, ssh_out, icmp_out, annet_out }

queue http_out bandwidth 10% priority 5 cbq(red borrow)

queue ftp_out bandwidth 10% priority 3 cbq(red borrow)

queue ssh_out bandwidth 5% priority 7 cbq(ecn borrow)

queue annet_out bandwidth 50% priority 2 cbq(default red)

queue icmp_out bandwidth 1% priority 6 cbq(ecn)

 

 

nat on $ext_if from $loc_net -> ($ext_if:0)

nat on $ext_if from $vpn_net -> ($ext_if:0)

 

rdr on $int_if inet proto tcp from any to any port www -> $ext_if:0 port www

rdr on $ext_if inet proto tcp from any to $ext_if:0 port 51000:53000 -> 172.30.0.70 port 51000:*

rdr on $ext_if inet proto udp from any to $ext_if:0 port 51000:53000 -> 172.30.0.70 port 51000:*

rdr on $ext_if inet proto tcp from any to $ext_if:0 port 55000:57000 -> 172.30.0.80 port 55000:*

rdr on $ext_if inet proto udp from any to $ext_if:0 port 55000:57000 -> 172.30.0.80 port 55000:*

rdr on $ext_if inet proto tcp from any to $ext_if:0 port 59000:61000 -> 172.30.0.90 port 59000:*

rdr on $ext_if inet proto udp from any to $ext_if:0 port 59000:61000 -> 172.30.0.90 port 59000:*

rdr on $ext_if inet proto tcp from any to $ext_if:0 port 40000:50000 -> 172.30.0.100 port 40000:*

rdr on $ext_if inet proto udp from any to $ext_if:0 port 40000:50000 -> 172.30.0.100 port 40000:*

 

block in on $ext_if

pass out on $ext_if keep state

block in on $int_if

pass out on $int_if keep state

pass in on $vpn_if

pass out on $vpn_if

pass in on $pc_if

pass out on $pc_if

 

pass in quick on $ext_if inet proto tcp to $ext_if:0 port XXXXXX keep state

pass in quick on $ext_if inet proto {tcp, udp} to $vpn_net port 40000:61000 keep state

 

pass in quick on $vpn_if inet proto tcp from $vpn_net to any port http flags S/SA keep state queue http_out

pass in quick on $vpn_if inet proto tcp from $vpn_net to any port ftp flags S/SA keep state queue ftp_out

pass in quick on $vpn_if inet proto tcp from $vpn_net to any port { ssh, 3389 } flags S/SA keep state queue ssh_out

pass in quick on $vpn_if inet from $vpn_net to any keep state queue annet_out

pass in quick on $vpn_if inet proto icmp all keep state queue icmp_out

 

pass in quick on $int_if proto tcp from any to any port www

pass in quick on $int_if proto udp from any to any port bootpc keep state

pass in quick on $int_if proto udp from $loc_net to { $dns1, $dns2 } port domain keep state

pass in quick on $int_if proto tcp from $loc_net to $ext_if:0 port XXXXXX keep state

Lenke til kommentar
Gjest Slettet+432

Kommer fortsatt ikke gjennom med den andre datamaskinen... :no: Og vil helst ikke ha noe VPN greier:p

Endret av Slettet+432
Lenke til kommentar
Gjest Slettet+432
Vel, da vet ikke jeg mer om det emnet. Som sagt, mac filtrering er så og si det samme som et åpent nettverk da hvem som helst kan skifte mac adresser bare ved å gå inn og endre i egenskapene for nettverkskortet :/

7608468[/snapback]

Ok. Ja, vet igrunn det. Tror ikke det går an å gjøre i Windows out-of-the-box da men.. Hehe. Jeg får kanskje se på VPN løsningen.

Lenke til kommentar
Gjest Slettet+432

OK, nå har jeg satt inn enda et nettverkskort sånn at jeg har tre i maskinen. Valgte å gå for din løsning. Det er vel tre kort du bruker? Uansett, vet ikke hvordan jeg skal gjøre det da. Skal jeg sette alle tre kortene inn i bridge eller noe?

 

Slik er det koblet:

 

dc0 - inn fra resten av nettverket

fxp0 - ut til mitt nettverk

rl0 - ut til aksesspunkt

 

Legger ved et bilde av slik det er koblet nå, og slik det er planlagt (VPN..)

post-31872-1167746493_thumb.jpg

 

Edit: Et problem til her.. Fra jeg skriver ssh 192.168.1.10 til jeg får opp passord prompt går det over 1 minutt. Hva er galt?

Endret av Slettet+432
Lenke til kommentar

Det er en ting jeg stusser på med det oppsettet ditt: hvorfor står ikke BSD-brannmuren først, altså at Netopia-routeren kommer først, så OpenBSD-boksen, og deretter resten av nettverket? Slik det er satt opp nå er det flere maskiner som står mellom brannmuren og Netopia routeren. Dette er vel galt, og ikke slik jeg ville satt det opp.

Endret av stigfjel
Lenke til kommentar
Gjest Slettet+432
Det er en ting jeg stusser på med det oppsettet ditt: hvorfor står ikke BSD-brannmuren først, altså at Netopia-routeren kommer først, så OpenBSD-boksen, og deretter resten av nettverket? Slik det er satt opp nå er det flere maskiner som står mellom brannmuren og Netopia routeren. Dette er vel galt, og ikke slik jeg ville satt det opp.

7668878[/snapback]

Fordi faren min hater at det må stå maskiner på for at noe skal funke, og han nekter å la meg ha en maskin på hele tiden. derfor setter jeg den heller opp mellom internett og "mitt" nettverk..

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å
×
×
  • Opprett ny...