Unterschiede zwischen den Revisionen 41 und 92 (über 51 Versionen hinweg)
Revision 41 vom 2017-06-22 10:57:31
Größe: 10010
Kommentar:
Revision 92 vom 2023-03-21 08:45:45
Größe: 21955
Kommentar:
Gelöschter Text ist auf diese Art markiert. Hinzugefügter Text ist auf diese Art markiert.
Zeile 1: Zeile 1:
#acl AdminGroup:read,write,delete,revert,admin All:read
Zeile 6: Zeile 8:
Zunächst muss ipFire für das gewählte Installationsmedium (CD-ROM, USB-Stick) heruntergeladen werden: http://www.ipfire.org/downloads

Nach dem Download muss das Boot-Medium erstellt werden. Genauere Hinweise hierzu bitte der [[http://www.ipfire.org/support|ipFire-Dokumentation]] entnehmen.
Zunächst muss pfSense für das gewählte Installationsmedium (CD-ROM, USB-Stick) heruntergeladen werden: https://www.pfsense.org/download/

'''Hinweis:''' Das aktuelle amd64-Image ist unter [[https://frafiles.pfsense.org/mirror/downloads/pfSense-CE-2.5.2-RELEASE-amd64.iso.gz|pfSense-2.5.2-Downloads]] herunterzuladen.


Nach dem Download muss das Boot-Medium erstellt werden. Genauere Hinweise hierzu bitte der [[https://doc.pfsense.org/index.php/Writing_Disk_Images|pfSense-Dokumentation]] entnehmen.
Zeile 15: Zeile 19:
Den PC für das Firewall-System vom Installationsmedium starten und im Abfrage-Dialog von pfsense die folgenden Optionen auswählen.



Die Firewall spezifischen Pakete können über den WebKonfigurator installiert und konfiguriert werden. Hierzu zählen zum Beispiel der Proxy (Squid 3) und der Inhaltsfilter (Dansguardian). Auch die Firewall wird einfacher über den Webkonfigurator konfiguriert.
Den PC für das Firewall-System vom Installationsmedium starten und im Abfrage-Dialog von pfsense die folgenden Optionen auswählen:

  * das System Booten lassen vom ISO-Image ohne Eingriff...
  * Copyright and distribution notice: Accept
  * Welcome to pfSense! -> Install (Install pfSense)
  * Keymap Selection -> German auswählen, dann "Continue with de.kbd keymap" (gang oben)
  * Partitioning: "Auto (ZFS) Guided Root-on-ZFS"
  * ZFS Configuration:
    * wenn die pfSense virtuell installiert wird: "stripe"
    * wenn die pfSense physikalisch (in Maschine mit zwei Datenträgern) installiert wird: "mirror" oder "raidz2"
    * danach: ">>> Install (Proceed with Installation) (ganz oben)
  * ZFS Configuration bestätigen (Sicherheitsabfrage vorm Überschreiben der/des Datenträger(s))
  * am Ende der Installation: Manual Configuration: Soll vor dem Neustart eine Shell geöffnet werden? -> Nein.
  * Reboot
  * Sicherstellen, dass beim nächsten Boot von HDD/SSD/etc. gebootet wird und nicht nochmal vom ISO-Image / von der/dem CD/DVD/USB-Flashdrive

Die Installationsschritte sind im Einzelnen im [[https://docs.netgate.com/pfsense/en/latest/install/install-walkthrough.html|"Installation Walkthrough"]] beschrieben.

== Standardkonfiguration ==

Nach einem Neustart hat die neu installierte pfSense Firewall folgende Standardeinstellungen (verg. https://docs.netgate.com/pfsense/en/latest/install/install-pfsense.html#pfsense-default-configuration):


  * WAN ist als IPv4 DHCP Client konfiguriert
  * WAN ist als IPv6 DHCP Client konfiguriert und wird Prefix Delegation anfordern
  * LAN ist als statisches IPv4 Netz konfiguriert (192.168.1.1/24)
  * LAN ist darauf konfiguriert eine(n) delegierte(n) IPv6-Adresse bzw. -Prefix zu erhalten über die WAN-Schnittstelle (sofern verfügbar)
  * Alle eingehenden Verbindungen auf WAN werden von der Firewall geblockt
  * Alle ausgehenden Verbindungen aus dem LAN sind erlaubt
  * Die Firewall macht ein NAT für IPv4 Datenverkehr, das LAN Subnetz kann über das WAN Interface auf das Internet zugreifen
  * Die Firewall ist als DHCPv4 Server eingerichtet
  * Die Firewall ist IPv6 DHCPv6 Server sofern eine Prefix Delegierung über WAN erhältlich war, ebenso wird SLAAC aktiviert
  * Der DNS Resolver ist aktiv, so dass die Firewall via LAN DNS Anfragen beantworten kann
  * SSH ist deaktiviert
  * Das WebGUI läuft auf Port 443 via HTTPS
  * Standardzugangsdaten sind gesetzt auf Benutzername: {{{admin}}} und Password: {{{pfsense}}}.

== Konfigurationsanpassungen für IT-Zukunft-Schule Netzwerk ==

Für die Verwendung der pfSense in einem IT-Zukunft Schule Netzwerk müssen verschiedene Änderungen an der Netzwerkkonfiguration der pfSense durchgeführt werden.

=== WAN-Schnittstelle ===

  * DHCPv6 deaktivieren (Debian Edu unterstützt leider noch kein IPv6 nativ)
  * IPv4: als DHCP Client konfigurieren und IP-Adresse vom Internet-Uplink-Router beziehen

=== LAN-Schnittstelle ===
 
  * Hierüber wird das Debian Edu Netzwerk ({{{.intern}}}) angebunden. Debian Edu verwendet standardmäßig das Subnetz {{{0.0.0.0/8}}} und erwartet ein Gateway auf der IPv4-Adresse {{{10.0.0.1}}}

  * D.h. Einrichten einer statischen IPv4-Adresse ist nötig: [{{{10.0.0.1/8}}} (Achtung: wenn der Internet-Uplink bereits via NAT bereitgestellt wird und auch einen Adressbereich des 10/8er Netzes nutzt, dann muss hier ein kleinerer Ausschnitt aus dem 10/8er Netz genutzt werden.
  * IPv4 DHCP-Server deaktivieren (wichtig, IPv4-DHCP-Server ist {{{tjener.intern}}})

=== OPT1-Schnittstelle ===

  * eventuell als Backbone-Schnittstelle einrichten ({{{172.16.0.253/24}}}, ebenfalls kein IPv6).

Alternativ können auch Debian Edu Netzwerk und Backbone-Netzwerk über VLANs aggregiert werden und dann der VLAN-Trunk über die LAN-Schnittstelle der Firewall in eine VLAN-fähige Switch eingespeist werden. Für das Debian Edu Netzwerk ist dann die VLAN-ID 2 zu verwenden, für das Backbone-Netzwerk die VLAN-ID 3.

=== Netzwerkkonfigurationsschritte (s.o.) während Post-Install Setup ===

Beim ersten Start einer pfSense wird während des Bootvorgangs einige Frage bzgl. Netzwerkkonfiguration gefragt. Hier die Anworten für eine pfSense in einem IT-Zukunft-Schule Setup:

{{{
Do VLANs need to be set up first?
If VLANs will not be used, or only for optional interfaces, it is typical to
say no here and use the webConfigurator to configure VLANs later, if required.

Should VLANs be setup now [y|n]? n

If the names of the interfaces are not known, auto-detection can
be used instead. To use auto-detection, please disconnect all
interfaces before pressing 'a' to begin the process.

Enter the WAN interface name or 'a' for auto-detection
(<nic0> <nic1> <nic2> or a): <nic0>

Enter the LAN interface name or 'a' for auto-detection
NOTE: this enables full Firewalling/NATE mode.
(<nic1> <nic2> a or nothing if finished): <nic1>

Enter the Optional 1 interface name for 'a' for auto-detection
(<nic2> a or nothing if finished): <nic2>

The interfaces will be assigned as follws:

WAN -> <nic0>
LAN -> <nic1>
OPT1 -> <nic2>

Do you want to proceed [y|n]?

}}}


Wenn alle obigen Fragen beantwortet sind, fährt die pfSense Firewall zu Ende hoch und präsentiert dann an der Console ein kleines Aktionsmenü.

Hier bitte Punkt 2) auswählen: Set interface(s) IP address.

{{{
Available interfaces:

1 - WAN (<nic0> - dhcp, dhcp6)
2 - LAN (<nic1> - static)
3 - OPT1 (<nic2>)

Enter the number of the interface you wish to configure: 2

Enter the new LAN IPv4 address. Press <ENTER> for none:
> 10.0.0.1

[...]

Enter the new LAN IPv4 subnet bit count (1 to 31):
> 8

For a WAN, enter the new LAN IPv4 upstream gateway address.
For a LAN, press <ENTER> for none:
> <ENTER>

Enter the new LAN IPv6 address. Press <ENTER> for none:
> <ENTER>

Do you want to enable the DHCP server on LAN? (y/n) n
Disabling IPv4 DHCPD...
Disabling IPv6 DHCPD...

Do you want to revert to HTTP as the webConfigurator protocol? (y/n) n

[... applying configuration changes ...]
[... summary of changes ...]

Press <ENTER> to continue.

}}}


Nach Einrichtung der Netzwerkschnittstellen wird die restliche Firewall-Konfiguration dann über den Webkonfigurator vorgenommen.


Zeile 22: Zeile 162:

=== Setup-Wizard im Webkonfigurator nach Neuinstallation ===
Zeile 24: Zeile 167:
=== Proxy konfigurieren ===
Der Proxy lässt konfigurieren unter '''Service''' > '''Proxy ...''':



=== Inhaltsfilter konfigurieren (Dansguardian) ===

Der Inhaltsfilter lässt sich konfigurieren unter '''Service''' > '''Dansguardian''':

 * Im Untermenü '''Blacklist''' wird der Link zum Download der [[http://www.shallalist.de/Downloads/shallalist.tar.gz|Shallaliste]] eingefügt.
 * Unter ACLs wird bei der Phraselist, der Sitelist, URLlist und Extensionlist (bei Bedarf auch bei den anderen Listen) ein neuer Filter '''Schule''' angelegt und dann jede Liste wie folgt bearbeitet:
  * der Filter wird enabled
  * unter '''banned lists''' werden die zu filternden Begriffe mit '''STRG+Mausklick''' markiert
  * unter '''Exception lists''' (z.B. unter ''Sitelist'') werden explizit frei gegebene Homepages eingetragen
  * die Einstellungen speichern
  * damit die neu erstellten Filter (''Schule'') greifen, werden sie unter '''groups''' ausgewählt und gespeichert
 * Hosts die von der Filterung ausgenommen werden sollen werden unter: '''IPs''', '''Exception IP List''' mit der Host-IP eingetragen

=== Performanz des Inhaltsfilters optimieren ===

  1. Das Konfigurationsmenü gibt Hinweise, welche Werte (abweichend von den Standardeinstellungen) für große Sites verwendet werden können. Diese Werte sind unter dem Reiter "Daemon" einzutragen.
  1. Ferner kann man überlegen, das Verwenden von Phrasenlisten zu deaktivieren und sich nur auf den URL-Filter und den URL-Stichwortfilter von Dansguardian zu verlassen. Wenn nicht jede heruntergeladene Webseite nach malignen Inhalten durchsucht werden muss, ist eine Leistungssteigerung beim Aufrufen von Webseiten auf den angegliederten Clients zu erwarten.

=== Firewall konfigurieren ===
Nach einer pfSense-Neuinstallation landed man beim ersten Aufruf des Webkonfigurators in einem Setup-Wizard:

  * durch die zwei ersten Info-Bildschirm einfach durchklicken
  * General Information:
    * Hostname: ändern auf "gateway"
    * Domain: ändern auf "intern"
    * >> Next
  * Time Server Information
    * Time server hostname: (so lassen)
    * Timezone: Europe/Berlin (ändern)
    * >> Next
  * Configure WAN Interface
    * (alles so lassen... außer wenn der Uplink der Schule keinen DHCP-Server hat, bzw. wenn eine statische WAN-IPv4 Adresse vergeben werden muss)
    * >> Next
  * Configure LAN Interface
    * (alles so lassen...)
    * >>> Next
  * Set Admin WebGUI Password
    * Admin Password: ****************** (starkes Kennwort ausdenken und notieren)
    * Admin Password AGAIN: ****************** (Kennwort wiederholen)
    * >>> Next
  * Reload configuration
    * >>> Reload
  * Wizard completed
    * Finish


ACHTUNG: AB HIER MUSS DIE DOKUMENTATION ÜBERARBEITET WERDEN!!!!


=== Firewallregeln konfigurieren ===

==== DNS-Resolver ====

Unter '''Services''' > '''DNS Resolver''' werden die Einstellungen für den DNS-Resolver definiert.

===== General =====

|| Enabled || yes ||
|| Listen Port || 53 ||
|| Network Interfaces || All ||
|| Outgoing Network Interface || WAN ||
|| System Domain Local Zone Type || Transparent ||

Host Overrides:

|| Host || Domain || IP || Description ||
|| www || google.de || 216.239.32.20 || ||
|| www || google.com || Alias for www.google.de || ||
|| www || google.co.uk || Alias for www.google.de || ||

===== Advanced =====

|| Hide Identity || yes ||
|| Hide Version || yes ||
|| Harden DNSSEC Data || yes ||
|| Message Cache Size || yes ||
|| Outgoing TCP Buffers || 10 ||
|| Incoming TCP Buffers || 10 ||
|| EDNS Buffer Size || 4096 ||
|| Number of Queries per Thread || 512 ||
|| Max. TTL for RRsets und Messages || 8640 ||
|| Min. TTL for RRsets and Messages || 0 ||
|| TTL for Host Cache Entries || 15 minutes ||
|| Number of Hosts to Cache || 10000 ||
|| Unwanted Reply Threshold || Disabled ||
|| Log Level || 1 ||

==== Aliase ====

Unter '''Firewall''' > '''Aliases''' werden die Aliase für bestimmte Netzwerkadressen etc. definiert.

Gruppiert sind diese nach {{{IP}}}, {{{Ports}}} und {{{URL}}} und können je nach Standort unterschiedlich benötigt sein.

===== IP =====

|| Name || Values || Description ||
|| Displayserver || 10.0.2.19 || Vertretungsplan-Displays via !DisplayServer (''nur an bestimmten Standorten benötigt'') ||
|| EMAIL_CLIENTS || 10.6.0.50, 10.6.0.49 || PC am Tresen der Schulbibliothek (''Beispielhaft, n ||
|| ITZkS_!VpnSrv || vpn.it-zukunft-schule.de || VPN Server ITZkS (''an allen Standorten nötig'') ||
|| public_WWW || <Internetadresse der Schulhomepage> || Schul-Homepage <Schule> ||

===== Ports =====
|| Name || Values || Description ||
|| MAIL_PROTOS || 25, 110, 143, 465, 587, 993, 995 || Email Protocols ||
|| !WebLike_Ports || 80, 21, 443, 70, 210, 280, 488, 591, 777 || Ports accessible through Squid ||

==== Regeln für die Netzwerke ====
Zeile 51: Zeile 258:
==== WAN Regeln ====

|| type || ID || Proto || Source || Port || Destination || Port || Gateway || Queue || Schedule || Description ||
|| pass || || IPv4 TCP/UDP || 172.16.0.88 || * || This Firewall || 1194 (OpenVPN) || * || none || || Incoming OpenVPN from Backup-Server ||

==== LAN Regeln ====

|| type || ID || Proto || Source || Port || Destination || Port || Gateway || Queue || Schedule || Description ||
|| pass || || IPv4 TCP/UDP || 10.0.2.2 || * || * || * || * || none || || allow all from Tjener ||
|| pass || || IPv4 ICMP || * || * || * || * || * || none || || always allow ICMP ||
|| pass || || IPv4 UDP || LAN net || * || ITZkS_VpnSrv || 1197 || * || none || || VPN-Access to ITZkS-VPN-Server (HGG), ''muss an Schule angepasst werden!!!'' ||
|| pass || || IPv4 UDP || LAN net || * || ITZkS_VpnSrv || 1194 || * || none || || VPN access to ITZkS-VPN-Server (ADMINS) ||
|| reject || || IPv4+6 TCP/UDP || * || * || WAN net || * || * || none || || block all IPv4/IPv6 ||
==== UPLINK (WAN) Regeln ====

|| Action || Logged || Protocol || Source || Port || Destination || Port || Gateway || Queue || Schedule || Description ||
|| block || no || * || Reserved (Not assigned by IANA) || * || * || * || * || * || || Block bogon networks ||
|| pass || yes || IPv4 TCP/UDP || 172.16.0.88 || * || This Firewall || 1194 (OpenVPN) || * || none || || Incoming OpenVPN from Backup-Server ||
|| pass || no || IPv4 ICMP || 172.16.0.0/24 || * || This Firewall || * || * || none || || ||

==== EDUCATION (LAN) Regeln ====

|| Action || Logged || Protocol || Source || Port || Destination || Port || Gateway || Queue || Schedule || Description ||
|| pass || no || * || * || * || EDUCATION Address || 443, 80, 22 || * || * || || Anti-Lockout Rule ||
|| pass || no || IPv4 TCP/UDP || 10.0.2.2 || * || * || * || * || none || || allow all from Tjener ||
|| pass || no || IPv4 ICMP || * || * || * || * || * || none || || always allow ICMP ||
|| pass || no || IPv4 UDP || LAN net || * || ITZkS_!VpnSrv || 1197 || * || none || || VPN-Access to ITZkS-VPN-Server (<SCHULE>), ''Port muss an Schule angepasst werden!!!''(1) ||
|| pass || no || IPv4 UDP || LAN net || * || ITZkS_!VpnSrv || 1194 || * || none || || VPN access to ITZkS-VPN-Server (ADMINS) ||
|| pass || no || IPv4 TCP || EMAIL_CLIENTS || * || * || MAIL_PROTOS || * || none || || Allow e-Mailing from BIB_TRESEN machines ''Standortabhängig'' ||
|| pass || no || IPv4 TCP || 10.0.2.5 || * || * || * || * || none || || internet access rule filter.intern ||
|| pass || no || IPv4 TCP || !DisplayServer || * || public_WWW || * || * || none || || Vertretungsplan-Displays holen PDFs direkt ab ''Standortabhängig'' ||


(1) Port ist auf {{{vidar}}} unter {{{/etc/openvpn/itzks-<SCHULE>.conf}}} abzulesen.

==== WIFILEHRER ====

|| Action || Logged || Protocol || Source || Port || Destination || Port || Gateway || Queue || Schedule || Description ||
||block || no || IPv4 * || * || * || 172.16.0.0./24 || * || * || none || || No access to BACKBONE network||
||block || no || IPv4 * || * || * || EDUCATION net || * || * || none || || No access to EDU network ||
||block || no || IPv4 * || * || * || WIFIGAESTE net || * || * || none|| || No access to WIFIGAESTE network ||
||block || no || IPv4 * || * || * || WIFISCHUELER net || * || * || none || || No access to WIFISCHUELER network ||
||pass || no || IPv4 * || WIFILEHRER net || * || * || * || * || none || || Allow everything except previously blocked ||

==== WIFISCHUELER ====

|| Action || Logged || Protocol || Source || Port || Destination || Port || Gateway || Queue || Schedule || Description ||
||block || no || IPv4 * || * || * || 172.16.0.0./24 || * || * || none || || No access to BACKBONE network||
||block || no || IPv4 * || * || * || EDUCATION net || * || * || none || || No access to EDU network ||
||block || no || IPv4 * || * || * || WIFIGAESTE net || * || * || none|| || No access to WIFIGAESTE network ||
||block || no || IPv4 * || * || * || WIFILEHRER net || * || * || none || || No access to WIFILEHRER network ||
||pass || no || IPv4 * || WIFISCHUELER net || * || * || * || * || none || || Allow everything except previously blocked ||

==== WIFIGAESTE ====

|| Action || Logged || Protocol || Source || Port || Destination || Port || Gateway || Queue || Schedule || Description ||
||block || no || IPv4 * || * || * || 172.16.0.0./24 || * || * || none || || No access to BACKBONE network||
||block || no || IPv4 * || * || * || EDUCATION net || * || * || none || || No access to EDU network ||
||block || no || IPv4 * || * || * || WIFILEHRER net || * || * || none|| || No access to WIFILEHRER network ||
||block || no || IPv4 * || * || * || WIFISCHUELER net || * || * || none || || No access to WIFISCHUELER network ||
||pass || no || IPv4 * || WIFIGAESTE net || * || * || * || * || none || || Allow everything except previously blocked ||
Zeile 67: Zeile 309:
|| type || ID || Proto    || Source || Port || Destination || Port || Gateway || Queue || Schedule || Description ||
|| pass ||    || IPv4 ICMP || * || * || LAN net || * || * || none || || always allow ICMP ||
|| pass ||    || IPv4 TCP || * || * || LAN net || 22 || * || none || || VPN Clients (e.g. backup-01) may SSH into all machines ||
|| Action || Logged || Prototocol || Source || Port || Destination || Port || Gateway || Queue || Schedule || Description ||
|| pass || no || IPv4 ICMP || * || * || LAN net || * || * || none || || always allow ICMP ||
|| pass || no || IPv4 TCP || * || * || LAN net || 22 || * || none || || VPN Clients (e.g. backup-01) may SSH into all machines ||
Zeile 75: Zeile 317:
Für die Bereitstellung einer WiFi-Umgebung wird die "Captive Portal"-Funktion in pfSense für Schulen eingerichtet. Es werden 4 WiFi-Netze bereitgestellt: Für die Bereitstellung einer !WiFi-Umgebung wird die "Captive Portal"-Funktion in pfSense für Schulen eingerichtet. Es werden 4 !WiFi-Netze bereitgestellt:
Zeile 88: Zeile 330:
Jedes dieser WiFi-Netze wird über eine separate ESSID bereit gestellt. Verbinden sich Clients mit einer der ESSID landen sie (per DHCP) in einem von vier (eigentlich drei) dedizierten Subnetzen: Jedes dieser !WiFi-Netze wird über eine separate ESSID bereit gestellt. Verbinden sich Clients mit einer der ESSID landen sie (per DHCP) in einem von vier (eigentlich drei) dedizierten Subnetzen:
Zeile 101: Zeile 343:
  * <SCHULE>-Lehrer -> VLAN Name: WiFi-Lehrer, VLAN Id: 27
  * <SCHULE>-Schueler -> VLAN Name: WiFi-Schueler, VLAN Id: 28
  * <SCHULE>-Gastzugang -> VLAN Name: WiFi-Gastzugang, VLAN Id: 29
  * <SCHULE>-Lehrer -> VLAN Name: !WiFi-Lehrer, VLAN Id: 27
  * <SCHULE>-Schueler -> VLAN Name: !WiFi-Schueler, VLAN Id: 28
  * <SCHULE>-Gastzugang -> VLAN Name: !WiFi-Gastzugang, VLAN Id: 29
Zeile 116: Zeile 358:
===== Nutzungshinweise für Captive Portal ===== === Nutzungshinweise für Captive Portal ===
Zeile 180: Zeile 422:
== DNS-SD via mDNS über Netzwerkgrenzen hinweg reflektieren (Reflexionsdienst) ==
 * Folgende grundlegende Informationen sollten zuerst gelesen werden: [[Technik/Nutzungshinweise/DNS-SD_mDNS|DNS-SD & mDNS]].

==== Installation des Avahi-Plugins ====

 1. '''System''' -> '''Package-Manager''' -> '''Available Packages'''
 2. "'''Avahi'''" in die Suchzeile eingeben und installieren
 3. Avahi-Plugin unter '''Services''' -> '''Avahi''' einrichten.
 3. Gegebenenfalls Dienste-Whitelist einrichten. Siehe [[Technik/Nutzungshinweise/DNS-SD_mDNS|Häufig benötigte mDNS Dienste]].

==== Firewall-Regeln hinzufügen ====

Für jedes Netzwerk, welches mDNS-Pakete empfangen und/oder versenden können soll, müssen folgende Regeln aufgestellt werden:

|| Action || Logged || Protocol || Interface || Source || S-Port || Destination || D-Port || Description ||
|| pass || no || IPv4 udp || <MDNS-NETZWERK> || * || * || 224.0.0.251 || 5353 || mDNS (4) ||
|| pass || no || IPv6 udp || <MDNS-NETZWERK> || * || * || ff02::fb || 5353 || mDNS (6) ||

'''Wichtig:''' Jetzt muss nur noch sichergestellt werden, dass alle Dienste, welche per DNS-SD beworben werden auch aus den anderen Netzwerken erreichbar sind. '''Dafür müssen weitere Ports geöffnet werden'''!

Installationshinweise: pfSense Firewall des Debian Edu / Skolelinux Netzwerks

Download / Installationsmedium erstellen

Zunächst muss pfSense für das gewählte Installationsmedium (CD-ROM, USB-Stick) heruntergeladen werden: https://www.pfsense.org/download/

Hinweis: Das aktuelle amd64-Image ist unter pfSense-2.5.2-Downloads herunterzuladen.

Nach dem Download muss das Boot-Medium erstellt werden. Genauere Hinweise hierzu bitte der pfSense-Dokumentation entnehmen.

Netzwerkkarten identifizieren

Bevor mit der Installation des Firewall-Systems begonnen werden kann, muss für alle Netzwerkkarten die jeweils zugehörige MAC-Adresse ermittelt werden. Eine eindeutige Zuordnung von MAC-Adressen zu Netzwerkports ist für die spätere Konfiguration der Firewall-Software notwendig.

Basisinstallation

Den PC für das Firewall-System vom Installationsmedium starten und im Abfrage-Dialog von pfsense die folgenden Optionen auswählen:

  • das System Booten lassen vom ISO-Image ohne Eingriff...
  • Copyright and distribution notice: Accept
  • Welcome to pfSense! -> Install (Install pfSense)

  • Keymap Selection -> German auswählen, dann "Continue with de.kbd keymap" (gang oben)

  • Partitioning: "Auto (ZFS) Guided Root-on-ZFS"
  • ZFS Configuration:
    • wenn die pfSense virtuell installiert wird: "stripe"
    • wenn die pfSense physikalisch (in Maschine mit zwei Datenträgern) installiert wird: "mirror" oder "raidz2"
    • danach: ">>> Install (Proceed with Installation) (ganz oben)

  • ZFS Configuration bestätigen (Sicherheitsabfrage vorm Überschreiben der/des Datenträger(s))
  • am Ende der Installation: Manual Configuration: Soll vor dem Neustart eine Shell geöffnet werden? -> Nein.

  • Reboot
  • Sicherstellen, dass beim nächsten Boot von HDD/SSD/etc. gebootet wird und nicht nochmal vom ISO-Image / von der/dem CD/DVD/USB-Flashdrive

Die Installationsschritte sind im Einzelnen im "Installation Walkthrough" beschrieben.

Standardkonfiguration

Nach einem Neustart hat die neu installierte pfSense Firewall folgende Standardeinstellungen (verg. https://docs.netgate.com/pfsense/en/latest/install/install-pfsense.html#pfsense-default-configuration):

  • WAN ist als IPv4 DHCP Client konfiguriert
  • WAN ist als IPv6 DHCP Client konfiguriert und wird Prefix Delegation anfordern
  • LAN ist als statisches IPv4 Netz konfiguriert (192.168.1.1/24)
  • LAN ist darauf konfiguriert eine(n) delegierte(n) IPv6-Adresse bzw. -Prefix zu erhalten über die WAN-Schnittstelle (sofern verfügbar)
  • Alle eingehenden Verbindungen auf WAN werden von der Firewall geblockt
  • Alle ausgehenden Verbindungen aus dem LAN sind erlaubt
  • Die Firewall macht ein NAT für IPv4 Datenverkehr, das LAN Subnetz kann über das WAN Interface auf das Internet zugreifen
  • Die Firewall ist als DHCPv4 Server eingerichtet
  • Die Firewall ist IPv6 DHCPv6 Server sofern eine Prefix Delegierung über WAN erhältlich war, ebenso wird SLAAC aktiviert
  • Der DNS Resolver ist aktiv, so dass die Firewall via LAN DNS Anfragen beantworten kann
  • SSH ist deaktiviert
  • Das WebGUI läuft auf Port 443 via HTTPS
  • Standardzugangsdaten sind gesetzt auf Benutzername: admin und Password: pfsense.

Konfigurationsanpassungen für IT-Zukunft-Schule Netzwerk

Für die Verwendung der pfSense in einem IT-Zukunft Schule Netzwerk müssen verschiedene Änderungen an der Netzwerkkonfiguration der pfSense durchgeführt werden.

WAN-Schnittstelle

  • DHCPv6 deaktivieren (Debian Edu unterstützt leider noch kein IPv6 nativ)
  • IPv4: als DHCP Client konfigurieren und IP-Adresse vom Internet-Uplink-Router beziehen

LAN-Schnittstelle

  • Hierüber wird das Debian Edu Netzwerk (.intern) angebunden. Debian Edu verwendet standardmäßig das Subnetz 0.0.0.0/8 und erwartet ein Gateway auf der IPv4-Adresse 10.0.0.1

  • D.h. Einrichten einer statischen IPv4-Adresse ist nötig: [10.0.0.1/8 (Achtung: wenn der Internet-Uplink bereits via NAT bereitgestellt wird und auch einen Adressbereich des 10/8er Netzes nutzt, dann muss hier ein kleinerer Ausschnitt aus dem 10/8er Netz genutzt werden.

  • IPv4 DHCP-Server deaktivieren (wichtig, IPv4-DHCP-Server ist tjener.intern)

OPT1-Schnittstelle

  • eventuell als Backbone-Schnittstelle einrichten (172.16.0.253/24, ebenfalls kein IPv6).

Alternativ können auch Debian Edu Netzwerk und Backbone-Netzwerk über VLANs aggregiert werden und dann der VLAN-Trunk über die LAN-Schnittstelle der Firewall in eine VLAN-fähige Switch eingespeist werden. Für das Debian Edu Netzwerk ist dann die VLAN-ID 2 zu verwenden, für das Backbone-Netzwerk die VLAN-ID 3.

Netzwerkkonfigurationsschritte (s.o.) während Post-Install Setup

Beim ersten Start einer pfSense wird während des Bootvorgangs einige Frage bzgl. Netzwerkkonfiguration gefragt. Hier die Anworten für eine pfSense in einem IT-Zukunft-Schule Setup:

Do VLANs need to be set up first?
If VLANs will not be used, or only for optional interfaces, it is typical to
say no here and use the webConfigurator to configure VLANs later, if required.

Should VLANs be setup now [y|n]? n

If the names of the interfaces are not known, auto-detection can
be used instead. To use auto-detection, please disconnect all
interfaces before pressing 'a' to begin the process.

Enter the WAN interface name or 'a' for auto-detection
(<nic0> <nic1> <nic2> or a): <nic0>

Enter the LAN interface name or 'a' for auto-detection
NOTE: this enables full Firewalling/NATE mode.
(<nic1> <nic2> a or nothing if finished): <nic1>

Enter the Optional 1 interface name for 'a' for auto-detection
(<nic2> a or nothing if finished): <nic2>

The interfaces will be assigned as follws:

WAN -> <nic0>
LAN -> <nic1>
OPT1 -> <nic2>

Do you want to proceed [y|n]?

Wenn alle obigen Fragen beantwortet sind, fährt die pfSense Firewall zu Ende hoch und präsentiert dann an der Console ein kleines Aktionsmenü.

Hier bitte Punkt 2) auswählen: Set interface(s) IP address.

Available interfaces:

1 - WAN (<nic0> - dhcp, dhcp6)
2 - LAN (<nic1> - static)
3 - OPT1 (<nic2>)

Enter the number of the interface you wish to configure: 2

Enter the new LAN IPv4 address.  Press <ENTER> for none:
> 10.0.0.1

[...]

Enter the new LAN IPv4 subnet bit count (1 to 31):
> 8

For a WAN, enter the new LAN IPv4 upstream gateway address.
For a LAN, press <ENTER> for none:
> <ENTER>

Enter the new LAN IPv6 address.  Press <ENTER> for none:
> <ENTER>

Do you want to enable the DHCP server on LAN? (y/n) n
Disabling IPv4 DHCPD...
Disabling IPv6 DHCPD...

Do you want to revert to HTTP as the webConfigurator protocol? (y/n) n

[... applying configuration changes ...]
[... summary of changes ...]

Press <ENTER> to continue.

Nach Einrichtung der Netzwerkschnittstellen wird die restliche Firewall-Konfiguration dann über den Webkonfigurator vorgenommen.

Konfiguration via Webkonfigurator

Setup-Wizard im Webkonfigurator nach Neuinstallation

Über den Webkonfigurator lassen sich die Parameter für das System und die Pakete einstellen. Unter Status > Service kann man die laufenden Dienste anhalten und neu starten. Unter Diagnostics lässt sich das System anhalten und neu starten.

Nach einer pfSense-Neuinstallation landed man beim ersten Aufruf des Webkonfigurators in einem Setup-Wizard:

  • durch die zwei ersten Info-Bildschirm einfach durchklicken
  • General Information:
    • Hostname: ändern auf "gateway"
    • Domain: ändern auf "intern"
    • >> Next

  • Time Server Information
    • Time server hostname: (so lassen)
    • Timezone: Europe/Berlin (ändern)
    • >> Next

  • Configure WAN Interface
    • (alles so lassen... außer wenn der Uplink der Schule keinen DHCP-Server hat, bzw. wenn eine statische WAN-IPv4 Adresse vergeben werden muss)
    • >> Next

  • Configure LAN Interface
    • (alles so lassen...)
    • >>> Next

  • Set Admin WebGUI Password
    • Admin Password: ****************** (starkes Kennwort ausdenken und notieren)
    • Admin Password AGAIN: ****************** (Kennwort wiederholen)
    • >>> Next

  • Reload configuration
    • >>> Reload

  • Wizard completed
    • Finish

ACHTUNG: AB HIER MUSS DIE DOKUMENTATION ÜBERARBEITET WERDEN!!!!

Firewallregeln konfigurieren

DNS-Resolver

Unter Services > DNS Resolver werden die Einstellungen für den DNS-Resolver definiert.

General

Enabled

yes

Listen Port

53

Network Interfaces

All

Outgoing Network Interface

WAN

System Domain Local Zone Type

Transparent

Host Overrides:

Host

Domain

IP

Description

www

google.de

216.239.32.20

www

google.com

Alias for www.google.de

www

google.co.uk

Alias for www.google.de

Advanced

Hide Identity

yes

Hide Version

yes

Harden DNSSEC Data

yes

Message Cache Size

yes

Outgoing TCP Buffers

10

Incoming TCP Buffers

10

EDNS Buffer Size

4096

Number of Queries per Thread

512

Max. TTL for RRsets und Messages

8640

Min. TTL for RRsets and Messages

0

TTL for Host Cache Entries

15 minutes

Number of Hosts to Cache

10000

Unwanted Reply Threshold

Disabled

Log Level

1

Aliase

Unter Firewall > Aliases werden die Aliase für bestimmte Netzwerkadressen etc. definiert.

Gruppiert sind diese nach IP, Ports und URL und können je nach Standort unterschiedlich benötigt sein.

IP

Name

Values

Description

Displayserver

10.0.2.19

Vertretungsplan-Displays via DisplayServer (nur an bestimmten Standorten benötigt)

EMAIL_CLIENTS

10.6.0.50, 10.6.0.49

PC am Tresen der Schulbibliothek (Beispielhaft, n

ITZkS_VpnSrv

vpn.it-zukunft-schule.de

VPN Server ITZkS (an allen Standorten nötig)

public_WWW

<Internetadresse der Schulhomepage>

Schul-Homepage <Schule>

Ports

Name

Values

Description

MAIL_PROTOS

25, 110, 143, 465, 587, 993, 995

Email Protocols

WebLike_Ports

80, 21, 443, 70, 210, 280, 488, 591, 777

Ports accessible through Squid

Regeln für die Netzwerke

Unter Firewall > Rules werden die Firewall-Regeln des pfSense Systems aufgerufen.

Action

Logged

Protocol

Source

Port

Destination

Port

Gateway

Queue

Schedule

Description

block

no

*

Reserved (Not assigned by IANA)

*

*

*

*

*

Block bogon networks

pass

yes

IPv4 TCP/UDP

172.16.0.88

*

This Firewall

1194 (OpenVPN)

*

none

Incoming OpenVPN from Backup-Server

pass

no

IPv4 ICMP

172.16.0.0/24

*

This Firewall

*

*

none

EDUCATION (LAN) Regeln

Action

Logged

Protocol

Source

Port

Destination

Port

Gateway

Queue

Schedule

Description

pass

no

*

*

*

EDUCATION Address

443, 80, 22

*

*

Anti-Lockout Rule

pass

no

IPv4 TCP/UDP

10.0.2.2

*

*

*

*

none

allow all from Tjener

pass

no

IPv4 ICMP

*

*

*

*

*

none

always allow ICMP

pass

no

IPv4 UDP

LAN net

*

ITZkS_VpnSrv

1197

*

none

VPN-Access to ITZkS-VPN-Server (<SCHULE>), Port muss an Schule angepasst werden!!!(1)

pass

no

IPv4 UDP

LAN net

*

ITZkS_VpnSrv

1194

*

none

VPN access to ITZkS-VPN-Server (ADMINS)

pass

no

IPv4 TCP

EMAIL_CLIENTS

*

*

MAIL_PROTOS

*

none

Allow e-Mailing from BIB_TRESEN machines Standortabhängig

pass

no

IPv4 TCP

10.0.2.5

*

*

*

*

none

internet access rule filter.intern

pass

no

IPv4 TCP

DisplayServer

*

public_WWW

*

*

none

Vertretungsplan-Displays holen PDFs direkt ab Standortabhängig

(1) Port ist auf vidar unter /etc/openvpn/itzks-<SCHULE>.conf abzulesen.

WIFILEHRER

Action

Logged

Protocol

Source

Port

Destination

Port

Gateway

Queue

Schedule

Description

block

no

IPv4 *

*

*

172.16.0.0./24

*

*

none

No access to BACKBONE network

block

no

IPv4 *

*

*

EDUCATION net

*

*

none

No access to EDU network

block

no

IPv4 *

*

*

WIFIGAESTE net

*

*

none

No access to WIFIGAESTE network

block

no

IPv4 *

*

*

WIFISCHUELER net

*

*

none

No access to WIFISCHUELER network

pass

no

IPv4 *

WIFILEHRER net

*

*

*

*

none

Allow everything except previously blocked

WIFISCHUELER

Action

Logged

Protocol

Source

Port

Destination

Port

Gateway

Queue

Schedule

Description

block

no

IPv4 *

*

*

172.16.0.0./24

*

*

none

No access to BACKBONE network

block

no

IPv4 *

*

*

EDUCATION net

*

*

none

No access to EDU network

block

no

IPv4 *

*

*

WIFIGAESTE net

*

*

none

No access to WIFIGAESTE network

block

no

IPv4 *

*

*

WIFILEHRER net

*

*

none

No access to WIFILEHRER network

pass

no

IPv4 *

WIFISCHUELER net

*

*

*

*

none

Allow everything except previously blocked

WIFIGAESTE

Action

Logged

Protocol

Source

Port

Destination

Port

Gateway

Queue

Schedule

Description

block

no

IPv4 *

*

*

172.16.0.0./24

*

*

none

No access to BACKBONE network

block

no

IPv4 *

*

*

EDUCATION net

*

*

none

No access to EDU network

block

no

IPv4 *

*

*

WIFILEHRER net

*

*

none

No access to WIFILEHRER network

block

no

IPv4 *

*

*

WIFISCHUELER net

*

*

none

No access to WIFISCHUELER network

pass

no

IPv4 *

WIFIGAESTE net

*

*

*

*

none

Allow everything except previously blocked

OpenVPN Regeln

Action

Logged

Prototocol

Source

Port

Destination

Port

Gateway

Queue

Schedule

Description

pass

no

IPv4 ICMP

*

*

LAN net

*

*

none

always allow ICMP

pass

no

IPv4 TCP

*

*

LAN net

22

*

none

VPN Clients (e.g. backup-01) may SSH into all machines

Captive Portal

Konzept

Für die Bereitstellung einer WiFi-Umgebung wird die "Captive Portal"-Funktion in pfSense für Schulen eingerichtet. Es werden 4 WiFi-Netze bereitgestellt:

  • <SCHULE>-Edu -> ohne Captive Portal, systemweite WPA-PSK passphrase

  • <SCHULE>-Lehrer -> mit Captive Portal, Anmeldung mit Benutzername+Kennwort via RADIUS+LDAP Server auf TJENER

    • - Großzügiger Zugriff auf Internet-Dienste - Transparenter Proxy ohne Inhaltsfilter
  • <SCHULE>-Schueler -> mit Captive Portal, Anmeldung mit Benutzername+Kennwort via RADIUS+LDAP Server auf TJENER

    • - Stark eingeschränkter Zugriff auf Internet-Dienste - Transparenter Proxy mit Inhaltsfilter
  • <SCHULE>-Gastzugang -> mit Captive Portal auf Basis von "Vouchers"

Netzwerk-Layout

Jedes dieser WiFi-Netze wird über eine separate ESSID bereit gestellt. Verbinden sich Clients mit einer der ESSID landen sie (per DHCP) in einem von vier (eigentlich drei) dedizierten Subnetzen:

  • <SCHULE>-Edu -> 10.0.0.0/8 (wie andere Edu-Clients auch)

  • <SCHULE>-Lehrer -> 172.27.0.0/16

  • <SCHULE>-Schueler -> 172.28.0.0/16

  • <SCHULE>-Gastzugang -> 172.29.0.0/16

Alle Access Points werden über einen VLAN Trunk versorgt. Auf diesem VLAN-Trunk liegen die vier oben genannten Subnetze. Die Subnetze im 172er Bereich werden als VLAN-Trunk bis in das "BLUE" Interface der pfSense geführt, das 10er Netz auf der nächstgelegenen managebaren Switch "aussortiert" und im Edu-VLAN der Schule verteilt.

VLAN-Layout

Die VLANs für die 172er Netze werden wie folgt konfiguriert:

  • <SCHULE>-Lehrer -> VLAN Name: WiFi-Lehrer, VLAN Id: 27

  • <SCHULE>-Schueler -> VLAN Name: WiFi-Schueler, VLAN Id: 28

  • <SCHULE>-Gastzugang -> VLAN Name: WiFi-Gastzugang, VLAN Id: 29

In der pfSense werden (via BLUE Netzwerkschnittstelle) obige VLANs voneinander getrennt und drei verschiedenen "Captive Portal Zonen" zugeordnet.

Captive Portal Zonen

  • <SCHULE>-Lehrer -> 172.27.0.0/16

    • - Einstellungsabweichungen von den Defaults hier listen

  • <SCHULE>-Schueler -> 172.28.0.0/16

    • - Einstellungsabweichungen von den Defaults hier listen

  • <SCHULE>-Gastzugang -> 172.29.0.0/16

    • - Einstellungsabweichungen von den Defaults hier listen

Nutzungshinweise für Captive Portal

Nutzungshinweise werden hier gelistet.

Konfigurationen auf Konsolenebene

Um auf der Konsolenebene besser arbeiten zu können sollten einige Programme nachinstalliert und einige Parameter konfiguriert werden. Zum Erreichen der Konsole im Auswahlmenü 8 drücken.

Danach kann man folgende Konfigurationen vornehmen:

  • Tastaturlayout auf Deutsch einstellen:  kbdcontrol -l /usr/share/vt/keymaps/de.kbd 

  • Software nachinstallieren (muss kompiliert werden, nachfolgend erster Schritt):
    • Paketverwaltung installieren:  pkg 

    • Paketlisten aktualisieren:  pkg update 

    • Prozessmonitor htop installieren:  pkg  install htop 

    • Editor mc installieren:  pkg  install mc 

  • Schulname auf HTML Template ändern: in /usr/pbi/dansguardian-amd64/local/share/dansguardian/languages/german/template.html "IHRE FIRMA" ersetzen

  • Cachemanager installieren (noch nicht fertig!, nachfolgend Ideensammlung):
    • ln -s /usr/pbi/squid-amd64/local/libexec/squid/cachemgr.cgi cachemgr.cgi
    • /usr/pbi/squid-amd64/local/etc/squid/cachemgr.conf editieren: (z.B. via "Diagnostics" > "Edit File")

      check this:
      
      Credit to the post HERE for getting me started, but here's a neater solution to accessing the manager.
      
      From a pfSense shell, first enable writes to the file system if using nanobsd.
      
      Code: [Select]
      
      /etc/rc.conf_mount_rw
      
      
      Then enter the following commands to enable the web page.
      
      Code: [Select]
      
      cd /usr/local/www
      ln -s /usr/local/libexec/squid/cachemgr.cgi
      cd /usr/local/etc/squid
      cp cachemgr.conf.default cachemgr.conf
      
      
      No need to modify from the default.
      
      Next, modify the file at /usr/local/pkg/squid.xml adding the lines highlighted below in red, starting at line 94.
      
                      <tab>
                              <text>Local Users</text>
                              <url>/pkg.php?xml=squid_users.xml</url>
                      </tab>
                      <tab>
                              <text>CacheMgr</text>
                              <url>/cachemgr.cgi?host=localhost&amp;port=3128&amp;user_name=&amp;operation=menu&amp;auth=" target="_blank</url>
                      </tab>
              </tabs>
              <!-- Installation -->
      
      
      On nanobsd, switch back to read-only.
      
      https://forum.pfsense.org/index.php?topic=67607.0
      
      https://forum.pfsense.org/index.php?topic=14609.0

DNS-SD via mDNS über Netzwerkgrenzen hinweg reflektieren (Reflexionsdienst)

  • Folgende grundlegende Informationen sollten zuerst gelesen werden: DNS-SD & mDNS.

Installation des Avahi-Plugins

  1. System -> Package-Manager -> Available Packages

  2. "Avahi" in die Suchzeile eingeben und installieren

  3. Avahi-Plugin unter Services -> Avahi einrichten.

  4. Gegebenenfalls Dienste-Whitelist einrichten. Siehe Häufig benötigte mDNS Dienste.

Firewall-Regeln hinzufügen

Für jedes Netzwerk, welches mDNS-Pakete empfangen und/oder versenden können soll, müssen folgende Regeln aufgestellt werden:

Action

Logged

Protocol

Interface

Source

S-Port

Destination

D-Port

Description

pass

no

IPv4 udp

<MDNS-NETZWERK>

*

*

224.0.0.251

5353

mDNS (4)

pass

no

IPv6 udp

<MDNS-NETZWERK>

*

*

ff02::fb

5353

mDNS (6)

Wichtig: Jetzt muss nur noch sichergestellt werden, dass alle Dienste, welche per DNS-SD beworben werden auch aus den anderen Netzwerken erreichbar sind. Dafür müssen weitere Ports geöffnet werden!

IT-Zukunft Schule: Technik/Installation/Firewall/Pfsense (zuletzt geändert am 2023-03-22 10:38:00 durch DanielTeichmann)