2068863

Raspberry Pi als Firewall einrichten - so geht's

06.02.2018 | 14:18 Uhr |

Mit einer Firewall wird der Netzwerkverkehr reglementiert. Zwar besitzt jeder Router eine solche Funktion, allerdings haben Sie darauf nur sehr eingeschränkten Zugriff. Wenn Sie mehr Sicherheit für Ihr Netzwerk wollen, dann bietet sich eine eigene Lösung an.

Wer mit seinem Rechner nur im Internet surft und seine Büroarbeiten erledigt, wird sich mit dem Thema Firewall kaum beschäftigen. Kommen dagegen Geräte für die Heimautomatisierung oder andere IoT-Basteleien zum Einsatz, sieht das schon anders aus. Denn für den Fernzugriff auf Steuerelemente oder Sensoren muss das heimische Netzwerk nach außen für das Internet geöffnet werden. In solchen Szenarien erhöht eine selbst gebaute Firewall die Sicherheit spürbar.

Achtung, Sie verlassen die Komfortzone!

In diesem Artikel lernen Sie zwei verschiedene Ansätze kennen, wie ein Platinenrechner wie der Raspberry Pi als Firewall eingesetzt wird. Allerdings müssen Sie zur Umsetzung schon Spaß mitbringen, mit Terminalbefehlen und manuell in Konfigurationsdateien zu arbeiten. Und da sich alle Komponenten in einer stetigen Weiterentwicklung befinden, stoßen Sie möglicherweise auf Probleme, die sich eventuell nur nach einer intensiveren Recherche im Internet lösen lassen. Was etwa mit dem Raspberry 3 unter einer bestimmten Konfiguration funktioniert hat, muss es mit dem Modell 2 und ansonsten identischen Optionen leider nicht tun. Das hat unter anderem auch damit zu tun, dass die Hersteller von Chipsätzen sich nach wie vor sehr verhalten in ihre Karten schauen lassen, was es den Entwicklern erschwert, die Unterstützung der Geräte zu programmieren.

Die Steuerung von ufw erfolgt über einfache Kommandos in einem Terminal.
Vergrößern Die Steuerung von ufw erfolgt über einfache Kommandos in einem Terminal.

Lösungsansatz 1: WLAN-Bridge einsetzen

Anders als ein Router besitzt der Raspberry nur einen Ethernet-Anschluss. Und diese Tatsache erfordert Anpassungen und Bastelarbeiten, damit der Netzwerkverkehr durch den Ein-Platinen-Rechner geleitet wird. Der erste Lösungsansatz verwandelt den kleinen Computer in eine WLAN-Bridge. Die Daten werden per Ethernet-Kabel mit dem Router ausgetauscht und durchlaufen dabei die Firewall des Raspberry Pi. Die Clients melden sich drahtlos am Raspberry an und beziehen die so gefilterten Datenpakete. Das ist mit Bordmitteln umzusetzen. Zum Einsatz kommt das Programm Uncomplicated Firewall (ufw). Das ist streng genommen keine eigene Firewall im Wortsinn, sondern vereinfacht nur die Konfiguration der ohnehin eingebauten Funktionen. Das Paket installieren Sie wie gewohnt direkt aus einer Konsole heraus mit

sudo apt-get install ufw

Die Installation schließt auch gleich eine Reihe von fundamentalen Regeln für die Firewall ein.

Beispiel: Konfiguration des WLANs, das in der Netzwerkbrücke des Raspberry verwendet werden soll.
Vergrößern Beispiel: Konfiguration des WLANs, das in der Netzwerkbrücke des Raspberry verwendet werden soll.

Firewall aktivieren und Regeln hinterlegen: Im Grundzustand geht das System davon aus, dass nur Verbindungen zugelassen werden, die ausdrücklich erlaubt sind.

Deswegen sollten Sie zunächst die Verbindung per SSH zulassen, um sich von einem externen System auf dem Raspberry anmelden zu können. Das erledigen Sie mit

sudo ufw allow ssh

Das System sollte anschließend mit einem „Rules updated“ antworten. Jetzt können Sie die Firewall starten. Mit

sudo ufw enable

aktivieren Sie das Regelwerk. Die Anwendung weist Sie darauf hin, dass das Kommando eine möglicherweise bestehende SSH-Verbindung beeinträchtigen könnte. Mit „y“ fahren Sie fort. Damit sind die Regeln ab sofort gültig. Mit dem Parameter „disable“ wird die Firewall bei Bedarf wieder deaktiviert – also:

sudo ufw disable

Bei der Einrichtung weiterer Regeln können Sie wie schon oben bei „ssh“ einfach die Protokollbezeichnungen verwenden. Soll der Raspberry als Webserver arbeiten, erlauben Sie den Datenverkehr über das Protokoll HTTP:

sudo ufw allow http

Arbeitet der Computer als Dateiserver, schalten Sie SMB (CIFS) frei. In diesem Fall erlauben Sie das Protokoll „cifs“. Daneben kennt das Regelwerk aber auch eine ganze Reihe von Anwendungen, die spezielle Regeln erfordern. Mit

sudo ufw app list

lassen Sie sich eine Liste der so erkannten Anwendungen ausgeben. Mit „allow appname“ werden die Regeln für die Anwendung dann aktiviert.

Die Bridgefunktionalität und die Details für den Netzwerkzugriff werden ebenfalls in einer Textdatei geregelt.
Vergrößern Die Bridgefunktionalität und die Details für den Netzwerkzugriff werden ebenfalls in einer Textdatei geregelt.


Lesetipp So machen Sie den Raspberry Pi sicherer

Raspberry Pi als sichere Bridge konfigurieren: Mit der Firewall schützt der Raspberry sich selbst und die darauf laufenden Anwendungen. Das ist eine gute Basis, um das Netzwerk insgesamt sicherer zu machen. Eine Bridge verwendet das Standardgateway (also die Verbindung zum Internet etwa über den DSL-Anschluss) und einen bereits vorhandenen DHCP-Server (in diesem Fall den des Routers).

Die Einrichtung des Systems ist an sich nicht schwierig. Je nach Modell (externer WLAN-Dongle) muss erst geprüft werden, ob der Chipsatz den AP-Modus beherrscht, also als WLAN-Access-Point arbeiten kann. Die Abfrage erledigen Sie mit dem folgenden Befehl:

iw list | grep AP

Werden mehrere Zeilen mit „AP“ angezeigt, kann es weitergehen. Wird das Kommando iw erst gar nicht ausgeführt, müssen Sie das Tool erst mit sudo apt install iw nachinstallieren.

Damit die Brücke funktioniert, ist es wichtig, dass der DHCP Client Daemon aktiviert ist. Das prüfen Sie einfach mit diesem Befehl, der „active“ melden sollte:

service dhcpd status

Außerdem müssen sowohl die Ethernet-Schnittstelle als auch der WLAN-Adapter vorhanden sein und funktionieren. Der Befehl

ip l

zeigt die gewünschten Informationen an und meldet Ethernet als „eth0“ oder „enp5/6s0“, ferner den WLAN-Adapter als „wl[…]“.

Für die Bridge werden zwei Komponenten benötigt. Einerseits ein Daemon, der die Aufgabe als Access Point für die WLAN-Geräte übernimmt. Zum anderen die Software für die Netzwerkbrücke. Der Host Access Point Daemon, kurz „hostapd“, ist ein Programm, das WLAN-Funktionen verschlüsselt anbietet und sich um die notwendige Authentifizierung der Clients kümmert. Die Brücke selbst stellt das Paket „bridge-utils“ bereit. Die beiden Pakete werden nun erst einmal installiert:

sudo apt-get install hostapd bridge-utils

Ist die Installation erfolgreich abgeschlossen, beginnt die Konfiguration des Access Points. Dazu editieren Sie zunächst eine Konfigurationsdatei:

sudo nano /etc/hostapd/hostapd.conf

Dort müssen einige Zeilen eingetragen werden. Unter „SSID“ vergeben Sie den Namen für das Netzwerk, das die Clients nutzen können. Außerdem müssen Sie den Kanal (Channel) einstellen. Weichen Sie hier am besten auf Kanäle aus, die nicht von den Routern aus der Nachbarschaft genutzt werden. Zur Kontrolle helfen Router wie die Fritzbox („WLAN –› Funkkanal“), die eine Übersicht anbieten, wie viele andere Funknetzwerke aktuell auf den gleichen Kanälen senden. Schließlich sollten Sie ein sicheres Passwort für die Verschlüsselung setzen. Der ganze Block in der „hostapd.conf“ für die Verschlüsselung sieht dann so aus:

wpa=2
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
wpa_passphrase=das.passwort.

In der Konfigurationsdatei finden Sie einen Beispieleintrag für den Treiber des WLAN-Adapters. Der ist auskommentiert, da hostapd eigentlich automatisch den korrekten Treiber laden sollte. Lediglich wenn es zu keiner Verbindung kommt, können Sie hier manuelle Änderungen vornehmen. Mit Strg-O und Strg-X speichern Sie die Datei und beenden den Editor. Da die Datei das Passwort für das WLAN im Klartext enthält, werden die Rechte so beschränkt, dass nur root Leserecht hat:

sudo chmod 600 /etc/hostapd/hostapd.conf

Jetzt verbleibt noch, die IP-Konfiguration der Schnittstellen einzurichten und die Details der Brücke einzurichten. Dazu editieren Sie mit

sudo nano /etc/network/interfaces

die dafür zuständige Datei. In der Abbildung auf der folgenden Seite sehen Sie unter „Netzwerbrücke“ die wesentlichen Einträge. Die beiden Adapter für Ethernet und WLAN haben hier die Kennung „eth0“ und „wlan0“.

Danach starten Sie das System neu. Mit

hostapd -dd /etc/hostapd/hostapd.conf

können Sie anschließend überprüfen, ob Ihr neues WLAN funktioniert.

Sobald LEDE eine IP-Adresse vom Router erhalten hat, kann die weitere Einrichtung per Browser erledigt werden.
Vergrößern Sobald LEDE eine IP-Adresse vom Router erhalten hat, kann die weitere Einrichtung per Browser erledigt werden.

Lösungsansatz 2: LEDE für Bastler

Der zweite Ansatz ist anspruchsvoller. Neben der Raspberry-Platine und einem zweiten Ethernet-Port benötigen Sie die Distribution LEDE – ein Fork des bekannteren Projekts Open WRT. Dabei handelt es sich im Kern um die Software für den Betrieb eines Routers. Den notwendigen zweiten Ethernet-Anschluss kann ein passender USB-Adapter nachrüsten. In unserem Fall kommt ein USB-Adapter mit einem Mos-Chip 7830 vom Hersteller Hama zum Einsatz (circa 25 Euro). Für Platinen mit USB 3.0 eignet sich der Delock Adapter 62616 (circa 25 Euro).

Die nachfolgende Anleitung hat folgende grundsätzliche Abfolge: Zuerst wird erst die Distribution LEDE installiert, danach die zweite Ethernet-Schnittstelle mit dem Platinenrechner verbunden und schließlich die Schnittstelle zum Router des Providers eingerichtet. Zum Einsatz kommen in diesem Beispiel ein Raspberry Pi 3 und der genannte Hama-Adapter. An die zweite Ethernet-Schnittstelle können Sie am Ende etwa einen weiteren eigenen Router anschließen, mit dem Sie dann Ihr Heimnetzwerk verbinden.

Mit der Statusseite behalten Sie das LEDE-System im Blick.
Vergrößern Mit der Statusseite behalten Sie das LEDE-System im Blick.

LEDE installieren: Die Installation von LEDE auf dem Raspberry ist nicht schwierig. Das Projekt PINN (https://github.com/procount/pinn) hat die Software mit an Bord. Dabei handelt es sich um eine Variante von Noobs, dem bekannten grafischen Installer für den Raspberry. Laden Sie sich die aktuelle Version von der Projektseite und installieren Sie diese wie gewohnt. Dazu genügt es, eine SD-Karte zu formatieren und den Inhalt des ZIP-Archivs darauf zu übertragen. Verbinden Sie den Pi mit Tastatur, Maus, Monitor und dem Internet. Starten Sie den Raspberry und wählen Sie aus den angebotenen Distributionen „LEDE“ aus. Ist die Installation abgeschlossen, starten Sie den Rechner neu.

Lesetipp Raspberry Pi: Mehr Features durch Zusatzplatinen

LEDE lauffähig machen: Die eigentliche Konfiguration des Systems können Sie mit dem Browser durchführen. Davor müssen Sie allerdings einmalig eine etwas umständliche Prozedur auf sich nehmen. Sobald LEDE keine Meldungen beim Systemstart ausgibt, drücken Sie die Eingabetaste, um auf die Konsole zu gelangen. Denn Sie müssen die Netzwerkkonfiguration anpassen, da LEDE eine statische IP-Adresse verwendet, die vom Router belegt sein dürfte. Zum Editieren steht Ihnen nur der Editor vi und das auch noch mit US-Tastaturbelegung zur Verfügung. Das Zeichen „/“ finden Sie auf der Taste „-“. Öffnen Sie im Terminal die maßgebliche Konfigurationsdatei mit vi:

vi /etc/config/network

Da Sie die Datei editieren wollen, müssen Sie zunächst „*i“ eingeben, um den Eingabemodus zu aktivieren. Dieser wird später dann wieder mit Esc-Taste beendet. Das Sternchen befindet sich beim englischen Layout auf der „Klammer-auf“-Taste. Ändern Sie in der Textdatei unter

config interface 'lan'

die Zeile mit dem Eintrag „static“ auf „dhcp“. Die gesamte Zeile sollte dann so aussehen:

option proto 'dhcp'

Löschen Sie die darunter angegebene IP-Adresse. Speichern und Schließen funktioniert bei vi mit „:x“ wobei der Doppelpunkt über „Ö“ einzugeben ist (Umschalt-ö). Starten Sie anschließend den Pi neu. Der Raspberry hat vom Router eine neue IP-Adresse bezogen. Fragen Sie diese auf dem Raspberry mit ifconfig ab oder schauen Sie im Router nach.

Zum Betrieb des externen Ethernet-USB-Adapters wird ein Kernel-Modul benötigt.
Vergrößern Zum Betrieb des externen Ethernet-USB-Adapters wird ein Kernel-Modul benötigt.

Mit dieser IP-Adresse können Sie sich jetzt von einem anderen Rechner im lokalen Netz per Browser verbinden. Beim ersten Aufruf der Seite werden Sie um die Eingabe eines Kennworts gebeten. Dadurch wird auch der SSH-Zugang freigeschaltet. So können Sie sich später auch von anderen Rechnern direkt auf der Systemebene bewegen.

Klicken Sie nun auf „System –› Software“. Sie müssen jetzt zunächst das für den Ethernet-Adapter passende Kernel-Modul laden. Das geht in der Regel unter Angabe des verwendeten Chipsatzes. In unserem Fall führt „mcs7830“ zum Erfolg. Den Suchbegriff geben Sie dabei in die Zeile neben „Find“ ein und klicken dann auf „Install“ neben dem Paketnamen. Dieser Adapter taucht dann später als weiterer Anschluss auf.

Neues Interface anlegen: Wechseln Sie nun nach „Network –› Interfaces“. Dort ist ein Eintrag „WAN“ vorhanden. Diesen können Sie mit „Delete“ entfernen. Legen Sie dann über „Add new interface“ ein neues Interface an.

Erstellen Sie das Interface namens „WAN“ mit dem Protokoll „DHCP client“ für den Ethernet-Adapter „eth1“ (das ist der externe USB-Ethernet-Adapter). Dadurch wird dieser Anschluss als externe Schnittstelle zum Router definiert, der an Ihrer Anschlussdose hängt. Im Firewall-Tab des WAN-Interfaces legen Sie dann WAN als Firewall-Zone fest.

Hier legen Sie eine neue Schnittstelle in LEDE an. Deren Rolle ist hier als DHCP-Client definiert.
Vergrößern Hier legen Sie eine neue Schnittstelle in LEDE an. Deren Rolle ist hier als DHCP-Client definiert.

Internen Ethernet-Anschluss konfigurieren: Jetzt bearbeiten Sie mit einem Klick auf „Edit“ den LAN-Anschluss „eth0“. Der interne Anschluss des Raspberry wird jetzt mit statischer IP-Adresse und DHCP-Funktion ausgestattet, damit das interne Netzwerk automatisch IP-Adressen erhält. Ändern Sie dazu zunächst das Protokoll auf „static“ und bestätigen Sie. Anschließend können Sie eine statische Adresse aus dem bisherigen Adressraum vergeben, zum Beispiel „192.168.178.2“. „Ipv4 netmask“ setzen Sie auf 255.255.255.0, die restlichen Felder lassen Sie leer.

Die Adresse, die Sie vergeben haben, müssen Sie sich merken. Denn wenn Sie nun „Save & Apply“ geklickt haben, kann der Raspberry nur noch über diese Adresse erreicht werden. Unter „Advanced Settings“ können Sie noch die Force-Option setzen, damit andere DHCP-Server das System nicht stören. Rufen Sie nun das System über die neue Adresse auf und starten Sie das System über „System/Reboot“ neu. Der zweite Ethernet-Anschluss des Raspberry kann jetzt dazu genutzt werden, weitere Geräte anzuschließen.

Nutzen Sie zum Beispiel einen zweiten Router, um damit ein internes WLAN aufzuspannen. Bevor Sie sich an weitläufiges Umstecken machen, verbinden Sie aber zunächst einfach einen einzelnen Rechner direkt mit diesem zweiten LAN-Anschluss. Die Konfiguration funktioniert, wenn Sie dann die Oberfläche von LEDE wieder über die feste IP-Adresse des Geräts erreichen. Danach können Sie sich ans Experimentieren machen.

Sie betreiben jetzt eine eigene Firewall und haben eine Mauer zwischen Ihrem internen Netzwerk und dem Router für den Internetzugriff errichtet.

PC-WELT Marktplatz

0 Kommentare zu diesem Artikel
2068863