Firewall mit ipfw

Berufspenner

Well-Known Member
Hi@all

Ich hoffe, dass mein Anliegen hier rein passt.

Ich würde gerne meinem FreeBSD Server ne Firewall verpassen. Da ich bezüglich ipfw aber nicht wirklich fit bin brauche ich Hilfe. Hier mal mein Ansatz:
Code:
# xl = lokale NIC
# tun0 = ppp (pppoe) Device

# NATd erlauben
ipfw add 10 divert natd all from any to any via tun0

# Alle lokalen Verbindungen erlauben
ipfw add allow tcp from me to any out via lo0 setup keep-state
ipfw add deny tcp from me to any out via lo0
ipfw add allow ip from me to any out via lo0 keep-state

# Alle Daten durch localhost und der NIC erlauben
ipfw add allow ip from any to any via lo0

# Alles über dieses Interface wird erlaubt
ipfw add allow ip from any to any via xl0

# Alle Verbindungen welche von hier initialisiert werden erlauben
ipfw add allow tcp from any to any out xmit tun0 setup

# Verbindung offen halten, wenn offen
ipfw add allow tcp from any to any via tun0 established

# Bestimmte ICMP Pakete erlauben (z.B. fuer Ping)
ipfw add allow icmp from any to any icmptype 3,4
ipfw add allow icmp from any to any out icmptype 8
ipfw add allow icmp from any to any in icmptype 0

# allow https from net
# von aussen kann Port 443,80,25,110,143 erreicht werden

ipfw add pass tcp from any to tun0 443

ipfw add allow tcp from any to tun0 80

ipfw add allow tcp from any to tun0 25

ipfw add allow tcp from any to tun0 110

ipfw add allow tcp from any to tun0 143

# Zum Schluss alles andere verbieten
ipfw add 65534 allow ip from any to any
Im Grunde genommen möchte ich folgendes:

- Alle Anfragen vom LAN ins Internet durchlassen bzw. evtl. nur bestimmte Ports zulassen.

- Alle Dienste auf dem Server vom LAN erreichbar lassen

- Port 21,(evtl. 22),25,80,110,143,443 von außen zulassen

- Donkey Ports an internen Rechner forwarden (natd)

- und alles andere von außen geblockt werden.

So, ich denk das ist es erstmal.

Cu
André
 
# NATd erlauben
ipfw add 10 divert natd all from any to any via tun0

# Alle lokalen Verbindungen erlauben
ipfw add allow tcp from me to any out via lo0 setup keep-state
ipfw add deny tcp from me to any out via lo0
ipfw add allow ip from me to any out via lo0 keep-state
Es macht wenig Sinn auf lo0 zu filtern. Eigentlich sollten alle Verbindungen localhost<->localhost erlaubt werden!

allow ip from any to any via lo0

Du suchst wohl eher sowas:

deny ip from any to 127.0.0.0/8
deny ip from 127.0.0.0/8 to any

# Alle Verbindungen welche von hier initialisiert werden erlauben
ipfw add allow tcp from any to any out xmit tun0 setup

# Verbindung offen halten, wenn offen
ipfw add allow tcp from any to any via tun0 established
Die solltest du genau umdrehen. Dann sparst du naemlich bei "established" Verbindungen einen Regelvergleich. Ausserdem

# allow https from net
# von aussen kann Port 443,80,25,110,143 erreicht werden
ipfw add pass tcp from any to tun0 443
ipfw add allow tcp from any to tun0 80
ipfw add allow tcp from any to tun0 25
ipfw add allow tcp from any to tun0 110
ipfw add allow tcp from any to tun0 143
Warum machst du oben einen auf "Stateful", verwendest dies jedoch nicht hier?

ipfw add pass tcp from any to me 25,80,110,143,443 via tun0 setup

# Zum Schluss alles andere verbieten
ipfw add 65534 allow ip from any to any
Verbieten.... soso.
 
falscher Ansatz

Tut mir leid wenn ich dir jetzt sage, das dir kaum einer weiter helfen kann/wird...
Denn es fehlen wohl einige Angaben.
Ist die Unterstützung für ipfw im Kernel drinn (neu compiliert)?
Was steht in der rc.conf disbezüglich?
Wie sieht deine natd.conf aus?

Ich schlage vor das du dir mal eines der echt guten HowTo's dazu anschaust, die es hier im Forum gibt:
http://www.bsdforen.de/forums/forumdisplay.php?s=&forumid=26
Wenn dann bestimmte Verbindungen nicht funktionieren oder noch Fragen sind, ist es auch mit der Analyse und Fehlersuche einfacher.

# allow https from net
# von aussen kann Port 443,80,25,110,143 erreicht werden

ipfw add pass tcp from any to tun0 443

ipfw add allow tcp from any to tun0 80

ipfw add allow tcp from any to tun0 25

ipfw add allow tcp from any to tun0 110

ipfw add allow tcp from any to tun0 143
Da fehlt meines wissens überall noch die destinationIP, also
ipfw add pass tcp from any to any via tun0 443

Gruss
 
Zuletzt bearbeitet:
Original geschrieben von Berufspenner
Wie 'umdrehen'?

Die eine Regel vor die andere setzen. Du willst tcp-streams, die schon bekannt und established sind erlauben (allow tcp blah established) und fall sich noch nicht established sind, willst du sie auf deine ports 25,80,433 beim setup-schritt erlauben.

#bereits bekannte tcp-verbindungen (stateful) erlauben
allow tcp from any to any established

#Ausgehende TCP Verbindungen und UDP Pakete erlauben
allow tcp from any to any out via tun0 setup keep-state
allow udp from any to any out via tun0

#Eingehende TCP Verbindungen auf bestimmte Ports:
allow tcp from any to me 80,110,443 in via tun0 setup keep-state

Edit: keep-state vergessen
 
Zuletzt bearbeitet:
Hi@all

Sorry, dass ich mich nicht mehr gemeldet habe :( Also, ich habe die Ergebnisse aus diesem Thread mal übernommen und bis jetzt scheint alles so zu klappen, wie ich es wollte :D Ich lasse zum testen immer mal folgenden Trojaner Scanne ablaufen. Es ist zwar nicht der Supertest, aber dennoch ganz brauchbar. Zumindest erkenne ich immer ob die Firewall bzw. der Packetfilter richtig läuft, wenn sich der Schritt 3 die Zähne ausbeist und ewig lange brauch :D Danke für die Hilfe.

Cu
André
 
Zurück
Oben