Firewall auf einem Router

Senf

Well-Known Member
Hallo miteinander ich bins mal wieder.
Ich habe da ein Problem mit meiner Firewall.
Ich habe FreeBSD 4.9 und verwende ipfw.
Mein FreeBSD Rechner ist aber gleichzeitig auch noch ein Router der zwei Netze verbindet.
Und auf diesem Rechner wollte ich nun meine Firewall aufsetzen.

Also das Netz sieht so aus:

Netz1 -----Frebsd(Frewall und Router)-----Netz2----Router----Internet

Mein firewallscript sieht so aus:

#!/bin/sh
#Regeln für Netzwerkkate xl0

fwcmd="/sbin/ipfw"
netxl0="192.168.1.0"
maskxl0="255.255.255.0"
ipxl0="192.168.1.2" #Netzwerkkarte zum Netz2

ipxl1="192.168.2.1" #Netzwerkkarte zum Netz1
maskxl1="255.255.255.0"
netxl1="192.168.2.0"


${fwcmd} add pass all from any to any via lo0
${fwcmd} add deny all from any to 127.0.0.0/8

${fwcmd} add pass tcp from any to ${ipxl0} 80
${fwcmd} add pass tcp from any to ${ipxl1} 80


Eigentlich wollte den http Port aufmachen. Doch der bleibt auch mit den beiden letzten Zeilen zu. Ich habe den Rechner auch schon ein paar mal neu gestartet.
Das einzige was funktioniert ist
${fwcmd} add pass all from any to any
Das bedeutet also, dass die Firewall läuft.
Ich vermute, dass ipfw Probleme hat, weil der Rechner auch noch ein Router ist.
Vielleicht kann man bei meinem speziellen Fall die Firewall nicht so konfigurieren.
Kann mir da einer weiterhelfen??

Danke schon mal im Voraus
 
Da du ja nichts stateful, filterst solltest du auch noch erlauben das Packete von deinem Rechner in die Welt duerfen.

Vieleicht so:
${fwcmd} add pass ip from me to any
 
mach mal ein keep-state hinter die regeln.
Code:
${fwcmd} add pass tcp from any to ${ipxl0} 80 keep-state
${fwcmd} add pass tcp from any to ${ipxl1} 80 keep-state

oder am ende.
Code:
${fwcmd} add pass tcp from any to any established

gruss mario

edit: verdammt zu langsam

edit 2: warum steht das unter: BSDForen.de > OpenBSD > OpenBSD - Netzwerk > Firewall auf einem Router ???
 
Ich habe keep-state am ende angehängt und auch
${fwcmd} add pass ip from me to any

Doch leider bleibt der Port 80 zu. Das meint auf jeden Fall nmap.
Und von aussen kann ich auch nicht auf http zugreifen.
 
@k33n

Das war ein Versehen, eigentlich wollte ich es unter FreeBDS reinknallen
ich tue das am besten mal. Also ich eröffne diesen Thread neu im FreeBSD teil
 
weil du von any nach ${ipxl0} und ${ipxl1} alles auf den port 80 zulässt.
Code:
${fwcmd} add pass tcp from any to ${ipxl0} 80 keep-state
${fwcmd} add pass tcp from any to ${ipxl1} 80 keep-state


du brauchst mehr was in der richtung
Code:
${fwcmd} add pass tcp from  ${Netz1} to any 80 keep-state


k33n
 
Ich denke, was Du willst, ist, dass DU aus Netz1 über den Router in Netz 2 surfen kannst, richtig?
Wenn dem so sist, dann brauchst Du genau die Regel, die k33n Dir genannt hat.
${fwcmd} add pass tcp from ${Netz1} to any 80 keep-state
Du musst dann aber auch darauf achten, dass Dein Router in Netz2 auch NAT für die Adressen aus Netz1 macht.

Gruß,

Ice
 
Genau, ich will vom Netz1 über Netz2 im Internet surfen. Ohne Firewall klappt das auch ganz gut. Aber sobald ich da den Firewall aktiviere geht nichts mehr.
Ich habe auf dem FreeBSD 4.9 auch NATD aufgesetzt.

Ich habe versucht euren Rat zu befolgen und habe folgende Zeile im Firewallrule File eingetragen:

${fwcmd} add pass tcp from 192.168.2.0 to any 80 keep-state

Das sollte jetzt eigentlich stimmen. Das 192.168.2.x Netz ist übrigens das Netz1.
Ich glaube irgendwie hat der Rechner Probleme die Packete weiter zu leiten.
Denn Dienste bei denen der Rechner nichts weiterleiten muss, kann ich durch den Firewall lassen. Wie zum Beispiel ssh.
 
Okey mein Fehler. Das hätte ich eigentlich merken müssen. Aber leider ist mein Problem damit noch nicht behoben. Aber ich habe was neues rausgefunden.

Wenn ich NATD im Firewall eintrage also so:
ipfw add divert natd all from any to any via 192.168.1.2
Dann kann ich mit meiner ssh Konsole zwar verbunden bleiben. Aber ich kann mich nicht mehr auslogen und danach wieder einwählen.

Hat das vielleicht etwas mit meinem Problem zu tun?
 
Okey, ich habe jetzt NATD rausgenommen. Und wenn ich jetzt aufs surfen will dann erzeugt der ipfw auch dynamische Regeln und so für Port 80.
Ich vermute nun, dass die Packete im Netz 2 hängen bleiben. Doch das ist doch ziemlich seltsam, da es doch ohne Fierwall auch klappt,
 
Okey hier ist der output.

00100 0 0 allow ip from any to any via lo0
00200 0 0 deny ip from any to 127.0.0.0/8
00300 8 320 allow tcp from 192.168.2.0/24 to any dst-port 80 keep-state
00400 0 0 allow tcp from 192.168.1.0/24 to any dst-port 80 keep-state
00500 0 0 allow tcp from 192.168.2.0/24 to any dst-port 22 setup
00600 67 6296 allow tcp from 192.168.2.0/24 to any dst-port 22 keep-state
00700 0 0 allow tcp from 192.168.1.2 22 to any
00800 0 0 allow tcp from 192.168.2.0/24 to any dst-port 68
00900 0 0 allow udp from 192.168.2.0/24 to any dst-port 68
01000 0 0 allow tcp from any 67 to 192.168.2.0/24
01100 0 0 allow udp from any 67 to 192.168.2.0/24
65535 89 21224 deny ip from any to any
## Dynamic rules (5):
00300 1 40 (0s) STATE tcp 192.168.2.6 4470 <-> 216.239.59.104 80
00300 1 40 (0s) STATE tcp 192.168.2.6 4478 <-> 216.239.59.99 80
00300 1 40 (0s) STATE tcp 192.168.2.6 4469 <-> 212.204.60.79 80
00300 1 40 (0s) STATE tcp 192.168.2.6 4471 <-> 212.204.60.79 80
00600 1 88 (1s) STATE tcp 192.168.2.6 4498 <-> 192.168.2.1 22

Also beim 2ten Router ist ein routing Pfad ins erste Netz eingetragen.
Meinst du mit NAT auf dem Router, dass ich die Ports zum FreeBSD Rechner mapen soll?

Oh da habe ich nicht richtig gelesen. ipfw sh wolltest du ja:

00001 24004 20035589 allow ip from any to any
00100 0 0 allow ip from any to any via lo0
00200 0 0 deny ip from any to 127.0.0.0/8
00300 0 0 allow tcp from 192.168.2.0/24 to any dst-port 80 keep-state
00400 0 0 allow tcp from 192.168.1.0/24 to any dst-port 80 keep-state
00500 0 0 allow tcp from 192.168.2.0/24 to any dst-port 22 setup
00600 0 0 allow tcp from 192.168.2.0/24 to any dst-port 22 keep-state
00700 0 0 allow tcp from 192.168.1.2 22 to any
00800 0 0 allow tcp from 192.168.2.0/24 to any dst-port 68
00900 0 0 allow udp from 192.168.2.0/24 to any dst-port 68
01000 0 0 allow tcp from any 67 to 192.168.2.0/24
01100 0 0 allow udp from any 67 to 192.168.2.0/24
 
Zuletzt bearbeitet:
also mit den regeln sollte es ja gehen.
wenn wir mal die 1. rule wegdenken.
kann es sein das da ne rule fuer die namesauflösung fehlt?

also sowas:
allow tcp from netz1 to $nameserver 53

k33n
 
Ja die erste Zeile ist nur drin, damit ich über den Server rauskomme.

Mmm ich habe das mal eingetragen.
Ich habe sogar für nameserver any eingesetzt damit das auch sicher funktioniert. Also so langsam glaube ich nicht mehr das es an den Regeln liegt.
Um im Internet zu surfen sollten doch langsam alle Ports offen sein.

Das einzige was Funktioniert, ist mit ssh auf den Server zugreifen. Ich denke der ipfw unterbindet irgendwie das Routen. Kann das sein?
 
@Senf

Deinen Regeln zufolge unterbindest Du das Routing nicht, sonst könntest Du auch kein SSH machen!

Ich denke, dass k33n auf der richtigen Spur ist, Du musst ja zum Surfen irgendeinen DNS nutzen!
Ich würde vorschlagen, dass Du port 53 auf Deinen Internet-Router freischaltest und den dann als Nameserver auf Deinen Clients in Netz2 einträgst.
Probier doch mal einen nslookup! WEnn das geht, weißt Du zumindest, dass es am DNS nicht liegen kann.

Gruß,

Ice
 
ok.

dann lass uns mal weiter knobeln

mach mal als regeln dazu.
allow tcp from netz1 to $nameserver 53
allow udp from netz1 to $nameserver 53

ich hatte die udp regel vergessen.

k33n
 
okey das habe ich gemacht.
Und um sicher zu gehen, dass ich auch den rechten namserver habe, hab ich einfach mal alles von netz1 to any freigegeben.

Apropo: nslookup schlägt tatsächlich Fehl.
Was aber komisch ist, denn ohne firewall kann ich einfach ping www.google.ch oder so eingeben und es funktioniert. Also werden die namen doch richtig aufgelöst oder.
 
@Senf

Lässt dann wohl darauf schließen, dass der Paketfilter die NDS-Pakete blockt!
Du brauchst übrigens für den DNS "nur" UDP - kein TCP freigeben!

Wie sieht es mit dem nslookup nach setzen der von k33n genannten Regeln aus?
 
Zurück
Oben