Eigenbau einer Firewall mit OpenWRT
Autor : Gerd Raudenbusch
Stand : 06.04.2024
Inhalt
- Einführung
- OpenWRT auf TP-Link Archer C6
- OpenWRT auf GL-iNET GL-SF1200
- OpenWRT auf GL-iNET Shadow GL-AR300M16
- OpenWRT auf der Fritz!Box 4040
- Anpassung von OpenWRT
- Wenn der Hausrouter bereits gemesht ist
- Anhang
Einführung
Mit der wachsenden Nutzung des Internets und der digitalen Medien hat auch die schädliche Online-Werbung zugenommen. Durch die Verwendung von Tracking und Profiling-Technologien und Cookies schalten Werbetreibende personalisierte Werbung. Sie sammeln Informationen über das Online-Verhalten der Nutzer, um ihnen gezielte Anzeigen zu präsentieren. Es gibt auch schädliche Werbung, die darauf abzielt, Nutzer zu betrügen oder zu täuschen. Dies kann beispielsweise gefälschte Werbung für betrügerische Produkte oder Dienstleistungen umfassen. Solche Werbung kann finanzielle Verluste oder Sicherheitsrisiken verursachen.
Durch die Verwendung von OpenWRT mit Adblock können unerwünschte Werbeanzeigen, Pop-ups und Tracking-Skripte blockiert werden, bevor sie auf die Geräte im Haushalt geladen werden. Dies bietet einen effektiven Schutz vor schädlicher Werbung und verbessert das Surferlebnis und die Geschwindigkeit, indem lästige Werbung eliminiert wird.
OpenWRT mit Adblock bietet einen wirksamen Schutz vor den meisten schädlichen Werbeformen.
OpenWRT bietet außerdem eine flexible und anpassbare Firewall-Lösung, die es ermöglicht, den IP-basierten Datenverkehr zu überwachen, zu filtern und zu kontrollieren. Durch die Konfiguration der Firewall-Regeln kann der Zugriff auf bestimmte Ports, Protokolle oder IP-Adressen eingeschränkt oder blockiert werden. Dies ermöglicht es, auch in Härtefällen unerwünschten Datenverkehr zu blockieren und die Sicherheit des gesamten Netzwerks zu verbessern.
OpenWRT auf TP-Link Archer C6
Der TP-Link Archer C6 Router kostet aktuell 40€ und kann per TFTP mit OpenWRT bespielt werden.
OpenWRT auf GL-iNET GL-SF1200
Der 1000MBit-Router GL-SF1200 kostet 28,00€. Er kommt mit einer älteren Version von OpenWRT, die der Hersteller für einen nicht vollständig Linux-kompatiblen Chip portiert hat. Nach seiner regulären Inbetriebnahme kann man die OpenWRT-Weboberfläche LuCi zusätzlich aktivieren und sich außerdem mit dem vergebenen Passwort per SSH einloggen, um sich im Anschluß direkt OpenWRT nach den eigenen Bedürfnissen einzurichten.
OpenWRT auf GL-iNET Shadow GL-AR300M16
Der 100MBit-Reise-Router GL-iNET Shadow (GL-AR300M16) kostet aktuell 24,79 und kommt bereits mit OpenWRT. Nach seiner regulären Inbetriebnahme kann man die OpenWRT-Weboberfläche LuCi zusätzlich aktivieren und sich außerdem mit dem vergebenen Passwort per SSH einloggen, um sich im Anschlußdirekt OpenWRT nach den eigenen Bedürfnissen einzurichten.
OpenWRT auf der Fritz!Box 4040
Die Fritz!Box 4040 kostet aktuell 87,90€
Software für Fritz!Box
Beschreibung | Datei |
---|---|
AVM Firmware Recovery Tool für Windows | FRITZ.Box_4040-07.57-recover.exe |
Original Hersteller-Firmware | FRITZ.Box_4040-07.57.image (für Notfälle) |
OpenWRT Flash Skript für Python und Windows 10 | fritzflash.py |
Aktuelles OpenWRT-Image für die Fritz!Box 4040 | openwrt-22.03.5-ipq40xx-generic-avm_fritzbox-4040-squashfs-eva.bin |
Vorgehen für Fritz!Box
Ich konnte der Installations-Anleitung von OpenWRT erfolgreich folgen :
- Alle Laptop-Schnittstellen trennen und die Fritz!Box 4040 anschließen
- Im Browser die Adresse
192.168.178.1
eingeben und den Install-Wizard zufriedenstellen - Fritz!Box ausschalten
- openwrt-22.03.5-ipq40xx-generic-avm_fritzbox-4040-squashfs-eva.bin runterladen
- Python 3 aus dem Appstore installieren
- fritzflash.py für Windows 10 runterladen
- Alle Laptop-Schnittstellen trennen und der LAN-Schnittstelle die 192.168.178.2 geben, wie hier beschrieben
- In der Kommandozeile das runtergeladene Skript
fritzflash.py
, welches mit der Firmware im gleichen Ordner liegt, starten - Fritz!Box einschalten
- Die erfolgreiche Verbindung sollte in den ersten Sekunden vom Skript gemeldet werden
- Nach 5 Minuten Firmware-Upload fängt die rote LED an, zu leuchten, um das Flashen zu signalisieren
- Das Skript meldet den Erfolg nach weiteren 5 Minuten
- Nach dem Zurücknehmen der Netzwerkeinstellen auf DHCP ist OpenWRT sohl per SSH als auch per HTTP unter 192.168.1.1 erreichbar
Anpassung von OpenWRT
Diese Hinweise stammen aus den OpenWRT-Artikeln von Christian Lorenz und Mike Kuketz.
Adblock zur Kontrolle des DNS-Verkehrs :
Installation vonopkg install adblock luci-app-adblock tcpdump-mini luci-i18n-adblock-de wget mailsend msmtp
stubby zur DNS-Verschlüsselung :
Installation von
# dnsmasq mit DNSSEC installieren
opkg install dnsmasq-full --download-only && opkg remove dnsmasq && opkg install dnsmasq-full --cache . && rm *.ipk
# Stubby installieren
opkg install stubby
# dnsmasq für stubby konfigurieren
uci add_list dhcp.@dnsmasq[-1].server='127.0.0.1#5453'
uci set dhcp.@dnsmasq[-1].noresolv=1
uci commit && reload_config
# WAN-Interface DNS-Adresse auf stubby lenken
uci set network.wan.peerdns='0'
uci set network.wan.dns='127.0.0.1'
uci set network.wan6.peerdns='0'
uci set network.wan6.dns='0::1'
uci commit && reload_config
# DNSSEC in dnsmasq aktivieren
uci set dhcp.@dnsmasq[-1].dnssec=1
uci set dhcp.@dnsmasq[-1].dnsseccheckunsigned=1
uci commit && reload_config
Installation von Traffic-Überwachung
opkg install vnstat luci-app-vnstat luci-i18n-vnstat-de
eines VPN-Clients
InstallationDamit laufen alle Geräte am Router über eine VPN-Verbindung.
opkg install openvpn-openssl
luci-app-openvpn
-
Unter VPN → OpenVPN kann man nun die
.ovpn
-Konfigurationsdatei des VPN-Servers hochladen -
Anschließend muss man sie mit dem Menüpunkt
edit
bearbeiten :- Die Zeile
dev tun
ändert man indev tun0
- Hinter die Zeile
auth-user-pass
hängt man :/etc/openvpn/myconfig.auth
- Den Inhalt dieser Datei kann man im darunterliegenden Feld bearbeiten. Dort fügt man Benutzername und Passwort ein (keine neue Zeile nach dem Passwort!)
- Nach dem Speichern dieser Konfiguration kann man in der VPN-Übersicht unter VPN → OpenVPN die Konfiguration aktivieren, indem man bei
Enabled
das Häkchen setzt und auf die SchaltflächeStart
klickt.
- Die Zeile
-
Nun kann man unter Network → Interfaces über die Schaltfläche
Add new interface
eine neue Schnittstelle mit dem Namenvpn0
, dem Protokollunmanaged
und der Schnittstelletun0
zufügen, sofern die VPN-Verbindung gültig ist. -
Unter Network → Firewall muss man nun eine neue Zone zufügen :
- Name :
vpn
- Input :
reject
- Output :
accept
- Forward :
reject
- Masquerating : ☑︎
- MSS clamping : ☑︎
- Covered networks :
vpn0
- Allow forward to destination zones :
lan
- Allow forward from source zones :
unspecified
- Name :
-
Zurück unter Network → Firewall kann man nun die Zone
lan
anpassen :- Name :
lan
- Input :
accept
- Output :
accept
- Forward :
accept
- Masquerating : □
- MSS clamping : □
- Covered networks :
lan
- Allow forward to destination zones :
vpn0
- Alliw foreard from source zones :
unspecified
- Name :
-
Neustart des Routers
WiFi aktivieren
- Unter Network → Wireless sollten zwei Einträge editierbar sein (2,4 Ghz und 5Ghz).
- Den Netzwerk-Namen setzt man im Reiter
General Setup
im DialogfeldESSID
. - Im Reiter
Wireless Security
wählt man beiEncryption
die ArtWPA2-PSK
aus und das Wifi-Passwort setzt man im DialogfeldKey
.
- Den Netzwerk-Namen setzt man im Reiter
Wenn der Hausrouter bereits gemesht ist
Die hierzulande verbreitete Fritz!Box von AVM ermöglicht - wie auch andere Hersteller - ein "Meshing" (Vermaschen) von Geräten des gleichen Herstellers. Der Vorteil besteht vor allem darin, die zusätzlichen Geräte, z. B. WLAN-Repeater, zentral über den Hausrouter mit konfigurieren zu können.
Da sich der OpenWRT-Router in dieser Architektur nicht für das gesamte Heimnetz dazwischen schalten läßt, kann man ihn zumindest als globalen DNS-Proxy für das Haus nutzen. Damit kann sie zwar keine IP-Adressen filtern, aber der Adblocker funktioniert weiterhin, da er den gesamten DNS-Verkehr filtert.
Dieses Szenario konfiguriert man folgendermaßen :
- DNS-Port auf OpenWRT-Router freigeben
Man verbindet sich mit dem OpenWRT-Router und geht in die Firewall-Einstellungen. Dort öffnet man den Port 53.
- Dem OpenWRT-Router eine feste IP-Adresse im Heimnetz zusichern
Um nicht in Konflikt mit dem DHCP-Server der Fritz!Box zu geraten, läßt man der Fritz!Box diese Verantwortung und editiert auf ihr die Netzwerk-Einstellungen der Firewall.
Dazu loggt man sich auf der Fritz!Box ein. Unter Heimnetz ► Netzwerk sucht man zunächst den Geräte-Eintrag für den OpenWRT-Router.
Hier kann man einstellen, daß der OpenWRT-Router immer die gleiche IP-Adresse bekommen soll.
Danach sollte man den OpenWRT-Router neu starten, damit sie diese IP-Adresse bezieht.
- Den ausgehenden DNS-Server auf den OpenWRT-Router leiten
Nun kann man die Adresse des DNS-Servers, an den die Fritz!Box als Hausrouter alle ausgehenden DNS-Anfragen schickt, und die normalerweise vom Internet Service Provider automatisch zugewiesen wird, durch die Adresse des eigenen OpenWRT-Routers ersetzen und diesen fortan die DNS-Anfragen des Heimnetzes beantworten, und nun auch filtern lassen.
Dazu stellt man auf der Fritz!Box unter Zugangsart ► DNS-Server genau die IP-Adresse ein, die man zuvor dem OpenWRT-Router als fest zugesichert hat.
Anhang
Software für GL-iNET Shadow
(Auf die verschiedenen Formate von OpenWRT-Firmware muss unbedingt geachtet werden)
Beschreibung | Datei |
---|---|
Aktueller Bootloader (u-boot) vom Hersteller zur Neuinstallation über die u-Boot Weboberfläche für u-Boot selbst auf http://192.168.1.1/uboot.html |
uboot-gl-ar300m-20220216-md5-97ff7bb80cbf129fa21f34ded1559ff8.bin |
Aktuelle Hersteller-Firmware zum Upgrade auf dessen eigener, regulärer Webschnittstelle auf http://192.168.8.1 (nicht LuCi) oder über die u-Boot Weboberfläche auf http://192.168.1.1 |
openwrt-ar300m16-4.3.7-0913-1694589994.bin |
Aktuelles Image von OpenWRT für NAND-Speicher zur Neuinstallation eines OpenWRT-Systems über die u-Boot Weboberfläche auf http://192.168.1.1 (zu bevorzugen) |
openwrt-22.03.5-ath79-nand-glinet_gl-ar300m-nand-squashfs-factory.img |
Aktuelles Image von OpenWRT für NAND-Speicher zur Neuinstallation eines OpenWRT-Systems über die u-Boot Weboberfläche auf http://192.168.1.1 |
openwrt-22.03.5-ath79-nand-glinet_gl-ar300m-nand-initramfs-kernel.bin |
Aktuelles Image von OpenWRT für NAND-Speicher zur Aktualisierung eines bereits bestehenden OpenWRT-Systems, entweder über die LuCi-Oberfläche (http://192.168.1.1/cgi-bin/luci/admin/system/flash ) oder durch Hochladen über SFTP ins /tmp -Verzeichnis und Installation mit sysupgrade bzw. mtd |
openwrt-22.03.5-ath79-nand-glinet_gl-ar300m-nand-squashfs-sysupgrade.bin |
Aktuelles Image von OpenWRT für NOR-Speicher zur Neuinstallation eines OpenWRT-Systems über die u-Boot Weboberfläche auf http://192.168.1.1 |
openwrt-22.03.5-ath79-nand-glinet_gl-ar300m-nor-initramfs-kernel.bin |
Aktuelles Image von OpenWRT für NOR-Speicher zur Aktualisierung eines bereits bestehenden OpenWRT-Systems, entweder über die LuCi-Oberfläche (http://192.168.1.1/cgi-bin/luci/admin/system/flash ) oder durch Hochladen über SFTP ins /tmp -Verzeichnis und Installation mit sysupgrade bzw. mtd |
openwrt-22.03.5-ath79-nand-glinet_gl-ar300m-nor-squashfs-sysupgrade.bin |
Debrick-Prozedur für GLiNET-Geräte
Die Debrick-Prozedur nach Hersteller von GLiNET beschreibt, wie man die Router mit Firmware bespielt, wenn man die Hersteller-eigene Webschnittstelle nicht nutzen möchte oder kann. Damit kann man die auf OpenWRT aufgesetzte Hersteller-Firmware auch komplett durch OpenWRT ersetzen. Normalerweise sieht die Debrick-Webschnittstelle so aus :
Der Hersteller empfiehlt, bei anderem Aussehen den Bootloader zu aktualisieren.
Die OpenWRT-Gemeinde hat in ihrer Installationsanleitung angemerkt, daß dies manchmal nicht funktioniert und entweder mit Firefox auf Linux anstatt Windows zu lösen sei, oder :
»Try older vendor images in NOR format instead of NAND if your image won't be accepted.
In order to fix this, you need to flash u-boot which resides on /dev/mtd0
.
To make writing to mtd possible, one needs to install the proper kernel module and load it:
opkg update
opkg install kmod-mtd-rw
insmod mtd-rw i_want_a_brick=1
Then grab the latest u-boot image from https://github.com/gl-inet/uboot-for-qca95xx/tree/master/bin, upload it using scp to /tmp
of the router (or directly wget from the github repo), check the md5sum using md5sum {u-boot filename} and flash it like shown below:
mtd -r write /tmp/uboot-gl-ar300m-20220216-md5-97ff7bb80cbf129fa21f34ded1559ff8.bin /dev/mtd0
After rebooting the new version of u-boot will be in place that now accepts recent images.
One can now use the hardware switch to change between booting NAND (position next to reset button) or NOR (away from reset button) after issuing the command fw_setenv boot_dev on
.
I do not recommend doing so as the NAND is larger and faster while the NOR is only 16 MB in size and it can cause problems to have two image on the router. See https://docs.gl-inet.com/en/2/hardware/ar300m/#using-firmware.«