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!