Firewall-Regeln

hardwarefreak20

New Member
Hi, erstmals vorweg bin ein absoluter Neueinsteiger in SachenOpenBSD.

Zu meinem Netzwerk: Habe auf einem Rechner einen Proxy und E-Mail-Server und dahinter möchte ich eine transparente OpenBSD Firwall. Habe die Netzwerkkonfiguration bereits abgeschlossen und benötige nun Hilfe bei der Einrichtung der Firewall :)

Der http Proxy empfängt Anfragen auf Ports 800

Hier meine Regeln:

ext_if="ne3"
int_if=re0"
lan_net="192.168.1.0/24"
loop="lo0"


scrub in all
block in all
block out all
set skip on lo0

pass in quick on re0
pass out quick on re0
block quick inet6

pass out quick on ne3 proto tcp from any to any port 800 keep state
pass in quick on ne3 proto tcp from any to any port 800 keep state

pass out quick on ne3 proto tcp from any to any port http keep state
pass in quick on ne3 proto tcp from any to any port 800 modulate state flags S/SA


Fertig

Nun wie kann ich diese Firewall noch verbessern?
Ist es möglich einen Port nach der Filterung umzuleiten obohl sie transparent (also ohne NAT) arbeitet? Möchte nämlich eine Regel erstellen für den Port 445, die es mir erlaubt den https-Verkehr nur für einige Webseiten zuzulassen uznd anschließend umleiten auf den Port 800 des Proxy-Servers.

Hoffe ihr könnt mir helfen
MfG Stephan
 
Noch eine kleine Zusatzfrage:

Wenn ich diesen Eintrag vornehme:
pass out quick on ne3 proto tcp from any to any port 800 keep state
läßt dann die Firewall alle Anfragen raus oder nur die Anfragen über Port 800?

denn ohne Portangabe bewirkt keep state ja, dass jede Antwort auf ein rausgehendes Paket rein darf, oder? Will aber explizit nur den Port 800 und später 445 erlauben.
 
Ist es möglich einen Port nach der Filterung umzuleiten obohl sie transparent (also ohne NAT) arbeitet? Möchte nämlich eine Regel erstellen für den Port 445, die es mir erlaubt den https-Verkehr nur für einige Webseiten zuzulassen uznd anschließend umleiten auf den Port 800 des Proxy-Servers.
MfG Stephan

man pf.conf -> Schau' mal nach rdr-Rules. Die machen genau das, was Du möchtest. Diese funktionieren, im Gegensatz zu NAT, auch bei einer transparenten FW.
 
Noch eine kleine Zusatzfrage:

Wenn ich diesen Eintrag vornehme:
pass out quick on ne3 proto tcp from any to any port 800 keep state
läßt dann die Firewall alle Anfragen raus oder nur die Anfragen über Port 800?

denn ohne Portangabe bewirkt keep state ja, dass jede Antwort auf ein rausgehendes Paket rein darf, oder? Will aber explizit nur den Port 800 und später 445 erlauben.

??? Deswegen gibst Du ja den dst-port mit an. Alle Antwortpakete werden dann natürlich reingelassen. Alles andere macht doch auch keinen Sinn, oder?
 
ext_if="ne3"
int_if=re0"
lan_net="192.168.1.0/24"
loop="lo0"



scrub in all
block in all
block out all
set skip on lo0

pass in quick on re0
pass out quick on re0
block quick inet6

pass out quick on ne3 proto tcp from $lan_net to $proxy port 800 keep state
pass in quick on ne3 proto tcp from any to any port 800 keep state

pass out quick on ne3 proto tcp from any to any port http keep state
pass in quick on ne3 proto tcp from any to any port 800 modulate state flags S/SA

Deine Rules unten verstehe ich nicht ganz. Wenn ich es richtig verstanden habe, hast Du in etwa folgendes NW-Design mit der Default-Route zum Router:

Inet - <Router> / <Proxy> \ <Firewall> - LAN-Net

Dann würde ich mit folgenden Regeln anfangen:

Code:
ext_if="ne3"
int_if=re0"
lan_net="192.168.1.0/24"
proxy="PROXY-IP"
http_ports="{80 443}"
proxy_port="{800}"
set skip on lo0

scrub in all

rdr on $int_if proto tcp from $lan_net to any port $http_ports -> $proxy port $proxy_port

block all

pass quick on $int_if

pass out on $ext_if proto tcp from $lan_net to $proxy port $proxy_port flags S/SA keep state
 
erstmals danke für die antworten :)

habe nach deinen anregungen das openBSD System neu aufgesetzt

also zum netzwerkdesign:
ADSL Modem zum Proxy-Server zum OpenBSD-System (transparent)
und vom OpenBSD-System über einen Switch zu den Clients

habe nun auch die firewall regeln überarbeitet, es sollen ausschließlich
Pop3, SMTP, Proxy-Port 800 und HTTPS zugelassen werden:

ext_if="ne3"
int_if="re0"
local_net="192.168.1.0/24"
loop=lo0


scrub in all
block in all
block out all
block quick inet6
set skip on lo0

pass on re0

pass out on ne3 proto tcp from any to any port 800 keep state
pass on ne3 proto tcp from any to any port {110, 25}
pass quick on ne3 proto {tcp, udp} from any to any port domain


Soweit so gut :)
Gibt nur immer ein Problem:
Immer wenn ich ins Internet will bekomme ich einen DNS-Error, da der DNS-Server nicht gefunden wurde

Habe schon alles versucht weiß aber nicht mehr woran das liegt :)

Hoffe du/Ihr könnt mir da nochmals weiterhelfen :)
Danke im Voraus
 
die rule
pass on ne3 proto tcp from any to any port {110, 25}
koennte stoeren. "normaler" DNS lookup geht zwar ueber udp - aber wenn
dein ISP so "braindead" ist, dich per default auf tcp zurueckzuwerfen, koennte
das das problem sein.

Debug output needed:
tcpdump -ni n3 port 25
bei einem schlichtem nslookup/host/dig des hosts, der auch "ins internet" will.
 
Zurück
Oben