Kategorie: Startseite

Neue Möglichkeiten mich zu unterstützen

Dinge die ich ins Internet stelle tue ich freiwillig und ohne irgendein finanzielles Interesse. Schließlich habe ich eine Festanstellung in einem Vollzeitjob.

Nichts desto trotz gibt es einige die sich gerne für meine Arbeit bedanken wollen. Regelmäßig erhalte ich Spenden via PayPal. An alle die gespendet haben, sei noch mal ein herzliches Dankeschön!

Seit kurzem bin ich bei YouTube für die Kanalmitgliedschaften qualifiziert. Dort kannst du für 99 Cent im Monat mich Unterstützen. Hier erhältst du als Gegenleistung Einblicke hinter die Kulissen. Bei einer größeren Menge an Unterstützer werde ich sicherlich auch exklusiven Content produzieren oder weitere Vorteile erstellen.

Heute Abend kam dann zudem noch die Bestätigung von GitHub, dass ich jetzt auch für das GitHub Sponsors Programm freigeschaltet bin. Dies war zwar auch ein aktiver Vorgang von mir, dennoch wird dort nicht immer jeder angenommen. Auch hier kannst du mich für 99 Cent im Monat unterstützen.

Das ist natürlich immer alles freiwillig. Ich werde meine Arbeit für die Community auch weiterhin kostenfrei machen, zumindest solange ich in einer Festanstellung bin. 🙂

Wireguard unter Ubuntu 20.04 installieren

Wireguard ist eines der populärsten VPN Verfahren die wir zur Zeit auf dem Markt haben. Zumindest für den Privatgebrauch. In diesem Tutorial installieren wir Wireguard unter Ubuntu 20.04.

Voraussetzungen

  • System mit Ubuntu 20.04 (am besten eine virtuelle Maschine)
  • Router/Firewall mit konfigurierbaren NAT Regeln
  • VPN Client

NAT Regeln konfigurieren

Ich habe eine Firewall der Firma Ubiquity und zwar eine USG-3P. Dort gehen wir in die Einstellungen -> Routing und Firewall -> Port Forwarding und legen eine neue Regel an.

Name: Wireguard (natürlich kannst du auch einen anderen nehmen)
Enabled: Häkchen setzen
From: Anywhere
Port: 51820
Forward IP: {IP Adresse deiner VM}
Forward Port: 51820
Protocol: UDP

Wireguard NAT Konfiguration
Wireguard NAT Konfiguration

Wireguard unter Ubuntu 20.04 installieren

Nun können wir uns an die eigentliche Installation wagen. Ich gehe davon aus, dass du ein System mit Ubuntu 20.04 installiert hast, das SUDO Passwort kennst und das System alle Updates erhalten hat.

Als erstes fügen wir das Repository von Wireguard zu den Paketquellen hinzu:

sudo add-apt-repository ppa:wireguard/wireguard

Durch das hinzufügen werden auch direkt die Paketquellen eingelesen. Wir starten also direkt mit in der Installation:

sudo apt install wireguard -y

Nach ein paar Sekunden ist Wireguard auch schon installiert. Damit wir später auch den Server als „Router“ missbrauchen können, bedarf es eine Anpassung am System. Wir öffnen die sysctl Datei

vim /etc/sysctl.conf

und entfernen das #-Symbol vor der Zeile

net.ipv4.ip_forward=1

:wq! um abzuspeichern und die Datei zu verlassen. Anschließend muss diese noch neu eingelesen werden

sysctl -p

Nun können konfigurieren wir den „Server“. Eigentlich ist jedes System Server und Client gleichzeitig und wird als sogenannte Peer-Node betrieben.

sudo sh -c 'umask 077; touch /etc/wireguard/wg0.conf'

Legt das notwendige Config File an und gibt ihm die richtigen Rechte.

Anschließend wechseln wir zum root Benutzer mit

sudo -s

Und wir wechseln in das Wireguard Verzeichnis

cd /etc/wireguard

Für jeden Peer werden ein Private Key sowie ein Public Key verwendet. Dieser lässt sich recht schnell mit dem Wireguard Tool erstellen.

umask 077; wg genkey | tee server_priv | wg pubkey > server_pub

Für die Konfiguration benötigen wir gleich den Private Key. Wir lassen uns den also anzeigen und kopieren diesen in die Zwischenablage

cat server_priv

Jetzt können wir die eigentlich Konfigurationsdatei einrichten

vim wg0.conf

Ich verwende für mein Tutorial diese Konfiguration. Eventuell musst du sie an deine Bedürfnisse anpassen:

[Interface]
Address = 10.0.0.1/24
SaveConfig = true
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o ens160 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o ens160 -j MASQUERADE
ListenPort = 51820
PrivateKey = gIbyfBnNH56ZRwp+vq2R4f2yO6PK7EM7lSrnLyxw9nI=

Unter „Address“ ist das VPN Netzwerk angegeben. Ich verwendet hier ein Class-A Netz um direkt optisch die IP-Adressen unterscheiden zu können. Natürlich kannst du auch gewohnt ein Class-C Netz (z. B. 192.168.100.0/24) verwenden.

Das war es quasi schon mit der Konfiguration. Nun aktivieren wir die Konfiguration, starten sie und schauen uns den Output an:

systemctl enable wg-quick@wg0
systemctl start wg-quick@wg0
systemctl status wg-quick@wg0

Jetzt sollte eine Ausgabe ähnlich zu dieser erscheinen:

● wg-quick@wg0.service - WireGuard via wg-quick(8) for wg0
     Loaded: loaded (/lib/systemd/system/wg-quick@.service; enabled; vendor preset: enabled)
     Active: active (exited) since Wed 2020-06-03 17:05:28 CEST; 40min ago
       Docs: man:wg-quick(8)
             man:wg(8)
             https://www.wireguard.com/
             https://www.wireguard.com/quickstart/
             https://git.zx2c4.com/wireguard-tools/about/src/man/wg-quick.8
             https://git.zx2c4.com/wireguard-tools/about/src/man/wg.8
    Process: 112602 ExecStart=/usr/bin/wg-quick up wg0 (code=exited, status=0/SUCCESS)
   Main PID: 112602 (code=exited, status=0/SUCCESS)

Jun 03 17:05:28 wireguard systemd[1]: Starting WireGuard via wg-quick(8) for wg0...
Jun 03 17:05:28 wireguard wg-quick[112602]: [#] ip link add wg0 type wireguard
Jun 03 17:05:28 wireguard wg-quick[112602]: [#] wg setconf wg0 /dev/fd/63
Jun 03 17:05:28 wireguard wg-quick[112602]: [#] ip -4 address add 10.0.0.1/24 dev wg0
Jun 03 17:05:28 wireguard wg-quick[112602]: [#] ip link set mtu 1420 up dev wg0
Jun 03 17:05:28 wireguard wg-quick[112602]: [#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens160 -j MASQUERADE
Jun 03 17:05:28 wireguard systemd[1]: Finished WireGuard via wg-quick(8) for wg0.

Wichtig ist der Punkt „Active: active“. Das zeigt uns an, dass der „VPN-Server“ korrekt hoch gefahren wurde.

Client Konfiguration einrichten

Als Client soll in meinem Fall ein Mobiltelefon herhalten. Ich nehme dafür mein iPhone. Die Wireguard App ist aber die gleiche und lässt sich entsprechend leicht adaptieren. Ich nutze ein split tunneling. Heißt, ich möchte nur Zugriff auf meine Netze zuhause haben.

Zuerst erstellen wir uns wieder einen private und public Key für den Client:

umask 077; wg genkey | tee iphone_priv | wg pubkey > iphone_pub

Auch hierfür kopieren wir uns den Private Key in die Zwischenablage:

cat iphone_priv

Natürlich benötigen wir auch eine Konfigurationsdatei für den Client:

vim iphone.conf

Dann packen folgendes da rein (evtl. an deine Wünsche anpassen).

[Interface]
PrivateKey = WEmfArJoJ8BZW01hONF5FPpAHsrM+PpMMRM4/xMCGng=
Address = 10.0.0.2/32

[Peer]
PublicKey = zDubCWfjdKiklSJIiCZeCWDfZq94eAJWBG/9wVyIaSE=
Endpoint = {Deine public ip}:51820
AllowedIPs = 10.0.0.0/24
AllowedIPs = 192.168.10.0/24

Möchtest du, dass der gesamte Trafik durch den VPN Tunnel geht, ersetzt du die zwei Zeilen der AllowedIPs durch

AllowedIPs = 0.0.0.0/8

Natürlich müssen wir dem „Server“ noch sagen, dass er einen „Client“ hat. Vorher die config stoppen

systemctl stop wg-quick@wg0

Dann öffnen wir nochmal die wg.conf Datei und fügen am Ende ein:

[Peer]
PublicKey = 6pLqvUO8nEbGevwhiV4/VY9jWet4XHqCoRNZR0jFSCQ=
AllowedIPs = 10.0.0.2/32

Und starten nun wieder Wireguard

systemctl start wg-quick@wg0

Konfiguration an Client übertragen

Jetzt muss der Client ja noch irgendwie wissen wohin er sich verbinden soll. Du installierst also am besten die offizielle Wireguard App aus dem AppStore oder PlayStore.

Am Server installieren wir uns noch ein Paket mit dem wir QR-Codes erzeugen können. Damit lässt sich die Konfiguration spielend einfach übertragen.

apt install qrencode -y

Dann erzeugen wir den QR-Code mit

qrencode -t ansiutf8 < iphone.conf
Ersteller Wireguard QR Code
Ersteller Wireguard QR Code

In der App auf dem Mobiltelefon fügen wir ein neues VPN hinzu und scannen den QR Code ein. Die Anwendung konfiguriert die notwendigen Schritte. Gegebenenfalls benötigt diese noch Rechte Einstellungen an eurem Telefon machen zu dürfen.

Interne Namensauflösung bei Docker mit Traefik

Traefik nutze ich primär um als reverse proxy von extern auf meine Docker Container zugreifen zu können. Dies natürlich SSL terminiert. Verschiedene Dienste sollen allerdings nicht extern erreichbar sein und benötigen auch – aus meiner Sicht – nicht zwingend eine verschlüsstele Verbindung.

Aus diesem Grund habe ich auf meinem internen Docker Server Traefik als reverse proxy laufen, welcher den verschiedenen Diensten via netzwerkinterner DNS-Auflösung ein DNS Namen verpasst. So kann ich z. B. via http://phpipam.docker.domain.local auf mein PHPIPAM Dienst zugreifen.

Weiterlesen

Tipps für ein sicheres NAS-System

Viele von meinen Bloglesern haben sicherlich ein NAS-System zuhause stehen und haben dies selbst eingerichtet. Leider ergeben sich daraus aber auch oft kleine bis mittlere Sicherheitslücken. Meine Tipps für ein sicheres NAS-System helfen dir dabei, dieses Risiko zu minimieren.

Heise Online hatte vor einigen Tagen wieder ein Artikel veröffentlicht in dem von einer neuen Welle von Angriffen auf QNAP und Synology NAS Systemen geschrieben wird. Viele der Themen und Angriffszenarien lassen sich sich allerdings von Anfang an direkt eliminieren. Hier sind meine acht Tipps für ein sicheres NAS:

Reduziere die Anzahl der Zusatzpakete

Alle NAS-System Hersteller bieten eine Art Appstore an in dem sich der Benutzer des Systems zusätzliche Programme installieren kann. Das ist sehr praktisch und führt dazu, dass man nur ein größeres System als viele kleine einzelne Server benötigt. Allerdings wird dadurch das Risiko erhöht Schwachstellen zu kreieren. Entsprechend ist es sinnvoll die Anzahl der Anwendungen möglichst klein zu halten. Programme welche man nicht benötigt sollte man deinstallieren.

AntiViren Programme nutzen

Auf seinem Clientsystem haben die meisten Computernutzer ein AntiViren-Programm bereits installiert. Windows 10 Nutzer sind mit dem Windows Defender bereits von Haus aus gut geschützt. Aber auf dem NAS System machen sich da wenig Leute Gedanken. Synology bietet in Kooperation mit verschiedenen Herstellern Paket an die die Dateien auf dem Netzwerkspeicher scannen und evtl. Bedrohungen eliminieren.

HTTPS aktivieren

Bei allen Herstellern ist mit ein paar Mausklick das HTTPS Protokol aktiviert. Damit wird die Benutzeroberfläche verschlüsselt dem Browser präsentiert. Zwar kommen die entsprechenden Zertifikate nur selbstsigniert daher, sind dafür aber schon einmal die halbe Miete. Mit ein paar mehr Mausklicks lassen sich auch Let’s encrypt Zertifikate nutzen.

Anzahl der Loginversuche begrenzen

Im Auslieferungszustand kann ein Angreifer so lange eine Benutzername/Passwort Kombination testen bis er es geschafft hat. Entsprechend ist es hier wichtig, dass man die Anzahl der möglichen Versuch begrenzt und eine Wartezeit einbaut. Viele kennen diese Funktion bereits bei der heimischen Fritzbox bei der die Wartezeit sich immer verdoppelt, sollte man ein falsches Passwort eingetragen haben.

Keine default Accounts nutzen

Jeder Hersteller legt seinen eigenen Administratorzugang an. Dieser sollte direkt durch einen neuen, eigenen Benutzer ersetzt werden. Lege dir hierzu einen neuen Benutzer auf deinem NAS-System an, vergebe ihm Administratorenrechte und deaktiviere den standardmäßigen Admin-Account. Angreifer wissen welchen Benutzername sie bei einem Synology oder QNAP NAS verwenden müssen und müssen so „nur“ noch das Passwort erraten.

Kein Gast Zugriff aktivieren

Benutzt immer personalisierte Accounts für alle Geräte. Generische Accounts machen zwar das Leben einfacher, sind aber unsicher. Gerade Ransomware versucht sich auch über Freigaben zu verteilen und Freigaben welche mittels Zugangsdaten geschützt sind, können nicht so leicht angegriffen werden. Windows 10 und Server 2016/2019 haben Gastzugriffe z. B. per default deaktiviert.

Externen Zugriff nur via VPN

Synology Quickconnect ist eine feine Sache und lässt sich sehr leicht einreichen. Es ist allerdings „unsicher“. Die zufällig generierte URL lässt sich ausrechnen und potentielle Angreifer versuchen so auf NAS Systeme zu kommen. Es ist damit recht unwahrscheinlich, dass ihr als Ziel direkt angesprochen werdet, allerdings wollen die meisten Angriffe nur möglichst breiten Schaden anrichten. Somit ist es dem Angreifer egal auf welchem Gerät er schlussendlich landet, Hauptsache er kann das System infizieren.

Systeme aktuell halten!

Das ist der wichtigste Tipp den ich euch geben kann. Im Netzwerk sollten immer alle Geräte möglichst zeitnah mit Sicherheitsupdates versorgt werden. Jede Software ist fehlerbehaftet und es ist immer nur die Frage wann eine Sicherheitslücke ausgenutzt wird und nicht ob. Wenn du also dein System immer mit den neusten Updates versorgst reduzierst du die Wahrscheinlichkeit eines erfolgreichen Angriffes um ein vielfaches.

Ich hoffe dir haben meine Tipps für ein sicheres NAS weiter geholfen. Wenn du dir das lieber in einem Video anschauen möchtest kannst du dies gern hier tun.

Reverse Proxy mit Traefik unter Docker

Traefik Architecture

Um mehrere Webseiten unter einer IP und einer Domain zu veröffentlichen, ist es am einfachsten, wenn man sich ein sogenannten reverse proxy einrichtet. Die wohl bekannte Variante dazu ist von NGINX. Hierfür gibt es auch diverse Tutorials im Internet.

Meine ganzen Services, die ich extern verfügbar machen möchte, laufen allerdings als Docker Container. Entsprechend bietet es sich an, auch den reverse proxy Traefik unter Docker als Container laufen zu lassen.

Weiterlesen