GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So erstellen Sie Ihr eigenes VPN – Detaillierte Anweisungen

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

Linux
  1. So erstellen Sie eine IAM-Rolle in AWS mit Terraform

  2. So erstellen Sie ein physisches Volume unter Linux mit LVM

  3. So erstellen Sie RPM für Ihr eigenes Skript in CentOS/RedHat

  4. So erstellen Sie einen Linux-Benutzer mit Ansible

  5. So erstellen Sie Ihre Plesk-Site

So erstellen und pflegen Sie Ihre eigenen Manpages

So erstellen Sie Ihren WordPress-Entwickler-Stack auf OpenShift 4

So erstellen Sie Ihren eigenen IPsec-VPN-Server unter Linux

So erstellen Sie eine Partition mit dem Befehl „parted“

So erstellen Sie Festplattenpartitionen mit cfdisk

Wie kann man ganz einfach seine eigene Linux-Distribution erstellen?