pf DSL Firewall

Breiti

Well-Known Member
hallo,
aufgrund der schönen möglichkeiten mit tables arbeiten zu können, und der
möglichkeit max-src-conn-rate nutzen zu können möchte ich von ipfw auf pf
umsteigen. ich habe schon eine ganze weile ipfw laufen und war erstmal ein
bissel verwirrt als ich mir das tutorial auf openbsd.org durchgelesen habe.
ich habe anhand der beispiele einiger seiten eine pf.conf zusammen gebastelt.
ich habe aber irgendwie ein dummes gefuehl, das das nicht wirklich wasserdicht
ist. bei ipfw kann man schön im /var/log/security sehen was geht,
tcpdump -nvi pflog0 beruhigt mich dabei nicht. ich habe 6 rechner im 192.168.0.0/24
netz. der server soll sich ins internet per ppp einwählen und pf sollte nat
übernehmen. ppp ist fertig und funktioniert ja schon seit jahren. ipfw ausgeschaltet,
natd ausgeschaltet, pf aktiviert und ..... hmmm, weiss nciht ob das script hier reicht.
ein paar ports sollen nach innen möglich sein. games von den windoesen sollten
funktionieren. ach ja, das DSL Firewall howto hier im forum finde ich zu alt ium ihm zu vertrauen :)

hier das pf.conf file

PHP:
ext_if          = "tun0"
int_if          = "em0"
int_net         = "{ 192.168.0.0/24 }"
tcp_ports       = "{ 80223,80810 }"  # teamspeak tut nur wenn der entsprechende port auf ist
udp_ports       = "{ 80223,80810 }"

# Keine Rueckmeldung bei Blockierungen
#set block-policy drop
set loginterface $ext_if
set optimization aggressive

# Normalisierung
scrub in on $ext_if all fragment reassemble random-id

# NAT aktivieren
nat on $ext_if from $int_net to any -> $ext_if static-port

# Standardmäßig alles verbieten
block drop in on $ext_if all
block drop out on $ext_if all

# Über Loopback alles durchlassen
pass quick on lo0 all

# Erschwert scannen mit nmap und co.
block in log quick on $ext_if inet proto tcp from any to any flags FUP/FUP
block in log quick on $ext_if inet proto tcp from any to any flags SF/SFRA
block in log quick on $ext_if inet proto tcp from any to any flags /SFRA

# Schutz gegen gefälschte Adressen für interne Interfaces aktivieren
antispoof log quick for $ext_if inet

# Blockiere den externen Verkehr mit privaten Adressen
block drop in  log quick on $ext_if from $int_net to any
block drop out log quick on $ext_if from any to $int_net

# TCP, UDP und ICMP über das externe Interface erlauben und
# Zustand von UDP bzw. ICMP und modulierten Zustand von TCP merken
pass out on $ext_if proto tcp all modulate state flags S/SA
pass out on $ext_if proto { udp, icmp } all keep state

# Öffnen der erlaubten Ports und protokollieren der Verbindungen
pass in on $ext_if proto tcp from any to ($ext_if) port $tcp_ports
pass in on $ext_if proto tcp from any to ($ext_if) port $udp_ports

was muss oder sollte ich aendern fuer ne gut funktionierende FW, will anschliessend
die max-src-conn-rate z.B. fuer ssh einbauen.

gruss Breiti
 
Code:
# Öffnen der erlaubten Ports und protokollieren der Verbindungen 
pass in on $ext_if proto tcp from any to ($ext_if) port $tcp_ports 
pass in on $ext_if proto tcp from any to ($ext_if) port $udp_ports

da wird aber nichts gelogt wie es im komment steht
und beide rules sind die selben (TCP), und nen state eintrag würde ich noch hinzufügen mit flags wie du es bei den ausgehenden verbindungen gemacht hast

übrigens wen modulate state nicht geht (bei udp z.b.) macht er fallback auf keep state

UPDATE: bei dem ports oben ... ich habe es erst nicht gesehen aber ports gehen doch nur bis 65536
 
Zuletzt bearbeitet:
Zurück
Oben