Firewall Regeln - Verständnis Problem - VLANs



  • Hi Leute….

    Ich habe nen kleines Problem, was die Firewallregeln und Bezeichnung der Netze bei der pfSense angeht.
    Wir haben hier ein kleines Testnetzwerk mit 5 VLANs aufgebaut.
    Dieses ist halt wirklich nur nen kleiner Test. Das spätere Endresultat beherbergt ca. 200 VLANs.

    VLAN10 Admin Netz
    VLAN20 Client Netz
    VLAN30 Server
    VLAN40 NetzwerkManagment
    VLAN50 Server Management

    Folgendes soll realisiert werden:

    VLAN 10 -> Darf alles (Kein Problem)
    VLAN 20 -> Darf ins Internet und Zugriff auf VLAN30
    VLAN 30 -> Darf ins Internet(BEstimmte Ports)
    VLAN 40 -> Darf nichts
    VLAN 50 -> Darf nichts.

    Das Problem auf das ich gestoßen bin ist nun folgendes:
    Ich bin davon ausgegangen, das "WAN net" das Internet darstellt und "Any" einfach alles bedeutet.
    Das ist aber leider Falsch.... "WAN net" ist das Subnetz was am WAN interface anliegt und Any quasi alles + Internet.

    Um das VLAN20 nun ins Internet zu bewegen, muss ich "ANY" eintragen.
    Hierdurch bekommt das VLAN 20 ja auch zugriff auf die anderen VLANs.

    Gibt es eine Möglichkeit das ganze zu unterbinden ohne vorher entsprechende Blockregeln zu setzen?
    Für das kleine Testnetz, ist das einfügen der Zusätzlichen Blockregeln kein Problem.
    Aber später für den Produktivbetrieb wäre es ein riesen Overhead für jedes VLAN die entsprechenden Regeln zu pflegen.

    Gäbe es jemanden mit einer Zündenden Idee?

    Viele Grüße,

    Matthias



  • Servus

    Hier ein grobes Beispiel wie es funktionieren würde.
    An dem WAN Interface musst du nix eintragen, zumindest solange du kein Zugriff vom Internet auf irgendein LAN Netz benötigst. (Portforwarding)

    Alles andere wird auf den LAN Interfaces eingestellt. Eine "Deny Any Any" Regel wird nicht benöigt, da die per Default am Schluss an das Regelwerk bzw. ACL angehangen wird. (Nicht Sichtbar)
    Es sei denn du willst diese Verbote nicht im Log sehen, dann kannst du eine "Deny Any Any" Regel ohne Log erstellen.
    Das "Nicht Loggen" geht aber auch Global für jedes Interface unter Logging.

    Ich hoffe, ich konnte dir damit weiterhelfen…

    Int Vlan10(LAN):

    Rule/Prio 1: Allow any any

    Int Vlan20(OPT1):

    Rule/Prio 1 Block "Vlan20net" > "ForbiddenNetwork1"
    Rule/Prio 2 Allow "Vlan20net" > any

    Int Vlan30(OPT2):
    Rule/Prio 1 Block "Vlan30net" >  "ForbiddenPrivateNetwork"
    Rule/Prio 2 Allow "Vlan30net" >  any : <bestimmte ports="">Int Vlan40(OPT3) und 50(OPT4)
    Muss man nix eintragen, da per Default alles ausgehend geblockt ist.

    Alias "ForbiddenNetwork1":
    "Vlan10net", "Vlan40net", "Vlan50net"

    Alias "ForbiddenPrivateNetwork":
    10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16</bestimmte>


  • LAYER 8 Moderator

    Da würde ich rubinho ein klein wenig widersprechen, denn das wird nach der Frage von Matthias zu komplex zu pflegen (gerade das ForbiddenNetwork1).

    Wenn ihr VLANs definiert: wie habt ihr die IP Netze dazugelegt? Im Normalfall würde ich vermuten, dass man sich dann ein 10er oder 172er Bereich vornimmt und die VLANs da reinmatcht.

    Beispiel:

    VLAN 10 -> 10.0.10.0/24
    VLAN 20 -> 10.0.20.0/24
    VLAN 120 -> 10.0.120.0/24
    etc

    Damit hätte man recht einfach ein Alias "N_AllVLANs" welches man schlicht auf Network 10.0.0.0/8 setzen kann.

    Das hätte zur Folge, dass dein Regelset recht einfach wäre:

    VLAN 10 -> Darf alles (Kein Problem)
    Any Regel

    VLAN 20 -> Darf ins Internet und Zugriff auf VLAN30
    Allow from VLAN20_net to VLAN30_net    # erlaube VLAN30
    Block from VLAN20_net to N_AllVLANs    # alle anderen VLANs blocken, dass hier VLAN30 enthalten ist, ist egal, da es obendrüber explizit erlaubt wird
    Allow from VLAN20_net to any                  # danach erlaube das Internet

    VLAN 30 -> Darf ins Internet(BEstimmte Ports)
    Block from VLAN30_net to N_AllVLANs                          # alle VLANs blocken
    Allow from VLAN30_net to any Port P_VLAN30Ports    # danach erlaube das Internet mit entsprechenden Ports

    VLAN 40 -> Darf nichts
    Nichts eintragen -> alles wird geblockt (nur warum liegt das Netz dann überhaupt auf der Firewall/Gateway System auf? dann braucht es ja auch kein Gateway wenn eh nichts erlaubt ist?)

    VLAN 50 -> Darf nichts.
    dito oben

    So sollte sich das sehr einfach handeln lassen und auch bei mehr VLANs muss das Alias "N_AllVLANs" nicht angepasst werden, da es "gierig" genug konfiguriert ist auch zukünftige Netze zu blocken. Somit muss bei einem neuen VLAN nur noch die Block Regel für die anderen VLANs und ein Allow für das was es darf konfiguriert werden und das hängt ja vom Einzelfall ab.

    Grüße
    Jens



  • Wo du Recht hast, hast du Recht ;)

    Wenn die Anzahl der verbotenen Vlans größer wird, wird der administrative Aufwand bei meinem groben Beispiel natürlich unötig groß.

    Solange die Anzahl der erlaubten Vlans geringer ist als die der Verbotenen (Davon gehen wir mal aus) ist es besser alle privaten Netzranges zu blocken und die anderen explizit zu erlauben.

    Also ein Alias "AllowedPrivateNetwork_vlan20" (wenn es mehr als ein Netz sein wird) wo alle erlaubten Netwerke für das Vlan 20 reinkommen und ein ForbiddenPrivateNetworks" wo generell alle Privaten Ranges geblockt werden.

    Die Logik der Pfsense sollte aber somit grundsätzlich erklärt sein. Alles Weitere ist feintuning.


  • LAYER 8 Moderator

    Da stimme ich natürlich zu ;)



  • Man konnte vielleicht auch alle nicht-erlaubte VLANs in ein Alias aufnehmen, mit NOT in die Regeln(?)


  • LAYER 8 Moderator

    @Mr Jingles: Richtig, aber dann muss jedes neu angelegte VLAN da mit hinein. Geht natürlich auch, ist aber ein Handgriff mehr. Wenn aber alle Netze aus bpw. dem 10/8er Segment rausgeschnitten werden, kann man auch gleich 10/8 blocken und als !(not) mit in die Regel aufnehmen.

    Also als Destination nicht (any), sondern !Net_alias erlauben, damit könnte man evtl. die vorherige Blockregel sogar einsparen.

    Danke für den Hinweis :)



  • @rubinho:

    Es sei denn du willst diese Verbote nicht im Log sehen, dann kannst du eine "Deny Any Any" Regel ohne Log erstellen.
    Das "Nicht Loggen" geht aber auch Global für jedes Interface unter Logging.

    Das lässt sich auch in den Log-Settings einstellen.



  • @viragomann

    Das steht doch schon in meinem von dir zitierten Text mit drin, dass man das Logging global einstellen kann.

    Ich habs z.b. generell abgeschaltet und logge mit einer "Deny any any log" Regel zu Diagnostik Gründen auf einem bestimmten IF.


Log in to reply