PF öppnar ej portar trots regel om detta...

Permalänk
Medlem

PF öppnar ej portar trots regel om detta...

Hej,

Har lite problem med brandväggen; PF under OpenBSD.
Har tidigare haft den med enbart 1 WAN och 1 LAN interface utan några servertjänster på insidan och det har funkat klockrent.
Nu har familjeförhållandena ändrats och nu är det 3 st interna interface varav på ett av de interna näten finns en webserver och en mailserver.

Jag vill nu då portforwarda från WAN-ifct till det interna nätet där servrarna finns. Samt öppna för trafik på port 80/TCP och 25/TCP.

Enligt min pf.conf nedan så är det exakt vad jag gjort men portarna öppnas inte och ingen trafik går igenom till servrarna. Vanlig surf och det jag tillåter utåt fungerar utan problem.
Scannar jag mig själv är varenda port STEALTH.

Tacksam för förslag och rättningar

MVH
/A

======================================================

# $OpenBSD: pf.conf,v 1.34 2007/02/24 19:30:59 millert Exp $

# 1. Macros
lo_if = "lo0"

ext_if = "rl0"

UNET_if = "vr0"
UNET_network = "x.x.x.x/x"

LNETTR_if = "rl1"
LNETTR_network = "x.x.x.x/x"

# PUBNET_if = "rl2"
# PUBNET_network "x.x.x.x/x"

internal_networks = "{ x.x.x.x/x, x.x.x.x/x }"

tcpservices = "{ 22, 21, 80, 443, 1863, 5190 }"
udpservices = "{ 53 }"
reserved_networks = "{ 127.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8 }"

# 2. Tables
# Tomt.

# 3. Options
set limit { states 50000, frags 50000 }
set block-policy drop
set optimization aggressive
# set loginterface $ext_if
set skip on $lo_if

# 4. Packet normalization
scrub in all

# 5. Queueing

# 6. Translation
nat on $ext_if from $internal_networks -> ($ext_if)

nat-anchor "ftp-proxy/*" # FTP proxy
rdr-anchor "ftp-proxy/*" # FTP proxy
rdr pass on $UNET_if proto tcp from any to any port ftp -> 127.0.0.1 port 8021 #
FTP proxy
rdr pass on $LNETTR_if proto tcp from any to any port ftp -> 127.0.0.1 port 8021 #
FTP proxy
# rdr pass on $PUBNET_if proto tcp from any to any port ftp -> 127.0.0.1 port 8021
# FTP proxy

rdr on $ext_if proto tcp from any to ($ext_if) port 80 -> <server ip> port 80
rdr on $ext_if proto tcp from any to ($ext_if) port 25 -> <server ip> port 25

# 7. Filtering
anchor "ftp-proxy/*" # FTP proxy
block in all
block out all
antispoof for { $ext_if, $UNET_if }
pass in on $UNET_if proto tcp from $UNET_network to any port $tcpservices
pass in on $UNET_if proto udp from $UNET_network to any port $udpservices

pass in on $LNETTR_if proto tcp from $LNETTR_network to any port $tcpservices
pass in on $LNETTR_if proto udp from $LNETTR_network to any port $udpservices

pass in on $ext_if proto tcp from any to ($ext_if) port 80
pass in on $ext_if proto tcp from any to ($ext_if) port 25

pass out on $ext_if proto { tcp udp icmp } all keep state

# block in quick on $ext_if from $reserved_networks to any
# block out quick on $ext_if from any to $reserved_networks
block return in log quick on $UNET_if proto tcp from ! x.x.x.x to $UNET_if port 22

#EOF

======================================================

Permalänk
Hedersmedlem

Du har glömt att släppa UT trafiken igen på de interna interfejsen, så alla dina fina forwards slurpas upp av "block out all"!

Antingen låter du brandväggen få full tillgång till de interna näten med
pass out on { $LNETTR_if, $UNET_if } all
eller så kan du använda tags,

rdr on $ext_if proto tcp from any to ($ext_if) port 80 tag RDRTCP -> <server ip>
. . .
pass in on $ext_if tagged RDRTCP
pass out on { $LNETTR_if, $UNET_if } tagged RDRTCP

Din antispoof regel bör f ö använda "quick" eller stå sist för att fungera.

Visa signatur

Det kan aldrig bli fel med mekanisk destruktion

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Aphex
Du har glömt att släppa UT trafiken igen på de interna interfejsen, så alla dina fina forwards slurpas upp av "block out all"!

Antingen låter du brandväggen få full tillgång till de interna näten med
pass out on { $LNETTR_if, $UNET_if } all
eller så kan du använda tags,

rdr on $ext_if proto tcp from any to ($ext_if) port 80 tag RDRTCP -> <server ip>
. . .
pass in on $ext_if tagged RDRTCP
pass out on { $LNETTR_if, $UNET_if } tagged RDRTCP

Din antispoof regel bör f ö använda "quick" eller stå sist för att fungera.

Väldigt onödigt, enda som du behöver är "rdr pass on .." osv, då den automatiskt då skapar pass regler för de paket som styrs av rdr regeln.

Visa signatur

"Stallman to Dvorak: Welcome to freedom, your rulebook is in the mail" - Fake Steve Jobs
rfc-1925 - The Twelve Networking Truths

Permalänk
Medlem

Tack för era tips. Testat men problemet kvarstår.

Så här ser Translation och Filtering-sektionerna i pf.conf ut nu:

======================================================
# 6. Translation
nat on $ext_if from $interna_nat -> ($ext_if)
nat-anchor "ftp-proxy/*" # F?r ftp-proxy
rdr-anchor "ftp-proxy/*" # F?r ftp-proxy
rdr pass on $UNET_if proto tcp from any to any port ftp -> 127.0.0.1 port 8021 #
rdr pass on $LNETTR_if proto tcp from any to any port ftp -> 127.0.0.1 port 8021 #
# rdr pass on $PUBNET_if proto tcp from any to any port ftp -> 127.0.0.1 port 8021
rdr pass on $ext_if proto tcp from any to ($ext_if) port 80 -> <server ip> port 80
rdr pass on $ext_if proto tcp from any to ($ext_if) port 25 -> <server ip> port 25
rdr pass on $ext_if proto tcp from any to ($ext_if) port 53 -> <server ip> port 53

# 7. Filtering

block in all
block out all

block in quick on $ext_if from $reserverade_nat to any
block out quick on $ext_if from any to $reserverade_nat
block return in log quick on $UNET_if proto tcp from ! 10.20.0.40 to $UNET_if port 22

pass in on {$UNET_if, $LNETTR_if} proto tcp from $interna_nat to any port $tcptjanster
pass in on {$UNET_if, $LNETTR_if} proto udp from $interna_nat to any port $udptjanster

pass in on $ext_if proto tcp from any to ($ext_if) port 80 synproxy state
pass in on $ext_if proto tcp from any to ($ext_if) port 25
pass in on $ext_if proto tcp from any to ($ext_if) port 53

pass out on { $LNETTR_if, $UNET_if } all
pass out on $ext_if proto { tcp, udp, icmp } from any to any modulate state

anchor "ftp-proxy/*" # F?r ftp-proxy
antispoof for { $ext_if, $UNET_if, $LNETTR_if }

#EOF
======================================================

Gör ingen skillnad i resultat dock. Vid ip scan mot mitt ip så är _alla_ portar stealth. Så jag testade att kommentera ut
block in all
block out all

Gör sedan ip-scan på mitt ip igen och då är port 22 open (för remote admin av burken) men port 80 och 25 är fortfarande stealth! En bunt andra portar är closed.

Måste ju betyda att han fortfarande inte öppnat portarna!?? Som om han inte bryr sig om reglerna?
Han rapporterar inga syntaxfel i pf.conf .

Har det med NAT att göra?

/A

Permalänk
Hedersmedlem
Citat:

Ursprungligen inskrivet av ntity
Väldigt onödigt, enda som du behöver är "rdr pass on .." osv, då den automatiskt då skapar pass regler för de paket som styrs av rdr regeln.

Jag skriver helst ut reglerna själv då jag tycker det ger bättre översikt och konfigurationsmöjligheter men visst, det finns fler än ett sätt att flå en bäver

Visa signatur

Det kan aldrig bli fel med mekanisk destruktion

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Aphex
Jag skriver helst ut reglerna själv då jag tycker det ger bättre översikt och konfigurationsmöjligheter men visst, det finns fler än ett sätt att flå en bäver

Pf strukturerar endå om reglerna, ordnar om dem (under vissa förutsättningar, pfctl -oo) samt bygger nya regler av de macron som används etc, så du har inte så mycket manuell kontroll över reglerna oavset.

Men om det får dig att känna dig tryggare så visst, endå du gär är ju att göra komplexare regler med större risk för fel

Astrakan, har du testat att ansluta till portarna, stealth betyder endast att de inte skickar en RST på portar som inte är öppna då du skickar en SYN, jag vill minnas att PF kör med synproxy automatiskt på rdr regler.

Visa signatur

"Stallman to Dvorak: Welcome to freedom, your rulebook is in the mail" - Fake Steve Jobs
rfc-1925 - The Twelve Networking Truths

Permalänk
Hedersmedlem

Tja, det beror på. Vanliga pass-regler är långt mer flexibla. Men behöver man inte den extra flexibiliteten så kan slipper man ju några rader...

Jag brukar köra på rdr pass när jag bara ska slänga in något temporärt. Annars tenderar jag att samla alla brandväggsregler på ett ställe. Separation är bra saker.

Visa signatur

Vim
Kinesis Classic Contoured (svart), Svorak (A5)
Medlem i signaturgruppen Vimzealoter.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av ntity
Pf strukturerar endå om reglerna, ordnar om dem (under vissa förutsättningar, pfctl -oo) samt bygger nya regler av de macron som används etc, så du har inte så mycket manuell kontroll över reglerna oavset.

Men om det får dig att känna dig tryggare så visst, endå du gär är ju att göra komplexare regler med större risk för fel

Astrakan, har du testat att ansluta till portarna, stealth betyder endast att de inte skickar en RST på portar som inte är öppna då du skickar en SYN, jag vill minnas att PF kör med synproxy automatiskt på rdr regler.

...Struntar du i kommentarer i kod du skriver också? Det är ju också onödigt.

Permalänk
Medlem

Nej jag kommenterar min kod samt mina PF regler, men om man har hjälpt så pass många som jag har med PF regler som de har strulat till för att de inte förstått inkommande och utgående i samband med redirect & NAT så inser man det fina med rdr pass reglerna.

Det handlar inte om att spara X antal tecken, det handlar om att göra enkla regelverk som är lätta att förstå och svåra att strula till, och precis som trådstartaren hade gjort i början är det ofantligt vanligt med fel i samband med rdr och passering av paketen.

Om man nu även vill sortera bort udda paket så kan man göra det tidigare i regelverket, dessutom tar PF hand om fragment redan innan reglerna utverderas om man gör rätt så.

Visa signatur

"Stallman to Dvorak: Welcome to freedom, your rulebook is in the mail" - Fake Steve Jobs
rfc-1925 - The Twelve Networking Truths