Benutzer-Werkzeuge

Webseiten-Werkzeuge


de.bkp:intern:dokumentationen:pfsense-rule-system

pfSense Rules Struktur

Version Status Datum Autor:in URL
0.1 Erster Entwurf 30.Mär.2023 Fabio Pagotto
1.0 Review und Freigabe 30.Mär.2023 Fabio Pagotto

1. Kurzfassung

Diese Dokumentation beschreibt das neue Rule System auf der pfSense.

Es enthält:

  • Kurzbeschreibung über Floating, Interface Groups und Alias
  • Beschreibung des Aufbaus der Internen-Rule Struktur
  • Beschreibung des Aufbaus der OpenVPN Rule Struktur

2. Tutorials

2.1. Kurzbeschreibung wichtiger Elemente in der pfSense

Bevor sie über die Rulestruktur lernen, sollten sie sich zuerst mit wichtigen Funktionen der pfSense vertraut machen.

Interface Rules

Diese werden in den meisten fällen angewendet. Sie können auf einem Interface erstellt werden, und z.B. die Verbindung von Interface-A und B entweder Blockieren oder erlauben.

Auch kann mit der Option Single host or alias die Verbindung zu oder von einer Spezifischen IP-Adresse eines Geräts (diese sind gennant Hosts) erlaubt oder blockiert werden.

Bei Netzwerken mit z.B. vielen VLANs, kann dies jedoch schnell unübersichtlich werden. Deshalb gibt es dafür möglichkeiten mit den unten beschriebenen Funktion die benötigten rules zu verkürzen.

Alias

Ein Alias ist, eine möglichkeit mehrere Hosts in eine Gruppe zu bündeln, wenn z. B. mehrere Benutzer, aber nicht alle, von Interface-A nach B müssen, damit dafür nur eine Rule Benötigt wird.

Das Erstellen eines Alias läuft wie folgt, Bei der Erstellung wird der Typ Host ausgewählt, anschliessend werden alle IP-Adressen der Hosts eingetragen. Der Alias kann danach bei einer rule mit der Option Single Host or alias ausgewählt werden. Dafür muss der Name des Alias angegeben werden.

Auch kann beim Typ die Einstellung Network(s) ausgewählt werden. Bei dieser Opion, kann stattdessen die Netzwerk-CIDR-notation der Einzelnen VLANs eingetragen werden (die CIDR-notation sieht z. B. bei VLAN10 so aus: 172.16.10.0/24). Damit kann eine rule erstellt werden, die gleichzeitig für mehrere VLANs gilt.

Dies ist vor allem nützlich, wenn mit Interface Groups und OpenVPN gearbeitet wird, was in dieser Doku später behandelt wird.

Interface Group Rules

Eine Interface Group ist ein erstellbares Interface, das nicht aus einem VLAN oder einem Port besteht, sondern als eine Gruppe, bei der mehrere Interfaces Mitglied sein können.

Interface Groups sind dafür geeignet, wenn z. B. viele Interfaces auf ein einziges oder dieselben Interfaces zugreifen müssen. Die nötigen Rules müssen dadurch nur Einmahl erstellt werden. Dafür werden meistens die Aliasse in denen Network(s) eingetragen sind, benötigt.

Interface Group Rules stehen über den normalen Interface Rules. Dies bedeutet, dass wenn auf den Group rules etwas blockiert wird, kann es über normale Interface Rules nicht erlaubt werden, und umgekehrt.

Floating rule

Eine Floating rule ist eine rule, die auf dem Tab Floating erstellt werden kann. Sie unterscheidet sich folgendermassen von den anderen Rule-typen.

Wenn eine Rule erstellt wird, kann ausgewählt werden, für welche Interfaces die Rule gilt.

Ausserdem stehen die Floating rules, sowohl über den normalen Interface rules, als auch über den Group rules. Jedoch nur bei den Interfaces, die bei einer Floating rule ausgewählt wurden. Diese Rules können danach nicht über Group rules oder Interface rules umgangen werden.

Floating rules sind am besten geeignet, wenn rules benötigt werden, die entweder nicht über normale interface rules oder Group rules erstellt werden können. Da es mit Floating rules Schnell unübersichtlich werden kann, sollten auf diese so gut wie möglich verzichtet werden.

2.2 Aufbau der Rafisa internen Rule Struktur

Mit den oben genannten Informationen sind Sie mit dem nötigen Wissen ausgerüstet, um die Rule Struktur der Rafisa kennenzulernen. Unten folgt nun die Beschreibung der Anwendung der Rule-Struktur.

Zuerst werden hier die internen Rules der Firewall beschrieben.

VLAN 1 und 21

VLAN 1 und 21 können auf alle VLANs, mit ausnahme von VLAN 90 und 91 zugreifen. VLAN 21 darf dazu nicht auf VLAN 1 zugreifen.

Bei Beiden VLANs sollte deshalb die Rule VLAN01/21 → any gemacht werden. Für VLAN 21 muss zusätzlich noch eine Block Rule in Richtung von VLAN 1 gemacht werden.

Dies sollte danach so aussehen:

VLAN 1











VLAN 21


VLAN 90 und 91

VLAN 90 und 91 dürfen von keinem VLAN erreicht werden, wie auch umgekehrt. Einzig gewisse Users dürfen auf VLAN 91 zugreifen.

Dafür wird am besten eine Interface Group erstellt. In dieser sollten alle Interfaces Mitglied sein, ausser VLAN 90/91 selbst.

Danach sollten zwei Block rules erstellt werden. Eine in Richtung VLAN 90 und die andere in richtung VLAN 91. Beide sollten als Source „any“ haben. Dies sieht bildlich so aus:













Für die Benutzer, die auf VLAN 90 und 91 zugreifen sollen, sollte der Zugriff über OpenVPN abgewickelt werden. Sollte es doch einen Zugriff über das Interne Netz benötigen, so muss nur eine Zugriffsrule oberhalb der Block rules gemacht werden.

MTO Rules

MTO (Was für Many To One steht) soll für die Rules stehen, von denen mehrere Interfaces auf nur ein Interface zugreifen müssen. Für diese rules, sollte eine Interface Group erstellt werden, mit dem Namen MTO_Group, bei der alle Interfaces ausser VLAN 1 und LAN/WAN Mitglied sein sollten. In dieser Gruppe sollten nun alle MTO Rules erstellt werden. Was als MTO rule gilt, ist unten beschrieben:

Internet-Zugriff Rules

Für den Internet-Zugriff werden zwei etwas kompliziertere Rules benötigt.

Für die erste müssen folgende Dinge gemacht werden. Zuerst muss ein Alias erstellt werden mit dem Typ Network(s). Eingetragen werden sollte die Netzwerk-CIDR-notation aller VLANs. Dieser sieht bildlich etwa so aus:
























Benennen Sie ihn mit dem Namen VLAN_ANY und speichern Sie ihn ab. Erstellen Sie nun auf der MTO_Group eine Rule mit folgenden Parametern:

Bei Source: lassen Sie die Einstellung auf any.

Bei Destination, wählen Sie Single host or alias aus und geben Sie den Namen des VLAN_ANY Alias an. Zusätzlich setzen Sie ein Häkchen bei der Box Invert-Match.

Bildlich dargestellt sieht dies so aus:

Speichern Sie die Rule ab.

Mit dieser Rule, wurde der Zugang zum Internet eröffnet. Aber es wurde auch der interne DNS Resolver der pfSense blockiert. Da dieser für pfBlocker jedoch wichtig ist, muss dieser wieder entblockiert werden.

Erstellen Sie dafür eine neue rule und wählen Sie bei Protocol, TCP/UDP aus. Lassen Sie den Parameter Source bei any.

Bei Destination, lassen Sie auch die Einstellung auf any, und wählen Sie bei Destination Port Range den Port 53 aus.

Bildlich dargestellt sieht dies so aus:






















Speichern Sie die rule ab. Stellen Sie diese rule in der Anordnung über der Internet-Zugang-Rule, weil sonst die DNS entblockierungsrule ausser Kraft gesetzt wird.

Many To One Rules

Wenn mehrere Interfaces auf ein einziges Interface zugreifen müssen, eignet sich eine Many to One rule.

Ab wann eine MTO rule geeignet ist, lässt sich an dieser Formel ableiten:

Wenn mehr als 2 Interfaces (ausgenommen VLAN 01 und 21) auf dasselbe Interface zugreifen müssen = MTO rule.

Um eine MTO Rule zu erstellen, müssen Sie folgendes tun.

Erstellen Sie einen Alias mit dem Typ Network(s) und tragen Sie alle VLANs ein, die auf das einte Interface zugreifen müssen. Benennen Sie diesen am besten z.B. VLANXX_Access

Danach, auf dem MTO Tab, erstellen Sie eine Rule wie folgt.

Wählen Sie bei Source, Single host or alias aus, und geben Sie den Namen des vorhin erstellten Alias ein. Wählen Sie danach bei Destination das VLAN aus, auf wo die anderen Interfaces zugreifen müssen. Speichern Sie diese Rule ab.

Die MTO Rules, müssen in der rule-reihenfolge oberhalb der Internet-Zugriff Rules stehen.

Firewall Konfigurationsblock Rule

Es ist vorgesehen, dass es nur aus VLAN 1 und aus dem LAN interface möglich ist, die Firewall entweder über das WebGui oder per SSH zu konfigurieren. Für alle anderen VLANs sollte der Zugang gesperrt werden. Gehen Sie dafür wie folgt vor

Erstellen Sie zuerst zwei Aliase. Der erste sollte FW_BLOCK_VLAN heissen und alle Netzwerk-CIDRs der Interfaces ausser VLAN 1 und LAN/WAN haben.

Der Zweite sollte ein Port Alias sein. Gehen Sie dafür unter Aliases im webGui auf Ports. Dieser sollte FW_Config_Ports heissen und tragen Sie dort die Ports 22 (SSH), 80 (HTTP) und 443 (HTTPS) ein. Dies sind die Ports worüber die Firewall konfiguriert wird.

Jetzt gehen Sie zur MTO_Group und erstellen Sie folgende rule:

  • Unter Action: Wählen Sie Block aus
  • Unter Protocol: Wählen Sie TCP/UDP aus
  • Unter Source: Wählen Sie Single host or alias aus und geben Sie den FW_BLOCK_VLAN alias an.
  • Unter Destination: Wählen Sie This firewall (self) aus.
  • Unter Destination Port Range: Geben Sie beim feld Custom, den Alias FW_Config_Ports aus.

Bildlich dargestellt sieht dies wie folgt aus:

























Speichern Sie die Rule ab. Stellen Sie sicher dass diese zuoberst auf dem MTO_Group Tab gespeichert ist.

Extra-Tab für Interface

Wenn auf einem Interface, sich viele rules befinden, die nicht genau festgelegt sind und häufig wechseln, wie z. B. die Rules von VLAN 22 in die Labor-Netze (Flexible-rules), lohnt es sich, für diese Rules ein anderes Interface zu haben, um diese von den festgelegten rules zu separieren.

Dieses Vorgehen sollte getan werden, wenn sich auf einem Interface mehr als 4 Flexible rules anhäufen.

Erstellen Sie dafür eine neue Interface-Group, wo nur das Interface, die, die vielen Flexiblen-rules hat, Mitglied ist. Erstellen Sie fortan die Flexiblen-Rules nur noch auf der Interface Group, damit diese von den restlichen rules getrennt sind.

wichtig: Da die flexiblen Regeln nun Interface-Group rules sind, stehen diese nun über den normalen Regeln. Wenn Sie etwas also über die Interface-Group erlauben, kann es nicht über das normale Interface blockiert werden und umgekehrt. Seien Sie deshalb aufmerksam bei diesen rules!

Multiple Host rules

Wenn nicht mehrere Interfaces, sondern Hosts auf ein Netzwerk zugreifen müssen, so können diese Rules durch Aliasse gekürzt werden. Dafür müssen jedoch alle Hosts im selben Netzwerk sein.

Erstellen Sie dafür einen Alias mit dem Typ Host, und tragen Sie alle Hosts ein, die auf das spezifische Interface zugreifen müssen. Erstellen Sie danach einer Rule, die als Source den Alias hat, und als Destination das Ziel-Interface.

Die Rule sollte sich im selben VLAN befinden, wo auch die Hosts sind.

Restliche Rules

Wenn eine benötigte rule, sich nicht in die oberen Kategorien einordnen lässt, so kann Sie als normale rule erstellt werden. Wichtig ist, dass diese immer im Herkunftsinterface erstellt wird.

2.3 Aufbau der Rafisa OpenVPN Rule Struktur

Nach der Internen rule Struktur, kommt die OpenVPN rule Struktur. Diese wird auf dem Rule Tab OpenVPN abgewickelt.

Wichtiges Wissen

Rules, die für OpenVPN gemacht werden müssen, sind anders organisiert als die normalen internen Rules.

Rules für OpenVPN, werden auf dem Tab OpenVPN gemacht. Dieser ist erst sichtbar, wenn entweder ein OpenVPN Server oder Client erstellt wurde. Dieser kann nicht in eine Interface Group hinzugefügt werden. Alle Rules für OpenVPN müssen deshalb auf diesem Tab gemacht werden. Es ist deshalb geboten, wenn möglich, diese durch Aliase zu verkürzen.

Site-to-Site rules

Site-to-Site rules umfasst die Rules, die den Zugriff über Site-to-Site reglementieren.

OpenVPN Site-to-Site, verbindet in der Rafisa, die Firewall in Dietikon, mit den externen Firewalls. Dadurch können die internen Netzwerke der externen Standorte sichtbar werden, sowie auch umgekehrt.

Für die Rules, die für den Site-to-Site Verkehr gemacht werden müssen, gilt Folgendes zu beachten.

Der OpenVPN rule Tab, existiert auch bei den externen Firewalls. Diese Information ist für die untere Weisung wichtig.

Bei den internen rules muss, wenn man von Interface-A auf Interface-B kommen will, die Rule auf dem Start Interface gemacht werden, in diesem Fall Interface A. Bei den OpenVPN Site-to-Site rules, ist dies genau andersrum. Hier müssen die rules auf dem End-Interface gemacht werden.

Dies bedeutet für die Site-to-Site rules, rules von Interface(s) auf der Firewall in Dietikon zu den Externen Firewalls, müssen auf dem OpenVPN Tab, auf den Externen Firewalls gemacht werden.

Umgekehrt müssen rules von Interface(s) auf den Externen Firewalls zu der Firewall in Dietikon, müssen auf dem OpenVPN Tab, auf der Firewall in Dietikon gemacht werden.

Auch können VLANs von externen Firewalls (selbst wenn Sie dieselben Nummern haben) nicht ausgewählt werden. Dafür muss stattdessen die Netzwerk-CIDR-notation von dem VLAN der Externen Firewall eingegeben werden. Dies kann getan werden, indem Sie entweder bei Source oder Destination den Typ Network(s) auswählen.

VLAN 1 Extern

Von VLAN 1 in Dietikon sollte man ins VLAN 1 von jedem Standort kommen. Deshalb soll auf den externen Firewalls eine Rule erstellt werden, die den Zugang von VLAN 1 Dietikon auf VLAN 1 Extern erlaubt.

VLAN 10

VLAN 10 muss von extern als auch von Dietikon in beiden Richtungen erreichbar sein.

Deshalb muss auf der Firewall extern eine Rule erstellt werden, die den Zugang von VLAN10 Dietikon zu VLAN10 extern erlaubt.

Auf der Firewall Dietikon sollte ein Alias erstellt werden, mit dem Typ Network(s) und den Netzwerk-CIDR-notationen von den externen VLAN 10, und danach eine rule, die den Zugang vom Alias zu VLAN 10 Dietikon erlaubt.

VLAN 3 und 14

VLAN 21 Extern sollte auf VLAN 3 und 14 von Dietikon kommen.

Deshalb soll ein Alias mit den Netzwerk-CIDR-notationen von VLAN 21 extern erstellt werden. Auch sollte ein Alias erstellt werden, mit der Netzwerk-CIDR-notation von VLAN 3 und VLAN 14 Dietikon.

Jetzt sollte eine Rule auf der Firewall Dietikon erstellt werden, die den Zugang von dem VLAN 21 extern Alias auf den VLAN 3 + 14 Alias erlaubt.

VLAN 40

VLAN 40 extern sollte auf VLAN 14 Dietikon kommen. Machen Sie dafür einen Alias mit den Netzwerk-CIDR-notationen von den VLAN40 extern. Jetzt erstellen Sie eine Rule auf der Firewall von Dietikon vom VLAN 40 extern Alias auf VLAN 14 Dietikon.

Weitere Rules

Wenn weitere Site-to-Site benötigt werden, dann sollten die obengenannten Vorgaben beachtet werden.

Kurz-zusammengefasst sind diese:

  • Rules können nur auf dem OpenVPN Tab gemacht werden
  • Rules müssen immer auf dem Tab, der Destination Firewall gemacht werden.
  • Rules sollten, wenn möglich, durch Aliase verkürzt werden.
  • Statt das Interface auszuwählen, sollte stattdessen die Netzwerk-CIDR-notation des Destination/Source-Interface eingegeben werden.

Remote-Access rules

Remote-Access rules umfassen die rules, die zur Regelung des OpenVPN Remote Access Verkehrs gemacht werden.

Bei OpenVPN Remote-Access, können sich Client-Geräte über einen OpenVPN Client mit einem OpenVPN Server verbinden, wodurch sie, auch wenn diese sich nicht im selben Netz befinden, Zugriff auf interne Netze, z. B. hier auf das Rafisa-interne Netz, erlangen.

Hier in der Rafisa wird OpenVPN nicht mehr nur gebraucht, damit Mitarbeitende auch von aussen Zugriff auf das Interne-Netz haben, sondern auch für den Zugriff auf sensible Netze wie z. B. das Medidata oder VLAN 1.

Internet-Zugriff Rules

Auch auf dem OpenVPN Tab, braucht es die zwei Internet Rules. Allerdings sind diese etwas anders als auf dem MTO_Group Tab.

Für die erste brauchen Sie den VLAN_ANY Alias. Erstellen Sie nun auf der MTO_Group eine Rule mit folgenden Parametern:

Bei Source: wählen Sie im Dropdown-Menü Network(s) aus und geben Sie 10.0.10.0/24 ein. Dies ist die CIDR-notation des OpenVPN Remote Access Tunnels.

Bei Destination, wählen Sie Single host or alias aus und geben Sie den Namen des VLAN_ANY Alias an. Zusätzlich setzen Sie ein Häkchen bei der Box Invert-Match.

Bildlich dargestellt sieht dies so aus:

Speichern Sie die Rule ab.

Mit dieser Rule, wird auch hier der Zugang zum Internet eröffnet. Aber es wurde auch hier der interne DNS Resolver der pfSense blockiert. Da dieser für OpenVPN jedoch wichtig ist, muss dieser wieder entblockiert werden.

Erstellen Sie dafür die zweite rule und wählen Sie bei Protocol, TCP/UDP aus. Auch hier, bei Source wählen Sie im Dropdown-Menü Network aus und geben Sie 10.0.10.0/24 ein.

Bei Destination, lassen Sie auch die Einstellung auf any, und wählen Sie bei Destination Port Range den Port 53 aus.

Bildlich dargestellt sieht dies so aus:






















Auch hier muss die DNS Entblockierungsrule überhalb der Internet-Zugriff Rule stehen.

Genereller Zugriff

Über den Remote-Access Server sollten generell für alle Nutzer, folgende Netze erreichbar sein:

VLAN 3, 10, 11, 13, 14, 71 | Diese sollten auch in den Remote Network(s) im Server eingetragen sein.

Erstellen Sie zuerst einen Alias, und tragen Sie dort alle CIDR-notationen der obengenannten VLANs ein.

Erstellen Sie dann eine rule mit folgenden Parametern

Bei Source: Wählen Sie den Typ Network(s) aus, und geben Sie die CIDR-notation des Tunnelnetzwerks ein, des OpenVPN Remote Access Servers. In diesem Fall ist dies 10.0.10.0/24.

Bei Destination: Wählen Sie den Typ Single host or Alias aus, und geben Sie den Namen des vorhin erstellten Alias ein.

Spezieller Zugriff für spezielle Nutzer

Für gewisse Users, die Zugriff auf weitere Netze benötigen, muss der folgende Prozess gemacht werden:

Erstellen Sie für den Nutzer ein Client-Specific-Override (CSO), und geben Sie in die Local Network(s) die VLANs ein, auf die der Nutzer zugreifen sollte. Geben Sie diesem auch eine statische IP-Adresse, indem Sie bei Advanced den Wert ifconfig-push (IP-adresse + Subnetzmaske) eingeben. (Es gibt keine Möglichkeit, einen CSO für eine Gruppe zu machen, diese müssen Nutzer für Nutzer gemacht werden.)

Falls mehrere Nutzer auf dasselbe VLAN zugreifen müssen,

erstellen Sie einen Alias mit den statischen OpenVPN IP-Adressen der Benutzer.

Erstellen Sie danach eine Rule, die den Zugriff vom Alias zu dem VLAN erlaubt.

Wenn es lediglich ein Nutzer ist, der auf mehrere VLANs zugreifen muss,

Erstellen Sie einen Alias, mit den CIDR-Notationen der VLANs auf, wo der Nutzer zugreifen muss.

Erstellen Sie danach eine Rule, die von der statischen OpenVPN IP-Adresse den Zugriff auf den Alias erlaubt.

Falls mehrere Nutzer auf mehrere VLANs zugreifen müssen,

erstellen Sie einen Alias mit den statischen OpenVPN IP-Adressen der Benutzer.

Erstellen Sie einen Alias, mit den CIDR-Notationen der VLANs auf, wo die Benutzer zugreifen müssen.

Erstellen Sie danach eine Rule, die den Zugriff vom Nutzer-Alias den Zugriff auf den VLAN-Alias erlaubt.

Firewall Konfigurationsblock Rule

Da ja vorgesehen ist, dass nur aus VLAN 1 und aus dem LAN interface möglich ist, die Firewall zu konfigurieren, muss auch hier der Zugang zur Firewall versperrt werden. Gehen Sie dafür auch hier wie folgt vor:

Sie brauche hierfür auch den FW_BLOCK_VLAN und den FW_Config_Ports alias.

Im OpenVPN tab, erstellen Sie folgende rule:

  • Unter Action: Wählen Sie Block aus
  • Unter Protocol: Wählen Sie TCP/UDP aus
  • Unter Source: Wählen Sie Single host or alias aus und geben Sie den FW_BLOCK_VLAN alias an.
  • Unter Destination: Wählen Sie This firewall (self) aus.
  • Unter Destination Port Range: Geben Sie beim feld Custom, den Alias FW_Config_Ports aus.

Speicher Sie die Rule ab.

Rule Rangordnung

Um eine gewisse Struktur in den OpenVPN Tab zu bekommen und um den reibungslosen Ablauf zu garantieren, gibt es folgende Rangordnung auf dem OpenVPN Tab bei den Rules. Sie steht unten und wird von unten nach oben gelesen.

- Zugriffrules für Netzwerkadministratoren auf VLAN 1 über OpenVPN RA

- Firewall Konfigurierungsblockrule

- Zugriffsrules für OpenVPN RA

- Internet-Zugriffsrules für OpenVPN RA

- Site-to-Site rules jeglicher Art.

3. Quellenverzeichnis

https://docs.netgate.com/pfsense/en/latest/interfaces/groups.html
https://docs.netgate.com/pfsense/en/latest/firewall/floating-rules.html
https://docs.netgate.com/pfsense/en/latest/firewall/aliases.html

de.bkp/intern/dokumentationen/pfsense-rule-system.txt · Zuletzt geändert: 2023/10/23 16:01 von 127.0.0.1