ipfw - was gut was schlecht

Flex6

Well-Known Member
Gestern hab ich mir für FreeBSD mal eine Firewall mit ipfw gezimmert, muß ehrlich schreiben bin kein von pf oder ipfw oder ipfilter und benutz lieber was fertiges. Naja was sein muß muß sein und hab eine mit ipfw gebastelt, im Kernel steht nur:
options IPFIREWALL #
options IPFIREWALL_VERBOSE #
options IPFIREWALL_VERBOSE_LIMIT=256 #
also ACCEPt hab ich weggelassen und von Haus aus steht alles auf deny. Limit ist eventuell etwas mau aber egal.

ipfw.rules sieht so aus:

IPF="ipfw -q add"
ipfw -q -f flush
oif="vr0"
iif="vr0"

$IPF 65535 deny ip from any to any

# loopback
$IPF 10 allow all from any to any via lo0
$IPF 20 deny all from any to 127.0.0.0/8
$IPF 30 deny all from 127.0.0.0/8 to any
$IPF 40 deny tcp from any to any frag

# statefull
$IPF 50 check-state
$IPF 60 allow tcp from any to any established
$IPF 70 allow all from any to any out keep-state
$IPF 80 allow icmp from any to any
$IPF 100 pass ip from any to any verrevpath

# open ports 21,25,80 etc
$IPF 110 allow tcp from any to any 21 in
$IPF 120 allow tcp from any to any 21 out
$IPF 130 allow tcp from any to any 25 in
$IPF 140 allow tcp from any to any 25 out
$IPF 150 allow tcp from any to any 443 in
$IPF 160 allow tcp from any to any 443 out
$IPF 200 allow tcp from any to any 80 in
$IPF 210 allow tcp from any to any 80 out
$IPF 220 allow tcp from 192.168.1.0/24 to any 10000 in
$IPF 230 allow tcp from 192.168.1.0/24 to any 10000 out
$IPF 240 allow tcp from any to any 20000 in
$IPF 250 allow tcp from any to any 20000 out
$IPF 260 allow tcp from any to any 8080 in
$IPF 270 allow tcp from any to any 8080 out
$IPF 280 allow tcp from any to any 587 in
$IPF 290 allow tcp from any to any 587 out

# portscanning
$IPF 600 deny log logamount 50 ip from any to any ipoptions rr
$IPF 610 deny log logamount 50 ip from any to any ipoptions ts
$IPF 620 deny log logamount 50 ip from any to any ipoptions lsrr
$IPF 630 deny log logamount 50 ip from any to any ipoptions ssrr
$IPF 640 deny log logamount 50 tcp from any to any tcpflags syn,fin
$IPF 650 deny log logamount 50 tcp from any to any tcpflags syn,rst

# dos-atacke
$IPF 1500 allow icmp from any to any icmptypes 3
$IPF 1510 allow icmp from any to any icmptypes 4
$IPF 1520 allow icmp from any to any icmptypes 8
$IPF 1530 allow icmp from any to any icmptypes 0
$IPF 1540 allow icmp from any to any icmptypes 11 in

# spoofing
$IPF 1550 deny all from inet to any in via ${oif}
$IPF 1560 deny all from onet to any in via ${iif}


# log
$IPF 256 deny log all from any to any

so funktioniert die Firewall. Anliegen ist mehr was ist eventuell Mißt oder kann man verbessern. Netzwerkinterface ist nur eins, vr0, der Rechner mit FreeBSD steht hinter einem Hardwarerouter imLan .
ipfw wird übrigens mit ipfw_enable="YES" und zweiter Eintrag firewall_enable="YES" gestartet.
So und jetzt zu den Vorschlägen. bitte bitte
 
Sehr verwirrend ist, dass du ipfw verwendest und die Variable $IPF genannt hast.
IPF steht für ipfilter, ipf(8).
 
$ sind symbolische Zeichen, es könnte auch $cmd oder so heisen wie im Handbuch beschrieben oder dem orginalen rc.firewall script.
 
Das weiss ich, aber es verwirrt doch etwas.
Du schriebst ja auch nicht $IPTABLES. ;-)
 
okay, habs jetzt selbst auch geändert von:
IPF="ipfw -q add" in: fwcmd="ipfw -q add"
$IPF in ${fwcmd}
 
Leider kann ich meinen Thema 1 nicht mehr ändern der korrigieren bzw. löschen. Das Skript ist für das Hinterteil und falls jemand auf die Idee kommt es per Copy&Paste zu benutzen fällt damit auf die Nase und wiegt sich in verkehrter Sicherheit. Hab mich selbst zu sehr vom orginalen rc.firewall und diversen Seiten bzw. Vorlagen in Netz irritieren lassen.
 
Hallo Flex6,
So und jetzt zu den Vorschlägen. bitte bitte
naja, das is schwer, wenn man nich so richtig weiß was die Frewall machen soll.
Macht ja schon nen ziemlichen Unterschied jenachdem wofür Du Dein System nutzen willst.
Ich hab meins als reines Dektop-System eingerichtet und nutze das rc.firewall Script (mit leichten Veränderungen) im Clientmodus. Die vielen 'allow...in' Einträge in Deinem Script wären in meinem Fall ne Einladung für jeden Bösebub. Also ich bin absolut kein Fachkundiger aber die 'man ipfw(8)' gibt wirklich guten Einblick was man alles machen kann (auch wenn ich beim ersten mal durchlesen nicht viel kapiert hab :confused: )

Gruß
 
Ich arbeite daran.
Der Fehler liegt, das die Portregeln übergangen werden und das Ding offen wie ein Scheunentor ist. Es sind noch mehr Fehler drin....naja
 
hi

wozu braucht man ne firewall auf nen desktop ?

richtig eingerichtet listen nicht ein einziger service auf irgendwas
und wenn dann auf localhost.

holger
 
Ja neee, ist klar. Wenn nichts nach außen lauscht, wie sollen dann so Nebensächlichkeiten wie Synergy+ funktionieren? Vielen setzen den Musicpd ein, der lauscht ebenfalls. Und X.org das Lauschen abzugewöhnen ist eine interessante Aufgabe. SSH-Zugriff will man meist auch noch haben... Und am Internetzugang selbst zu filtern ist schnell sehr unpraktisch, gerade wenn man aus Gründen der Praktikabilität wie ich hier öffentliche Adressen auf den Workstations liegen hat. Man besitzt schließlich genug davon, also kann man sie auch nutzen. Da sind spezialisierte Filterscripte sehr sinnvoll, vor allem da ich eh einen Paketfilter für Jails und so brauche.
 
Ich hab schon mehrere neue geschrieben, ja nicht lachen weil alleine die Definition und auch der Aufbau variieren können und das jetzige funzt sehr gut. xorg hab ich gesperrt und es gibt auch Regeln die 65535 betreffen, zwecks Kernel. Lustige , es gibt eine wipfw für windows und ein gui zum erstellen der Regeln und das läuft auch unter wine.
 
so heißt das Ding auch, ich hab nur Konsole und da kam das es unter wine läuft sehr praktisch.
# Anfang-- auch für Windows
# First flush the firewall rules
ipfw -f flush

# Localhost rules
ipfw add 100 allow log all from any to any via lo0

# Prevent any traffic to 127.0.0.1, common in localhost spoofing
ipfw add 110 deny log all from any to 127.0.0.0/8 in
ipfw add 120 deny log all from 127.0.0.0/8 to any in

###################################################################################################################
#Testing rules, to find ports used by services if we aren't sure.
#These rules allow ALL traffic to pass through the #firewall, disabling any subsequent rules
##add 140 allow log logamount 500 tcp from any to any
##add 150 allow log logamount 500 udp from any to any
####################################################################################################################

# Interface ist vr0, Name anpassen
ipfw add 300 check-state
ipfw add 310 deny log tcp from any to any established
ipfw add 320 allow log tcp from me to any out via vr0 setup keep-state
ipfw add 330 allow log udp from me to any out via vr0 keep-state
ipfw add 340 deny log udp from any to any
ipfw add 350 deny log tcp from any to any frag

# einen Port aufmachen, logo Raute raus
#ipfw add 500 allow log tcp from any to me 22 in via vr0 setup keep-state


# Nur unter Free-BSD--bei Windows raus
ipfw add 980 deny log tcp from any to any 23,6000-6063 out

ipfw add 9998 deny log tcp from any to any
ipfw add 9999 deny log udp from any to any
ipfw add 10000 deny log ip from any to any
ipfw add 65000 deny log ip from any to any
ipfw add 65535 deny log ip from any to any
# Ende

script chmod 0600 geben

Ich benutze übrigens auch D-Link

http://www.heise.de/security/meldung/Versteckter-Administrator-Zugang-auf-D-Link-Routern-900341.html
http://www.heise.de/newsticker/meld...cherheitsloch-auf-einigen-Routern-907216.html


o
 
also was mir grad so auffällt
ipfw add 120 deny log all from 127.0.0.0/8 to any in
das 'in' is wohl'n Versehn.
# einen Port aufmachen, logo Raute raus
#ipfw add 500 allow log tcp from any to me 22 in via vr0 setup keep-state
Regeln können auch im laufenden Betrieb hinzugefügt / gelösxht werden.
naja und dann noch
ipfw add 10000 deny log ip from any to any
ipfw add 65000 deny log ip from any to any
ipfw add 65535 deny log ip from any to any
wozu die Wiederholungen, und Regel 65535 ist eh festgelegt bzw kann nur Kernelseitig geändert werden soweit ich das verstanden hab.
Haste die Regeln ma getestet, auf so 'ner Portscanseite (GRC, oder Heise oder so)?
Gruß...
 
Auf Zeile 110 und 120 Angabe "in" oder auch "out" ist bißchen Schwachfug und kann es einfach auf 127.0.0.8 to any begrenzen. Es ist aber egal ob bei 120 in oder out steht, es hat die gleichen Effekt.
Die Wiederholung betrifft eventuelle Probleme mit kernel und ipfw, unter Umständen zählt ipfw nicht bis 65535 und sollte falls dieser Umstand eintreten sollte zumindest wie im orginalen rc.firewall script bis 65000 zählen. Aber mann kann dieses Probs schon vorher abfangen und normal fängt Zeile 9998 schon alles ab. Das Probs wwird wohl keiner erleben und ist mehr Server.- oder Routerprobs.
fliegender Wechsel von Ports .....okay
 
Ja neee, ist klar. Wenn nichts nach außen lauscht, wie sollen dann so Nebensächlichkeiten wie Synergy+ funktionieren? Vielen setzen den Musicpd ein, der lauscht ebenfalls. Und X.org das Lauschen abzugewöhnen ist eine interessante Aufgabe. SSH-Zugriff will man meist auch noch haben... Und am Internetzugang selbst zu filtern ist schnell sehr unpraktisch, gerade wenn man aus Gründen der Praktikabilität wie ich hier öffentliche Adressen auf den Workstations liegen hat. Man besitzt schließlich genug davon, also kann man sie auch nutzen. Da sind spezialisierte Filterscripte sehr sinnvoll, vor allem da ich eh einen Paketfilter für Jails und so brauche.


naja bei x heist der parameter -nolisten.bei ssh lasse ich das log lieber ueberwachen
und reagiere dynamisch auf das was dort passiert , ok da wuerde ich ich als letzte
massnahme auf ne fw zurueck greifen aber nen host deny tut da auch.

und wenn ich das ruichtig gelesen habe ist synergy+ nix anderes an nen konslen
umschalter den ich dann als physische hardware kaufen wuerde als das ich das
via netz machen.
naja es kommt immer darauf an wie man sein system nutzt habe ich nur diesen einen pc zuhause brauche ich keine dienste die via netz service sharen
ergo brauche ich auch nix was listen.

holger
 
Zurück
Oben