Demo-Projekt: Keyhelp, Wireguard VPN und pi.hole Blocker

Für Modifikationen in und um KeyHelp.
Post Reply
User avatar
stfn116
Posts: 306
Joined: Wed 9. Jan 2019, 11:43
Location: Bavaria

Demo-Projekt: Keyhelp, Wireguard VPN und pi.hole Blocker

Post by stfn116 »

Ich hoffe das hier ist der richtige Bereich für dieses Projekt:

Damit ich meine Live-Server nicht belaste habe ich mir vor einigen Monaten ein Demo-System aufgesetzt:
DIeses wurde sukzessive erweitert: Aktueller Stand ist wie oben geschrieben: ein Debian Buster (10.2) Setup, mit aktueller Keyhelp-Instanz, sowie Wireguard und eben dem Pi-hole.

Wireguard
- ist eine sehr schlanke und moderne VPN Lösung
- einen Bruchteil an Code von anderen Anbietern (OpenVPN)
- aktuelle, kryptografische Verschlüsselungstechniken also sehr schnell
für weitere Informationen die offizielle Webseite besuchen
Pi-Hole
- ist ein ressourcensparendes Tool um DNS-Anfragen vorzufiltern (damit ist es möglich, Webseiteninhalte wie Tracking- und Werbung zu blockieren).
- ursprünglich für den Raspberry Pi entwickelt, läuft aber auf vielen modernen Systemen reibungslos
- sehr aktive Community, stetige Updates natürlich wie Wireguard Open Source
für weitere Informationen die offizielle Webseite besuchen
Zu Keyhelp und dem OS brauche ich wohl nicht viel sagen, sonst wärt ihr im falschen Forum :) ;)

Meine Server haben alle eine IPv6 Adresse und deswegen setze ich zu Beginn des Setups den Befehl um es zu aktivieren. Des Weiteren stelle ich die Locale auf Deutsch UTF8 ein. Wie oben geschrieben optional.

Code: Select all

enable_ipv6
dpkg-reconfigure locales
Jetzt wird das IPv4/IPv6 Forwarding aktiviert, damit die Anfragen auch durchgeleitet werden. Damit die Einstellungen gültig werden, wird ein reboot durchgeführt.

Code: Select all

echo "net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1" >> /etc/sysctl.conf
reboot
Im Anschluss erfolgt zuerst die Installation von Keyhelp auf dem cleanen Debian System, nachdem diese durchgelaufen ist, kann Wireguard im zweiten Schritt installiert werden. Wenn später Android oder IOS-Devices mit Wireguard genutzt werden, ist das Kommandozeilenprogramm qrencode dafür perfekt. Weitere Informationen zu qrencode

Code: Select all

wget https://install.keyhelp.de/get_keyhelp.php -O installkeyhelp.sh ; bash installkeyhelp.sh ;

echo "deb http://deb.debian.org/debian/ unstable main" > /etc/apt/sources.list.d/unstable.list
printf 'Package: *\nPin: release a=unstable\nPin-Priority: 90\n' > /etc/apt/preferences.d/limit-unstable
apt update
apt install wireguard qrencode -y
Jetzt in das Verzeichnis von Wireguard wechseln um die Konfiguration zu erstellen. Alternativ dazu kann auch die wireguard.zip-Vorlage entpackt und verwendet werden.

Im Terminal kann mit dem Befehl wg bzw. wg-quick alles eingestellt werden. Hier wird nachstehend einmal der private und öffentliche Schlüssel des Servers und des Clients durch wg genkey erstellt. Diese Schlüssel werden wechselseitig in die wg0.conf und wg0-client.conf abgespeichert. Zum Abschluss die Berechtigungen auf 0600 setzen. Weitere Informationen auf der Webseite von Wireguard.

Code: Select all

cd /etc/wireguard/
umask 077
wg genkey | tee server_private_key | wg pubkey > server_public_key
wg genkey | tee client_private_key | wg pubkey > client_public_key
cat server_private_key && cat client_public_key 
##txt kopieren und in wg0.conf einfügen
cat client_private_key && cat server_public_key  
##txt kopieren und in wg0-client.conf einfügen
vi wg0-client.conf 
chmod 600 *
Sind die vorstehenden Einstellungen abgeschlossen, kann die Konfiguration geladen werden. Dazu den Befehl wg-quick up wg0 und wenn alles korrekt ist, wird das Interface gestartet. Für ein Android oder IOS kann ein QR-Code mit qrencode -t ansiutf8 < wg-*dateiname.conf. Diesen einfach mit der vorher installierten App einscannen.
Durch ifconfig und sysctl -p prüfe ich nochmals ob alles korrekt im System gespeichert wurde.
Abschließend kann ich die Verbindung als Systemdienst speichern.

Code: Select all

wg-quick up wg0
qrencode -t ansiutf8 < wg0-client.conf 
ifconfig
sysctl -p
systemctl enable wg-quick@wg0.service
Zum Abschluss noch Pi-Hole installieren, dort habe ich die automatische Installation gewählt, es besteht aber auch die manuelle Option (siehe Link Github)

Nun erfolgt ein Verbindungstest mit meinem Client und auf dem Server wird diese Verbindung angezeigt. latest handshake % secounds ago

Code: Select all

curl -sSL https://install.pi-hole.net | bash
reboot
wg
Abschließend muss die /etc/lighttpd/lighttpd.conf noch angepasst werden, damit unter https://YOUR-HOSTNAME.de:8443/admin der lighthttpd-Service bzw. Pi-Hole erreichbar ist. Standardmäßig läuft dieser im lokalen Netzwerk auf Port 80, diese wird nun auf SSL umgesellt. Die Konfiguration nutzt dabei das bereits über Keyhelp erstellte Zertifikat.

Offen: service pihole-FTL status --- hängt noch, weil dnsmasq bzw. bind nicht zusammen laufen. Port 53 können sie sich noch nicht teilen. ;)
Aktueller Workaround ist den Keyhelp-Dienst zu beenden.
Attachments
lighttpd.zip
(1.65 KiB) Downloaded 312 times
wireguard.zip
(811 Bytes) Downloaded 302 times
Last edited by stfn116 on Sat 23. Nov 2019, 10:45, edited 1 time in total.
:D Wer meint, Kompetenz sei teuer, möge es einmal mit Inkompetenz versuchen. Zitat: Bernd W. Klöckner. :lol:
User avatar
OlliTheDarkness
Posts: 1854
Joined: Tue 14. Aug 2018, 16:41
Location: Essen (NRW)

Re: Demo-Projekt: Keyhelp, Wireguard VPN und pi.hole Blocker

Post by OlliTheDarkness »

Guten Morgen 8-)
Grundsätzlich sei erstmal Danke für den Beitrag =)

ABER ( :lol: ): Würde ich , ist meine persönliche Meinung, erstmal erklären worum es geht, was es kann, warum es das kann und warum man es brauchen sollte / könnte :)

Also eine grundsätzliche Einleitung.

Danach könntest du anfangen Schritt für Schritt zu erklären.

Wenn du das vieleicht noch ausarbeitest denke ich , ist es in der Bastelecke gut aufgehoben.

Gruß: Das Olli wars :)
Mit freundlichen Grüßen
OlliTheDarkness

**************************************************************
Helden leben lange, Legenden sterben nie

:!: World Hack Organization :!:
**************************************************************
User avatar
matdan
Posts: 2
Joined: Tue 12. Jan 2021, 14:57
Location: Dessau-Roßlau
Contact:

Re: Demo-Projekt: Keyhelp, Wireguard VPN und pi.hole Blocker

Post by matdan »

Aktueller Workaround ist den Keyhelp-Dienst zu beenden.
Wie beende ich den Keyhelp-Dienst?
Last edited by matdan on Tue 12. Jan 2021, 15:00, edited 1 time in total.
User avatar
stfn116
Posts: 306
Joined: Wed 9. Jan 2019, 11:43
Location: Bavaria

Re: Demo-Projekt: Keyhelp, Wireguard VPN und pi.hole Blocker

Post by stfn116 »

matdan wrote: Tue 12. Jan 2021, 15:00 Wie beende ich den Keyhelp-Dienst?
Hier kannst du den Dienst beenden.

Einstellungen > Server-Dienst-Verwaltung
Attachments
Bildschirmfoto vom 2021-01-14 18-19-40.png
:D Wer meint, Kompetenz sei teuer, möge es einmal mit Inkompetenz versuchen. Zitat: Bernd W. Klöckner. :lol:
User avatar
superjogi
Posts: 137
Joined: Sat 11. Jan 2020, 23:24

Re: Demo-Projekt: Keyhelp, Wireguard VPN und pi.hole Blocker

Post by superjogi »

Ich verwende OpenVPN und pi.hole schon länger auf einem separaten Server.
Es ist hervorragend:
- für trackingfreies Webbrowsing mit Auswertungsmöglichkeiten,
- für schnelleres Internet zwischen den Servern,
- zum sicheren Browsing aus WLAN unterwegs,
- sowie auch zum Testen von Webprojekten unter anderem ohne Caching und mittels einem DNS der Änderungen sofort übernimmt
- um eine weitere IP zur Verfügung zu haben für diverse Anmeldungen

Diese Anleitung ist erfreulich aktuell, da sie den Wireguard VPN verwendet. Wireguard soll ja noch moderner und besser sein als OpenVPN und durch die bessere Lizenz sind hier auch mehr Useraccounts als 2 erlaubt.
Die Performance von OpenVPN auf einem 1 Core Server ist nach meinen eigenen Erfahrungen trotzdem sehr gut. Von 200Mb/s Downloadspeed bleiben immer noch 180Mb/s übrig und die Clients sind mit allen Betriebssystemen gut kompatibel.

Warum diese Konfiguration direkt auf einem Webserver mit Keyhelp verwendet wird ist mir nicht ganz klar. Eine Info zu den Usecases wäre dabei tatsächlich nicht schlecht.
Post Reply