VPN – Was ist das?
VPN ist ein virtuelles privates Netzwerk, das einen verschlüsselten Tunnel zwischen Ihrem Gerät und der Internetverbindung erstellt. Es gibt ein doppeltes VPN, also die gleichzeitige Nutzung von zwei verschiedenen VPN-Servern. Bei der Verwendung von VeePN werden alle ein- und ausgehenden Daten verschlüsselt. Wenn Sie sich mit einem VPN-Server verbinden, werden alle Ihre Online-Aktivitäten durch diesen Tunnel und nicht durch den Anbieter geleitet. Daher sehen Cyberkriminelle, die Ihren Datenverkehr scannen möchten, nur das Land, mit dem Sie verbunden sind, und können keine Passwörter von sozialen Netzwerken, Kreditkarten oder persönliche Informationen stehlen.
VPN ist ein ziemlich gutes Tool zur Bekämpfung von Cyber-Eindringlingen, und Sie interessieren sich für die Frage „Kann ich meinen eigenen VPN-Server einrichten?“ Sie können natürlich Ihr eigenes VPN oder Ihre eigene VPN-Verkettung einrichten. Durch die Erstellung Ihres VPN-Servers erhalten Sie viele Vorteile:
- Sie steuern Ihre Server und Personen mit VPN.
- Sie können sicher sein, dass niemand Ihre Daten besitzt.
- Sie erhalten Zugriff auf viele blockierte Ressourcen in Ihrer Region.
- Sie können sich mit einem öffentlichen Wi-Fi-Netzwerk verbinden und niemand kann Ihre Daten übernehmen.
- Sie können Zugriffe von speziellen Diensten ausblenden.
Anleitung zum Erstellen Ihres eigenen VPN-Servers basierend auf Linux Debian
Nachfolgend finden Sie Schritt-für-Schritt-Anleitungen zum Erstellen von hausgemachtem VPN. Befolgen Sie alle Tipps sorgfältig, da Ihr Ergebnis von der Richtigkeit der Schritte abhängt.
Registrieren Sie sich bei Amazon AWS und verbinden Sie sich mit dem Server
Amazon Web Services bietet einen einfachen Anmeldeprozess und Tipps zum Erstellen eines Profils, damit Sie diesen Schritt selbst durchführen können. Gehen Sie nach Abschluss des Registrierungsvorgangs zu Lightsail und wählen Sie die Geozone aus, in der Sie Ihren VPN-Server erstellen möchten. Erstellen Sie dann eine neue Instanz und wählen Sie diese Daten aus:„OS Only“, Debian 9.5-Betriebssystem. Dann sehen Sie einen Instanzplan – der gebräuchlichste mit 512 MB RAM wird Ihnen passen.
Einige Websites gehen aggressiv gegenüber Besuchern vor, deren IP-Adressen zu beliebten Hostern gehören, und blockieren sie. Solche Besucher nehmen ihrer Meinung nach an DDOS-Angriffen teil. Damit Sie nicht blockiert werden und eine IP-Adresse nicht mit Tausenden anderer AWS-Rechner teilen müssen, gehen Sie zu Networking und stellen Sie dann sicher, dass Sie sich selbst eine statische IP zuweisen. Weisen Sie es der von Ihnen erstellten Instanz zu.
Jetzt müssen Sie den privaten Schlüssel für den SSH-Zugriff herunterladen. Der private Schlüssel befindet sich im Abschnitt Konto> SSH-Schlüssel. Laden Sie diesen Schlüssel herunter und laden Sie ihn auf den SSH-Client hoch. Wir haben einen Server in Bali mit iPad Pro und Termius eingerichtet. Sie können jedoch einen anderen SSH-Client verwenden. Eine gute Alternative ist beispielsweise die in macOS integrierte Terminal.app. In unseren Anweisungen betrachten wir Terminal, aber der Algorithmus ist für andere SSH-Clients ähnlich.
Fangen wir einfach an – öffnen Sie das Terminal. Terminal hat ein bekanntes Problem namens „Gebietsschema“. Wenn Sie Termius verwenden, besteht dieses Problem nicht. Fügen Sie Ihrer lokalen macOS .profile-Datei ein paar neue Zeilen hinzu, um das Gebietsschemaproblem zu beseitigen. Bearbeiten Sie diese Datei mit dem Nano-Texteditor. Es wäre hilfreich, wenn Sie so etwas hätten:nano ~/ .profile. Jetzt müssen Sie dort ein paar Zeilen einfügen:
export LC_ALL=en_US.UTF-8 export LANG=en_US.UTF-8
Sie müssen diese Datei mit dem Befehl Strg+X speichern. Schließen Sie das Terminal mit dem Befehl Cmd+Q. Führen Sie es nach diesem Schritt erneut aus.
Jetzt müssen Sie den zuvor heruntergeladenen privaten Lightsail-Schlüssel in ein spezielles Verzeichnis verschieben, in dem die SSH-Schlüssel gespeichert sind:mv ~/Downloads/YOUR_DOWNLOADED_KEY.pem ~/.ssh. Schränken Sie nach diesem Schritt die Rechte des Schlüssels ein. Andernfalls blockiert macOS seine Verwendung. Dies kann mit diesen Chiffren erfolgen:
cd ~/ .ssh/ chmod 600 YOUR_DOWNLOADED_KEY.pem
Nach diesem Schritt können Sie eine Verbindung zu Ihrem Lightsail-Computer herstellen. Sie sehen ein spezielles Feld YOUR_LIGHTSAIL_IP. Darin müssen Sie eine externe statische IP-Adresse angeben:ssh -i YOUR_DOWNLOADED_KEY.pem admin @ YOUR_LIGHTSAIL_IP. Wenn Sie alles richtig gemacht haben, sehen Sie eine spezielle Inschrift mit all Ihren Daten.
Debian konfigurieren
Alle weiteren Schritte müssen Sie unter dem Benutzer root durchführen. Geben Sie also sudo su an. Aktualisieren Sie dann den Index der Pakete in den Repositories. Vielleicht können Sie selbst sehen, dass es Updates gibt:apt-get update. Jetzt ist es Ihre Aufgabe, diese Updates zu installieren:apt-get upgrade.
StrongSwan installieren
Installieren Sie strongSwan mit einer speziellen Chiffre:apt-get install strongswan. Wir werden etwas später darüber sprechen, wie man strongSwan einrichtet. Im Moment ist es am wichtigsten, Zertifikate zu erstellen, damit Ihre Geräte VPN verwenden können.
Zugriffszertifikate generieren
In unserem Leitfaden verwenden wir selbstsignierte Zertifikate, da nur unser Team den VPN-Server verwendet. Um Zertifikate zu erstellen, benötigen Sie das strongswan-pki-Paket. Installieren Sie es:Paket strongswan-pki.
Jetzt können Sie mit der Erstellung von Zertifikaten beginnen. Der erste Schritt besteht darin, ein Root-Zertifikat zu erstellen. Vor allem ist es als CA (Certificate Authority) bekannt. Dieses Zertifikat stellt Ihnen die anderen Zertifikate aus, die Sie benötigen. Sie können ein Zertifikat in der Datei ca.pem erstellen:
cd /etc/ipsec.d ipsec pki --gen --type rsa --size 4096 --outform pem > private/ca.pem ipsec pki --self --ca --lifetime 3650 --in private/ca.pem --type rsa --digest sha256 --dn "CN=YOUR_LIGHTSAIL_IP" --outform pem > cacerts/ca.pem
Um ein Zertifikat für Ihren VPN-Server zu erstellen, benötigen Sie eine debian.pem-Datei:
ipsec pki --gen --type rsa --size 4096 --outform pem > private/debian.pem ipsec pki --pub --in private/debian.pem --type rsa | ipsec pki --issue --lifetime 3650 --digest sha256 --cacert cacerts/ca.pem --cakey private/ca.pem --dn "CN=YOUR_LIGHTSAIL_IP" --san YOUR_LIGHTSAIL_IP --flag serverAuth --outform pem > certs/debian.pem
Um ein Zertifikat für Ihre Geräte zu erstellen, benötigen Sie eine me.pem-Datei:
ipsec pki --gen --type rsa --size 4096 --outform pem > private/me.pem ipsec pki --pub --in private/me.pem --type rsa | ipsec pki --issue --lifetime 3650 --digest sha256 --cacert cacerts/ca.pem --cakey private/ca.pem --dn "CN=me" --san me --flag clientAuth --outform pem > certs/me.pem
Sie benötigen die ca.pem-Datei nicht mehr, also löschen Sie sie aus Sicherheits- und Zuverlässigkeitsgründen:rm /etc/ipsec.d/private/ca.pem. Sie haben den Prozess der Zertifikatserstellung abgeschlossen – herzlichen Glückwunsch, Sie sind fast am Ende!
Was tun, wenn Zertifikate zu lange dauern?
Was meinen wir mit einer zu langen Zeit? Beispielsweise werden Ihre Zertifikate länger als 5 Sekunden generiert. Diese Daten weisen auf eine geringe Entropie hin. Beachten Sie, dass das Erstellen von Zertifikaten aufgrund der geringen Entropie 40 bis 60 Minuten dauern kann, was für Ihre Arbeit nicht sehr gut ist. Um die Entropiemenge zu überprüfen, können Sie daher eine weitere Sitzung im nächsten Tab starten:
Mit dem obigen Befehl sehen Sie die Entropiemenge zum Zeitpunkt der Anfrage. Wenn Sie die Entropie in Echtzeit kontrollieren möchten, können Sie diesen Befehl verwenden:watch -n 0.25 cat /proc/sys/kernel/random/entropy_avail.
Wenn das Ergebnis weniger als 200 Entropen anzeigt, empfehlen wir Ihnen, Ihren Hosting-Provider zu wechseln. Außerdem raten viele Experten dazu, das Paket haveged zu installieren, dessen Aufgabe es ist, Entropien zu erzeugen. Die Nützlichkeit dieses Pakets wurde jedoch nicht bewiesen, daher hängt alles von Ihnen ab. Wenn Sie Amazon Lightsail verwenden, treten diese Probleme nicht auf und Sie können Schlüssel schnell generieren. Um die Anfrage zu beenden, müssen Sie die Tastenkombination Strg + Z verwenden.
strongSwan konfigurieren
Um strongSwan richtig zu konfigurieren, müssen Sie die Standard-strongSwan-Konfiguration löschen. Verwenden Sie diesen Befehl:> /etc/ipsec.conf. Dann können Sie Ihre eigene im Nano-Texteditor erstellen:nano /etc/ipsec.conf.
Sie sehen das Feld YOUR_LIGHTSAIL_IP und Ihre Aufgabe besteht darin, es durch die externe IP-Adresse der Maschine in AWS Lightsail zu ersetzen. Jetzt können Sie Text wie diesen einfügen:
include /var/lib/strongswan/ipsec.conf.inc config setup uniqueids=never charondebug="ike 2, knl 2, cfg 2, net 2, esp 2, dmn 2, mgr 2" conn %default keyexchange=ikev2 ike=aes128gcm16-sha2_256-prfsha256-ecp256! esp=aes128gcm16-sha2_256-ecp256! fragmentation=yes rekey=no compress=yes dpdaction=clear left=%any leftauth=pubkey leftsourceip=YOUR_LIGHTSAIL_IP leftid=YOUR_LIGHTSAIL_IP leftcert=debian.pem leftsendcert=always leftsubnet=0.0.0.0/0 right=%any rightauth=pubkey rightsourceip=10.10.10.0/24 rightdns=8.8.8.8,8.8.4.4 conn ikev2-pubkey auto=add
Wichtig! strongSwan ist sehr streng in Bezug auf alle Einrückungen in der Konfiguration. Trennen Sie daher bei der Eingabe von Befehlen jeden Abschnitt der Konfiguration mit der Tabulatortaste. In unserem Beispiel haben wir festgelegt, wie das aussehen soll. Sie können unser Modell verwenden oder nur einen Einzug machen. Andernfalls funktioniert strongSwan nicht.
Speichern Sie die erstellte Datei mit den Tasten Strg + X. Fügen Sie in der Datei ipsec.secrets, in der alle Verweise auf Zertifikate und Authentifizierungsschlüssel gespeichert sind, einen speziellen Zeiger auf Ihr Serverzertifikat hinzu:
nano /etc/ipsec.secrets include /var/lib/strongswan/ipsec.secrets.inc : RSA debian.pem
Wenn Sie alle Schritte befolgt haben, ist die Einrichtung von Strongswan abgeschlossen. Es wäre hilfreich, wenn Sie den Dienst neu starten:ipsec restart. Vorausgesetzt, Sie haben alle Befehle korrekt eingegeben, startet der Server mit der folgenden Meldung:
StrongSwan 5.5.1 IPsec starten [Starter]…
Wenn Sie feststellen, dass das Programm einen Fehler ausgibt, lesen Sie das Systemprotokoll, um festzustellen, wo das Problem liegt. Der Befehl zeigt die letzten 50 Zeilen des Protokolls an:tail -n 50> /var/log/syslog.
Netzwerk-Kernel-Einstellungen konfigurieren
An der Datei /etc/sysctl.conf müssen Sie einige Änderungen vornehmen:nano /etc/sysctl.conf. Suchen Sie mit den beiden Tasten Strg + W die folgenden Variablen in der Datei und nehmen Sie dort Änderungen vor:
- Entkommentieren Sie diese Option, um die Paketweiterleitung zu aktivieren:net.ipv4.ip_forward =1
- Entkommentieren Sie diesen Parameter, um MITM-Angriffe zu verhindern:net.ipv4.conf.all.accept_redirects =0
- Entkommentieren Sie diesen Parameter, um das Senden von ICMP-Weiterleitungen zu deaktivieren:net.ipv4.conf.all.send_redirects =0
- Fügen Sie diesen Parameter irgendwo in der Datei in einer neuen Zeile hinzu und deaktivieren Sie die PMTU-Suche:net.ipv4.ip_no_pmtu_disc =1
Laden Sie die neu erhaltenen Werte:sysctl -p. Sie sind mit der Konfiguration der Kernel-Netzwerkparameter fertig.
iptables konfigurieren
iptables ist ein spezielles Tool, das die eingebaute Netfilter-Firewall von Linux verwaltet und steuert. Installieren Sie das Paket iptables-persistent, mit dem Sie iptables-Regeln in einer Datei speichern und bei jedem Systemstart laden können:apt-get install iptables-persistent.
Nach der Installation dieses Pakets werden Sie vom System aufgefordert, die aktuellen IPv4- und IPv6-Regeln beizubehalten. Sie müssen „nein“ angeben, da Sie ein neues System und keine Daten zum Speichern haben.
Beginnen Sie nun mit der Erstellung Ihrer iptables-Regeln. Um Sicherheit und Zuverlässigkeit zu gewährleisten, löschen Sie alle Ketten:
iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -F iptables -Z
Um den Zugriff auf das System nicht zu verlieren, erlauben Sie SSH-Verbindungen auf Port 22:
iptables -A INPUT -m state --state ESTABLISHED, RELATED -j ACCEPT iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Der nächste Schritt besteht darin, Verbindungen auf der Loopback-Schnittstelle zuzulassen:iptables -A INPUT -i lo -j ACCEPT. Lassen Sie dann eingehende IPSec-Verbindungen auf den UDP-Ports 500 und 4500 zu:
iptables -A INPUT -p udp --dport 500 -j ACCEPT iptables -A INPUT -p udp --dport 4500 -j ACCEPT
ESP-Verkehrsweiterleitung zulassen:
iptables -A FORWARD --match policy --pol ipsec --dir in --proto esp -s 10.10.10.0/24 -j ACCEPT iptables -A FORWARD --match policy --pol ipsec --dir out --proto esp -d 10.10.10.0/24 -j ACCEPT
Ein VPN-Server ist wie ein Thread zwischen dem Internet und den VPN-Clients, daher müssen Sie die Verkehrsmaskierung konfigurieren:
iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -m policy --pol ipsec --dir out -j ACCEPT iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE
Konfigurieren Sie die maximale Paketsegmentgröße:
iptables -t mangle -A FORWARD --match policy --pol ipsec --dir in -s 10.10.10.0/24 -o eth0 -p tcp -m tcp --tcp-flags SYN, RST SYN -m tcpmss --mss 1361: 1536 -j TCPMSS --set-mss 1360
Verweigern Sie alle Verbindungen von Drittanbietern zum Server mit den folgenden Befehlen:
iptables -A INPUT -j DROP iptables -A FORWARD -j DROP
Speichern Sie die erstellten Regeln, damit sie nach jedem Neustart vorhanden sind:
netfilter-persistent save netfilter-persistent reload
Starten Sie das System neu:Starten Sie neu und prüfen Sie, ob die von Ihnen erstellten Regeln funktionieren.
Verbindungen in der Lightsail-Firewall zulassen
AWS Lightsail hat seine Firewall zum Schutz von Systemen entwickelt. Wählen Sie Ihre Instanz aus, gehen Sie zu Netzwerk und erlauben Sie Verbindungen auf den UDP-Ports 500 und 4500. Entfernen Sie gleichzeitig Port 80 – Sie werden ihn nicht benötigen.
.mobileconfig für iPhone, iPad, Mac erstellen
Ihre Geräte sind iPhone, iPad und Mac, sodass Sie ein VPN-Profil .mobileconfig verwenden können. Es wäre hilfreich, wenn Sie eine On-Demand-Konfiguration erstellen würden. Wenn ein Dienst oder eine Anwendung versucht, offline zu gehen, funktioniert die VPN-Verbindung automatisch weiter. Sie werden die Situation vermeiden, in der Sie gehämmert haben, um eine VPN-Verbindung herzustellen, und der Datenverkehr über den Anbieter lief. Verwenden Sie das Skript, das diese Konfiguration für Sie generiert:
wget https://gist.githubusercontent.com/borisovonline/955b7c583c049464c878bbe43329a521/raw/966e8a1b0a413f794280aba147b7cea0661f77a8/mobileconfig.sh
Installieren Sie das zsh-Paket, damit das Skript ordnungsgemäß funktioniert:apt-get install zsh. Bearbeiten Sie den Servernamen nach Ihren Vorstellungen und schreiben Sie die externe IP-Adresse des Lightsail-Computers, die Sie zuvor beim Erstellen der Zertifikate angegeben haben:
nano mobileconfig.sh SERVER="AWS Frankfurt" FQDN="YOUR_LIGHTSAIL_IP"
Führen Sie nun das Skript aus und erhalten Sie die Datei iphone.mobileconfig:
chmod u+x mobileconfig.sh ./mobileconfig.sh > iphone.mobileconfig.
Löschen Sie diese Datei vom Server, indem Sie sich mit Transmit oder Cyberduck verbinden – senden Sie sie per Airdrop an alle Ihre Geräte. Bestätigen Sie die Installation der Konfiguration auf den Geräten. Sie werden automatisch Verbindungen zum VPN-Server aufbauen.
Achten Sie darauf, hinter sich aufzuräumen:
rm mobileconfig.sh rm iphone.mobileconfig