Um die Sicherheit des Heimnetzwerkes gewährleisten zu können benötigt unser Raspberry Pi Router einer Firewall. Diese soll unerlaubte Zugriffe als auch unerlaubten Datentransfer verhindern.
Wir werden hier eine Firewall mit Hilfe der Linux spezifischen iptables konfigurieren und anzuwenden lernen.
Nein vorerst noch nicht mit den iptables, sondern wir probieren es vorerst mit ufw. Ufw hat in meinen Augen den Vorteil, dass es komfortabler anzuwenden ist. Aber auch diese Methode hat seine Tücken. Im Netz findet man viele Beispiele für bestimmte Firewall Regeln aber im Fall eines Routers gibt es noch Regeln die bevor man die üblichen Regeln anwenden kann konfiguriert werden müssen.
Hierzu zählt, dass man Ufw mitteilen muss, IP-Forwarding zu aktivieren. Dies geschieht in der Datei /etc/ufw/sysctl.conf hier ist die Zeile mit dem Eintrag "net.ipv4ip_forward=1" auszukommentieren.
Anschließend ist noch das Masquerading zu aktivieren. Dies muss man in der Datei /etc/ufw/before.rules aktivieren. Hierzu gehören die folgenden Zeilen:
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 192.XXX.X.X/24 -o eth1 -j MASQUERADE
COMMIT
ist nun die abgeänderte Datei gespeichert so muss man den ufw neu laden. Achtung: Wenn sie den Raspi über das Netzwerk per SSH konfigurieren so müssen sie unbedingt vorher SSH über ufw freischalten, denn sonst sperren sie sich nach einem Neustart des Raspis selbst aus!
Also aktivieren wir zuvor ssh mit sudo ufw allow ssh oder alternativ mit der Angabe der Portnummer sudo ufw allow 22 bevor wir ufw neu starten.
ufw können sie nun mit sudo ufw disable && ufw enable neu starten.
Bevor man ufw Regeln weiter ausbaut und die Firewall an die persönlichen Bedürfnissen anzupassen versucht sollte man noch folgendes immer bedenken.
Die Regeln in /etc/ufw/before.rules werden von den Regeln in /etc/ufw/users.rules und diese wiederum von den Regeln in /etc/ufw/after.rules überschrieben.
Datei /etc/ufw/sysctl.conf
IP-Forwarding aktivieren
In der Datei /etc/ufw/sysctl.conf ist das IP Forwarding zu aktivieren indem man die Zeile net.ipv4ip_forward=1 auskommentiert bzw. in die Datei hinzufügt.
Datei /etc/ufw/before.rules
Masquerading aktivieren
Hierfür sind folgende Einträge zu machen:
*nat
:POSTROUTING ACCEPT [0:0]
# Forward Traffic from eth1 through eth0
-A POSTROUTING -s 192.XXX.X.X/24 -o eth1 -j MASQUERADE
COMMIT
/etc/default/ufw
In dieser Datei sind für UFW Standardeinstellungen vorgegeben.
DEFAULT_FORWARD_POLICY DROP auf ACCEPT ändern wenn Programme nicht mehr auf das Internet zugreifen können.
UFW Befehlsübersicht und Beispiele
Hier sind einige Befehle zu ufw angefüht.
sudo ufw default deny incoming Setzt die Default Regel für eingehenden Datenverkehr, in diesem Beispiel auf verbieten.
sudo ufw default allow outgoing Setzt die Default Regel für ausgehenden Datenverkehr, in diesem Beispiel auf erlauben.
sudo ufw allow ssh oder sudo ufw allow 22 Zugriff von allen Ports über ssh erlauben
sudo ufw deny http Zugriff verbieten
sudo ufw allow | deny | reject SERVICE Grundlegender Befehlsaufbau um bestimmte Sevices z.B. CIFS für Samba erlauben oder zu verbieten. Bei dem Parameter reject handelt es sich ebenfalls wie bei deny um eine Blockierung des Netzverkehrs, jedoch bekommt der Absender des blockierten Pakets ein Rückmeldung. Alle auf einem Linux System verfügbaren Services sind in der Datei /etc/services eingetragen z.B. ftp, http, https...
sudo ufw deny 113 Verbietet Traffic auf spezifischen Port, in unserem Beispiel Port 113
sudo ufw deny out from any to 192.168.8.1 ausgehenden Verkehr zu 192.168.8.1 blockieren
sudo ufw allow http oder sudo ufw allow 80 Zugriff von allen Ports über http erlauben
sudo ufw allow http/tcp oder sudo ufw allow 80/tcp erlaubt Traffic über Port 80 nur mit dem TCP - Protokoll
sudo ufw allow 1720/udp erlaubt Traffic über Port 1720 nur mit dem UDP - Protokoll
sudo ufw allow ftp oder sudo ufw allow 21/tcp Zugriff von allen Ports über FTP erlauben
sudo ufw allow 6000:6007/tcp spezifischen Port Bereich erlauben
sudo ufw allow 6000:6007/udp spezifischen Port Bereich erlauben
sudo ufw allow 60000:61000/udp spezifischen Port Bereich erlauben z.B. für Mosh
sudo ufw allow mosh spezifischen Port Bereich erlauben für Mosh. Ist in der App List von UFW enthalten.
sudo ufw allow from 12.12.12.63 erlaubt Verbindung von einer spezifischen IP-Adresse
sudo ufw allow from 12.12.12.63 to any port 22 spezifische IP-Adresse auf Port 22 erlauben
sudo ufw allow from 12.12.12.0/24 erlaubt Verbindungen aus einem spezifischen Subnetz
sudo ufw allow from 12.12.12.0/24 to any port 22 Subnetze erlauben
sudo ufw allow from 12.12.12.63 to any port 22 proto tcp erlaubt eine Verbindung von einer spezifischen IP-Adresse zu einem bestimmten Port mit TCP Protokoll
sudo ufw allow from 12.12.12.63 to deny port 22 proto tcp verbietet eine Verbindung von einer spezifischen IP-Adresse zu einem bestimmten Port mit TCP Protokoll
sudo ufw allow from 12.12.12.63 to any port 22 proto udp erlaubt eine Verbindung von einer spezifischen IP-Adresse zu einem bestimmten Port mit UDP Protokoll
sudo ufw allow from 12.12.12.63 to deny port 22 proto udp verbietet eine Verbindung von einer spezifischen IP-Adresse zu einem bestimmten Port mit UDP Protokoll
sudo ufw app list zeigt eine Liste von Anwendungen (Profile) die unterstützt werden an z.B. CIFS für Samba
sudo ufw app info PROFILE zeigt Informationen zu einem Profil aus der App-Liste z.B. CIFS
sudo ufw app update PROFIL update PROFILE z.B. CIFS
sudo ufw app default ARG setzt default Application Regel
sudo ufw reload lädt die Firewall Regeln neu und aktiviert somit neu hinzugefügte Regeln
sudo ufw status zeigt an ob ufw aktiv ist und welche Regeln geladen sind.
sudo ufw disable deaktiviert die Firewall Regeln
sudo ufw enable aktiviert die Firewall Regeln
sudo ufw reset ufw-Regeln komplett löschen
sudo ufw status numered Regelausgabe mit vorgestellten Nummern
sudo ufw status verbose Status von ufw prüfen
sudo ufw delete 2 Löscht Zeile 2 der ufw Regel
sudo ufw disable && ufw enable Deaktiviert und aktiviert ufw
sudo ufw logging on aktiviert das Logging, somit werden sämtliche Aktionen der UFW mitgeschrieben.
sudo ufw logging off deaktiviert das Logging
Quellen:
- https://www.bytebee.de/raspberry-firewall/
- Raspberry Pi als Firewall einrichten
- Linux-Praxisbuch Linux-Firewall mit IP-Tables
- UFW Essentials: Common Firewall Rules and Commands
- UFW und GUFW - Die Linux Firewall ganz einfach konfigurieren
- Docker, ufw und iptables: Ports nicht automatisch öffnen
- Iptables Grundlagen für Desktop-Nutzer
- Iptables - Die Linux Firewall professionell konfigurieren
- UFW Firewall - Einrichtung: Einrichtung und Konfiguration eines Firewalls für den Apache2 - Webservers auf einem Raspberry Pi - Tutorial Teil 3
- Server mit UFW absichern
- UFW Firewall rules
- UFW (Ubuntuusers)
- iptables Befehle
- iptables-Tutorial: So konfigurieren Sie die Filtertabellen des Linux Kernels
- iptables2
- Firewall für Raspberry Pi mit iptables
- Raspi als OpenVPN Gateway mit UFW Firewall
- Einführung in Linux IPTABLES (Teil 1 Überblick) (Video auf Youtube)
- Einführung in Linux IPTABLES (Teil 2 Ein Beispiel Firewall Skript) (Video auf Youtube)
- Canonicals Uncomplicated Firewall erleichtert das Einrichten einer Firewall - Simpler Brandschutz Spoiler Nur für registrierte Besucher. Bitte einloggen!
- UFW erleichter das Einrichten einer Firewall - Simpler Brandschutz Spoiler Nur für registrierte Besucher. Bitte einloggen!
