Aus dem Raspberry Pi eine Firewall machen
Eine Firewall sorgt für Sicherheit. Jeder Router besitzt diese Funktion, oft aber nur mit eingeschränktem Zugriff. Für ein individuelles Sicherheitskonzept ist eine andere Lösung besser.
Wenn ein Rechner ausschließlich für Bürotätigkeiten genutzt wird, macht man sich als Nutzer kaum Gedanken über eine Firewall. Wenn er jedoch zur Heimautomatisierung dient oder sonstige IoT-Funktionen bietet, wird eine Firewall dringend gebraucht. Denn um auch aus der Ferne Zugriff auf die verschiedenen Funktionen zu haben, muss eine Verbindung zum Internet bestehen. Da hier zahlreiche Gefahren und Schadsoftware drohen, muss unbedingt auf eine Firewall gesetzt werden.
Es gibt grundsätzlich zwei verschiedene Arten, um den Raspberry Pi zur Firewall umzufunktionieren. Im Folgenden lernen sie beide kennen. Eine wichtige Voraussetzung, um diese Funktion nutzen zu können, ist Freude an der Arbeit mit Terminalbefehlen und Konfigurationsdateien. Hinzu kommt, dass sich aufgrund der Weiterentwicklung der einzelnen Komponenten leicht Fehler auftun, die nur durch eine gezielte Internetrecherche gelöst werden können. Denn was mit dem Raspberry 3 problemlos funktioniert, muss mit dem Raspberry 2 noch lange nicht klappen. Das liegt nicht zuletzt daran, dass die Hersteller von Chipsätzen nur sehr wenige Informationen über ihre Produkte preisgeben, sodass Entwickler Schwierigkeiten haben, geeignete Unterstützungen zu realisieren.
So errichten Sie mit dem Raspberry Pi eine Firewall
Die WLAN-Bridge
Die erste Möglichkeit, einen Raspberry Pi als Firewall zu nutzen, besteht darin, ihn in eine sogenannte WLAN-Bridge zu verwandeln. Hierbei ist zu beachten, dass ein Raspberry nur über einen Ethernet-Anschluss verfügt, wohingegen Router mehrere besitzen. Das bedeutet, dass ein wenig Bastelarbeit und handwerkliches Geschick gefragt sind, um das Gerät für den Netzwerkverkehr tauglich zu machen. Wenn das gelingt, werden sämtliche Daten mittels eines Ethernet-Kabels mit dem Router ausgetauscht und hierbei durch die Raspberry Pi Firewall geschützt. Eine Anmeldung der Clients erfolgt direkt am Raspberry Pi an, sodass sie ausschließlich mit gefilterten Daten arbeiten. Das gelingt komplett ohne den Einsatz von Kabeln.
Für dieses Vorgehen wird das Tool "Uncomplicated Firewall" genutzt, das zwar eigentlich keine eigene Firewall ist, aber die Nutzung der integrierten Frewall-Optionen vereinfacht. De Installation erfolgt über die Konsole mittels des Codes
sudo apt-get install ufw
Bei der Installation werden automatisch einige Regeln festgelegt, die für die Firewall gelten. Das bedeutet, dass das System von Hause aus annimmt, dass nur ausdrücklich zugelassene Verbindungen erlaubt sind. Wegen dieser Annahme ist es ratsam, eine SSH-Verbindung zuzulassen, um über ein externes System Zugriff auf den Raspberry gewinnen zu können. Hierfür ist der Befehl
sudo ufw allow ssh
geeignet. Jetzt erhalten Sie die Information "Rules updated" und können die Frewall starten. Hierfür wird der Befehl
sudo ufw enable
benötigt, der das Regelwerk aktiviert. Sie erhalten dann eine Systemmeldung, dass dieser Schritt eventuell Einfluss auf die vorhandene SSH-Verbindung nehmen könnte. Fahren Sie dennoch fort. Falls Sie die Firewall irgendwann einmal deaktivieren möchten, können Sie das mit dem Befehl
sudo ufw disable
tun. Zudem haben Sie die Möglichkeit, weitere Regeln zu erlauben, und können das bereits über "ssh" erledigen. Zum Beispiel besteht die Möglichkeit, den Raspberry P mittels
sudo ufw allow http
als Webserver zu nutzen und das Protokoll HTTP zu erlauben. Wenn Sie das Gerät als Dateiserver verwenden wollen, erlauben Sie statt HTTP einfach CIFS und schalten somit SMB frei. Es stehen aber noch viele weitere Anwendungen zur Auswahl, die über bestimmte Zusatzregeln genutzt werden können. Über
sudo ufw app list
ist es möglich, sich eine Liste mit diesen Anwendungen anzeigen zu lassen. Wenn Sie eine davon nutzen wollen, lassen sie sich über "allow appname" die dazugehörigen Regeln aktivieren.Die Konfiguration
Durch den Einsatz der Firewall werden der Raspberry selbst und die darauf aktiven Anwendungen geschützt. Auf dieser Grundlage ist es nicht mehr schwer, das gesamte Netzwerk sicherer zu gestalten. Die Bridge arbeitet hierbei mit dem Standardgateway, sodass die Verbindung zum Internet beispielsweise über einen DSL-Anschluss hergestellt wird. Zudem wird der zum Router gehörige DHCP-Router zum Einsatz gebracht.
Sobald geklärt ist, ob der Chipsatz des externen WLAN-Dongles mit dem AP-Modus zurecht kommt und als WLAN-Access-Point eingesetzt werden kann, gelingt die Systemeinrichtung angenehm leicht. Um das herauszufinden, wird der Befehl
iw list ? grep AP
benötigt. Sollten mehr als eine Zeile mit "AP" angezeigt werden, ist alles in Ordnung und die Konfiguration kann weitergehen. Wenn der Befehl "iw" hingegen nicht angezeigt wird, muss mittels "sudo apt install iw" zuerst eine Nachinstallation erfolgen. Eine weitere Voraussetzung für eine erfolgreiche Installation ist der aktive DHC Client Daemon. Ob er aktiv ist, lässt sich über den Befehl
service dhcpd status
leicht herausfinden. Zudem muss geprüft werden, ob es eine Ethernet-Schnittstelle und einen WLAN-Adapter gibt. Hierzu geben Sie
ip ?
in und schon erhalten Sie alle benötigten Angaben. Für die Ethernet-Schnittstelle wird entweder "eth0" oder "enp5/6s0" angezeigt und für den WLAN-Adapter "wl[…]". Um die Bridge einsetzen zu können, werden der Daemon als Access-Point sowie die zu der Netzwerkbrücke gehörige Software benötigt. Der Access-Point wird "hostapd" abgekürzt und hat die Aufgabe, WLAN-Funktionen zu verschlüsseln und die Clients zu authentifizieren. Über das Paket "bridge-utils" erhalten Sie die Brücke, die Sie mittels
sudo apt-get install hostadp bridge-utils
installieren. Sobald das gelungen ist, wird der Access Point konfiguriert. Um die Konfigurationsdatei zu editieren, wird der Befehl
sudi nano /etc/hostapd/hostpad.conf
verwendet, um dann verschiedene Zeilen einzutragen. So wird bei "SSID" beispielsweise der Netzwerkname des Netzwerks angegeben, das die Clients verwendet, und anschließend ein Kanal ausgewählt. Hier ist zu empfehlen, einen Kanal zu wählen, der von möglichst wenigen Nachbarn für ihren Router gewählt wurde. Router wie die Fritzbox zeigen beispielsweise an, welcher Kanal von wie vielen Nutzern verwendet wird, sodass Sie leicht den für Sie geeigneten finden. Abschließend muss die Verschlüsselung noch durch ein geeignetes Passwort gesichert werden.
Der Treiber des WLAN-Adapters ist beispielhaft in der Konfigurationsdatei eingetragen. Die notwendigen Angaben sind hier bereits vorhanden, sodass hostapd direkt den geeigneten Treiber wählen und laden kann. Falls es dennoch zu Komplikationen und Fehlern kommt, können Sie aber manuell Einträge ändern. Anschließend werden die Änderungen gespeichert und der Editor geschlossen. Hierbei ist zu beachten, dass das WLAN-Passwort im Klartext angezeigt wird. Deswegen wird eine Beschränkung der Rechte vorgenommen und nur root hat ein Leserecht.
sudo chmod 600 /etc/hostapd/hostapd.conf
Abschließend müssen die IP-Konfiguration der Schnittstelle und die Brückendetails eingerichtet werden. Hierfür ist die Datei
sudo nano /etc/Network/interfaces
wichtig. Jetzt wird Ihnen der Punkt "Netzwerkbrücke" angezeigt, unter dem Sie alle relevanten Einträge finden. Die Ethernet- und WLAN-Adapter werden hier als "eth0" und "wlan0" bezeichnet. In einem weiteren Schritt wird das System neu gestartet und dann mit
hostapd -dd /etc/hostapd/hostapd.conf
geprüft, ob Sie das WLAN wie gewünscht nutzen können.Der LEDE-Lösungsansatz
Der zweite Ansatz, um aus dem Raspberry Pi eine Firewall zu machen, setzt schon deutlich mehr Wissen, Tools und Geschick voraus. So werden neben dem Raspberry Pi unter anderem ein zweiter Ethernet-Port sowie die Distribution LEDE gebraucht. Bei LEDE handelt es sich um ein Fork von Open WRT, das als Router-Software verwendet werden kann. Als zusätzlicher Ethernet-Port bietet sich ein USB-Adapter an. Geeignet sind zum Beispiel der Mos-Chip 7830 von Hama oder der Delock Adapter 62616 mit USB 3.0.
Ganz allgemein sind folgende Schritte zu gehen: Zunächst wird LEDE installiert und anschließend eine Verbindung zwischen Raspberry Pi und der zusätzlichen Ethernet-Schnittstelle hergestellt. Diese Schnittstelle kann zum Beispiel genutzt werden, um einen weiteren Router anzubringen, der dann mit dem Heimnetzwerk verbunden wird. Zuletzt erfolgt die Einrichtung der Schnittstelle zum Router. Für die folgenden Erläuterungen gehen wir von einem Raspberry Pi 3 und dem oben genannten Hama-Adapter aus
Die LEDE-Installation
LEDE lässt sich auf dem Raspberry Pi sehr einfach installieren, da mit dem Projekt PINN direkt die dazugehörige Software mitgeliefert wird. Diese Software ist mit dem grafischen Installer Noobs verwandt. Die aktuelle Version kann von der Projektseite heruntergeladen und anschließend installiert werden. Am besten wird das entsprechende ZIP-Archiv auf eine formatierte SD-Karte gespielt. Anschließend muss eine Verbindung zwischen dem Raspberry Pi und einer Tastatur, einer Maus, einem Monitor und dem Internet hergestellt werden. Wenn der Raspberry Pi jetzt gestartet wird, kann direkt die Distribution "LEDE" ausgewählt werden. Nach erfolgreicher Installation ist ein Neustart des Rechners erforderlich.
LEDE zum Laufen bringen
Nach der Installation erfolgt die Systemkonfiguration über den Browser. Bevor das geschehen kann, müssen einmalig verschiedene Schritte gegangen werden. Wenn LEDE beim Laden des Systems keine Meldungen anzeigt, können Sie auf die Eingabetaste drücken und so die Konsole aufrufen. Hier können sie dann individuelle Netzwerkkonfigurationen vornehmen. Das ist nötig, weil LEDE mit einer statischen IP-Adresse arbeitet. Diese benutzt aber in der Regel der Router, weswegen es zu Problemen kommt. Das Editieren ist ausschließlich im Editor vi und einer US-amerikanischen Tastenbelegung möglich. Hier ist zum Beispiel das Zeichen "/" auf der Taste "-" abgelegt. Im Terminal können Sie dann die entsprechende Konfigurationsdatei mit dem Befehl
vi /etc/config/Network
öffnen. Um die Datei editieren zu können, muss zunächst mittels "*i" der Eingabemodus geöffnet werden. Zum Beenden genügt später die Esc-Taste. Bei der amerikanischen Tastatur ist das "*" auf der Taste "(" hinterlegt. Hier muss unter
config interface 'lan'
die Zeile mit "static" auf "dhcp" geändert werden, sodass dann dort
option proto 'dhcp'
steht. Die hier vorhandene IP-Adresse muss gelöscht werden. Um etwas speichern und schließen zu können, wird unter vi ":x" verwendet. Hierbei ist zu beachten, dass ":" unter "Ö" abgelegt ist. Nachdem alles erledigt ist, muss der Raspberry Pi neu gestartet werden. Er bezieht jetzt vom Router eine neue IP-Adresse, die Sie über ifconfig auf dem Raspberry selbst einsehen oder auf dem Router ablesen können.
Diese IP-Adresse erlaubt es Ihnen nun, sich von jedem beliebigen Rechner im Heimnetzwerk aus mit dem Router zu verbinden. Wenn sie das zum ersten Mal tun, werden Sie dazu aufgefordert, ein Passwort einzugeben. Dieses schaltet automatisch auch den SSH-Zugang frei. Das erlaubt es Ihnen, später auch mit anderen Rechnern Zugriff auf die Systemebene zu erlangen.
Über "System -> Software" laden Sie das für den Ethernet-Adapter benötigte Kernel-Modul schnell und einfach. Hierfür genügt es in der Regel, den entsprechenden Chipsatz anzugeben. Für diesen Artikel wurde zum Beispiel "mcs7830" erfolgreich verwendet. Der Suchbegriff wird unter "Find" eingegeben und anschließend wird beim jeweiligen Paketnamen auf "Install" gedrückt. Ab jetzt wird der gewählte Adapter immer als zusätzlicher Anschluss angezeigt.
Das Interface
Unter "Network -> Interfaces" finden Sie den Punkt "WAN". Dieser muss gelöscht werden, sodass anschließend über "Add new Interface" ein neues Interface angelegt werden kann. Hier sollte ein Interface namens "WAN" mit dem Protokoll "DHCP Client" für den Ethernet-Adapter "eth1" erstellt werden. Somit wird der Anschluss automatisch zur externen Schnittstelle zum Router. Über den Firewall-Tab des WAN-Interfaces kann das Interface dann als Firewall-Zone definiert werden.Die Konfiguration des Ethernet-Anschlusses
Wenn Sie auf "Edit" klicken, haben Sie die Möglichkeit, den LAN-Anschluss "eth0" zu bearbeiten. Sorgen Sie dafür, dass dem internen Netzwerk automatisch IP-Adressen zugewiesen werden, indem Sie den internen Raspberry Pi Anschluss mit einer statischen IP-Adresse und einer DHCP-Funktion versehen. Hierzu muss das vorhandene Protokoll auf "static" geändert werden. Jetzt können Sie eine statische IP-Adresse aus dem bisherigen Adressraum wählen. Außerdem muss "Ipv4 netmask" auf "255.255.255.0" gesetzt werden. Alle anderen Felder müssen nicht ausgefüllt werden.
Es ist wichtig, dass Sie sich die Adresse merken, für die Sie sich entschieden haben. Denn nach dem Klick auf "Save & Apply" ist der Raspberry Pi nur noch über diese Adresse erreichbar. Zudem ist es sinnvoll, unter "Advanced Settings" die Force-Option zu setzen, damit das System nicht durch andere DHCP-Server gestört werden kann. Jetzt rufen Sie das System auf, indem Sie die neue Adresse nutzen, und führen über "System/Reboot" einen Neustart durch. Jetzt steht der zweite Ethernet-Anschluss bereit, sodass weitere Geräte ganz unterschiedlicher Art daran angeschlossen werden können.
Wenn Sie ein internes WLAN nutzen wollen, können Sie jetzt beispielsweise mit einem zweiten Router arbeiten. Vor umfassenden Umbaumaßnahmen sollten Sie jedoch erst einmal einen Rechner unmittelbar an diesen Zusatzanschluss anstecken. Wenn die Konfiguration funktioniert hat, erreichen Sie die LEDE-Oberfläche wieder über die feste IP-Adresse. Wenn das der Fall ist, können Sie alle gewünschten individuellen Anpassungen vornehmen.
Herzlichen Glückwunsch: Sie nutzen jetzt Ihre ganz eigene Firewall. Somit haben Sie einen Schutzwall zwischen Ihrem internen Netzwerk und dem Router errichtet, mit dem Sie auf das Internet zugreifen. Somit müssen Sie sich weniger Sorgen um Schadsoftware und andere Gefahren aus dem Web machen.