#acl AdminGroup:read,write,delete,revert,admin All:read = 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 [[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. == 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 Gegebenenfalls beim nächsten Abfragebildschirm Anpassungen an den gebotenen Einstellungen vornehmen, sonst die Einstellungen akzeptieren und fortfahren. Die Installationsmethode '''Quick/Easy Install''' kann für Systeme genutzt werden, in denen keine zwei Festplatten als {{{Mirror}}} funktionieren sollen, sonst '''Custom Install''' auswählen und den {{{GEOM mirror}}} erstellen. Danach wird mit der Installation fortgefahren. Bei Nachfrage den '''Standard Kernel''' auswählen. Nun neu starten und den Bootdatenträger entfernen. Die Installationsschritt sind im einzelnen im [[https://docs.netgate.com/pfsense/en/latest/install/install-walkthrough.html|"Installation Walkthrough"]] beschrieben. == Standardkonfiguration == Nach einem Neustart hat 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. Nach Einrichtung der Netzwerkschnittstellen wird die restliche Firewall-Konfiguration dann über den Webkonfigurator vorgenommen. == Konfiguration via Webkonfigurator == Ü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. 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 || || Schul-Homepage || ===== 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. ==== RED (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 || || || ==== GREEN (LAN) Regeln ==== || Action || Logged || Protocol || Source || Port || Destination || Port || Gateway || Queue || Schedule || Description || || pass || no || * || * || * || GREEN 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 (), ''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-.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 * || * || * || GREEN 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 * || * || * || GREEN 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 * || * || * || GREEN 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: * -Edu -> ohne Captive Portal, systemweite WPA-PSK passphrase * -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 * -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 * -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: * -Edu -> 10.0.0.0/8 (wie andere Edu-Clients auch) * -Lehrer -> 172.27.0.0/16 * -Schueler -> 172.28.0.0/16 * -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: * -Lehrer -> VLAN Name: !WiFi-Lehrer, VLAN Id: 27 * -Schueler -> VLAN Name: !WiFi-Schueler, VLAN Id: 28 * -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 ==== * -Lehrer -> 172.27.0.0/16 - Einstellungsabweichungen von den Defaults [[Technik/Installation/pfSenseCaptivePortal/Lehrer|hier]] listen * -Schueler -> 172.28.0.0/16 - Einstellungsabweichungen von den Defaults [[Technik/Installation/pfSenseCaptivePortal/Schueler|hier]] listen * -Gastzugang -> 172.29.0.0/16 - Einstellungsabweichungen von den Defaults [[Technik/Installation/pfSenseCaptivePortal/Gaeste|hier]] listen === Nutzungshinweise für Captive Portal === Nutzungshinweise werden [[Technik/Nutzungshinweise/pfSenseCaptivePortal|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. Local Users /pkg.php?xml=squid_users.xml CacheMgr /cachemgr.cgi?host=localhost&port=3128&user_name=&operation=menu&auth=" target="_blank 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 }}}