Es ist 2017 und die Verwendung eines VPN ist ein Kinderspiel geworden. In Anbetracht der zahlreichen externen Datenschutzbedenken und der Tatsache, dass Ihr eigener ISP Ihren Browserverlauf verkaufen kann, ist es nicht gerechtfertigt, keinen zu verwenden.
Sicher, Sie können einen der Hunderte von VPN-Diensten bezahlen, aber auch hier verlassen Sie sich auf jemanden mit Ihren Daten. Die meisten sind in Wirklichkeit großartig, aber wenn Sie die vollständige Kontrolle haben möchten, können Sie Ihr eigenes VPN auf einem virtuellen Server (Virtual Private Server, VPS) aufbauen oder Ihren eigenen privaten Server mieten, wenn Sie Lust haben, wirklich hart mit ihm umzugehen.
Alles, was Sie zum Aufbau eines VPN benötigen, ist die Open Source OpenVPN-Software und Linux (oder BSD). Die Konfiguration kann involviert sein, aber es ist nicht unmöglich, mit jemandem mit grundlegenden Linux-Kenntnissen eine Distribution wie Ubuntu zu erstellen.
Für dieses Handbuch benötigen Sie einen VPS, auf dem Ubuntu ausgeführt wird. Sie können eine sehr einfach von jemandem wie DigitalOcean oder Linode abholen. Befolgen Sie die grundlegenden Sicherheitsanweisungen für die Einrichtung. Stellen Sie sicher, dass Sie keine grundlegenden Fehler wie das Zulassen des Root-Zugriffs über SSH machen.
Denken Sie auch daran, dass Sie das gesamte Setup in der Befehlszeile über SSH zu Ihrem VPS ausführen werden. Es gibt nichts, was verrücktes Linux-Wissen erfordert, aber seien Sie bereit, zu tippen, anstatt zu klicken.
Erhalten, was Sie benötigen
Schnellzugriff
- Erhalten, was Sie benötigen
- Richten Sie die Firewall ein
- Finden Sie die Schnittstelle
- Iptables-Grundlagen
- Richten Sie Ihre Regeln ein
- Loopback
- Klingeln
- SSH
- OpenVPN
- DNS
- HTTP / S
- NTP
- TUN
- Protokollierung
- Alles andere ablehnen
- NAT Masquerading
- IPv4-Datenverkehr weiterleiten
- Beenden Sie alle IPv6-Verbindungen
- Importieren und in Iptables speichern
Ubuntu packt und verteilt OpenVPN in seinen Repositories. Sie müssen nur apt verwenden, um es zu installieren. Sie benötigen außerdem das Tool zum Generieren von Verschlüsselungsschlüsseln. Installieren Sie beide.
$ sudo apt installiere openvpn easy-rsa
Richten Sie die Firewall ein
Als nächstes müssen Sie sich um die Firewall kümmern. Dies ist ein wichtiges Element für die Sicherheit Ihres VPN und die Verhinderung von Datenverlust und unerwünschtem Zugriff.
Iptables ist die Hauptfirewall für Linux und die beste Option, um den Zugriff auf Ubuntu-Ports zu steuern. Sie haben es bereits installiert, sodass Sie mit dem Einrichten Ihrer Firewall-Regeln beginnen können.
Finden Sie die Schnittstelle
Bevor Sie mit dem Schreiben von Regeln in iptables beginnen, müssen Sie herausfinden, über welche Schnittstelle Ihr Server mit dem Internet verbunden ist. Führen Sie ifconfig aus, um Ihre Netzwerkschnittstellen anzuzeigen. Diejenige mit einer inet-Adresse, die mit der IP-Adresse übereinstimmt, mit der Sie verbunden sind, ist die richtige Schnittstelle.
Iptables-Grundlagen
Es ist normalerweise keine gute Idee, Dinge aus dem Internet nach dem Zufallsprinzip zu kopieren und in das Terminal einzufügen. Dies gilt insbesondere für Sicherheitsthemen. Nehmen Sie sich hier etwas Zeit, um sich mit den Regeln von iptables vertraut zu machen, bevor Sie sie eingeben.
Schauen Sie sich dieses Beispiel einer iptables-Regel an.
- EINGABE - i eth0 - p tcp - m state - state ESTABLISHED - sport 443 - j ACCEPT
Okay, also - A bedeutet, dass Sie eine neue Regel anhängen werden. Dann bedeutet INPUT, dass es sich um eine Eingabe auf Ihrem Server handelt. Es gibt auch einen OUTPUT. Das Flag -i teilt iptables mit, für welche Schnittstelle diese Regel gilt. Sie können mit -p angeben, für welches Protokoll die Regel gilt. Diese Regel behandelt TCP. -m gibt eine Bedingung an, die eine Verbindung erfüllen muss. In diesem Fall muss es dem angegebenen Status entsprechen. Natürlich gibt then -state einen Status an, in diesem Fall eine ESTABLISHED-Verbindung. Der nächste Teil teilt iptables mit, für welchen Port diese Regel gilt. Hier ist Port 443, der HTTPS-Port. Das letzte Flag ist -j. Es steht für "jump" und sagt iptables, was mit der Verbindung zu tun ist. Wenn diese Verbindung alle Anforderungen der Regel erfüllt, würde iptables sie akzeptieren.
Richten Sie Ihre Regeln ein
Sie sollten also eine allgemeine Vorstellung davon haben, wie iptables-Regeln jetzt funktionieren. Im Rest dieses Abschnitts erfahren Sie, wie Sie Ihre Regeln Stück für Stück einrichten.
Der beste Weg, um einen Satz von iptables-Regeln zu erstellen, besteht darin, eine Datei zu erstellen, die alle Regeln enthält. Dann können Sie alles auf einmal in iptables importieren. Das Festlegen von Regeln nacheinander kann verwirrend sein, insbesondere wenn Sie einen neuen Satz von Regeln von Grund auf neu beginnen.
Erstellen Sie eine Datei im Verzeichnis / tmp, um Ihre Regeln zu erstellen.
$ vim / tmp / ipv4
Starten Sie diese Datei mit * filter. Dies teilt iptables mit, dass die folgenden Regeln für die Paketfilterung gelten werden.
Loopback
Der erste Abschnitt der Regeln sperrt die Loopback-Schnittstelle. Sie teilen iptables mit, dass der Server auf der Loopback-Schnittstelle Datenverkehr von sich selbst akzeptieren soll. Es sollte auch Datenverkehr von sich selbst abweisen, der nicht aus dem Loopback stammt.
-A EINGABE -i lo -j AKZEPTIERE -EINGABE! -i lo -s 127.0.0.0/8 -j REJECT -A OUTPUT -o lo -j ACCEPT
Klingeln
Als nächstes erlauben Sie ping. Sie sollten in der Lage sein, Ihren Server zu pingen, um sicherzustellen, dass er online ist, falls er sonst nicht erreichbar ist. In diesem Fall sind nur Echoanforderungen zulässig, und der Server kann ICMP-Ausgaben selbst senden.
-A EINGABE -p ICMP -m Status --Status NEU --ICMP-Typ 8 -j AKZEPTIEREN -A EINGABE -p ICMP -m Status --Status EINGESTELLT, VERBUNDEN -j AKZEPTIEREN -A AUSGABE -p ICMP -j AKZEPTIEREN
SSH
Du brauchst SSH. Nur so können Sie Ihren Server erreichen. Die SSH-Regeln sind spezifisch für Ihre Internetschnittstelle. Stellen Sie daher sicher, dass Sie eth0 für die Schnittstelle verwenden, die Ihr Server tatsächlich verwendet.
Es könnte auch eine gute Idee sein, Ihre SSH-Verbindungen von Port 22 aus zu ändern, da dies die Standardeinstellung ist, die potenzielle Angreifer versuchen würden. Wenn Sie dies tun, stellen Sie sicher, dass Sie dies auch in Ihren iptables-Regeln ändern.
- EINGABE - i eth0 - p tcp - m state - state NEU, FESTGELEGT - dport 22 - j ACCEPT - AUSGABE - o eth0 - p tcp - m state - state FESTGELEGT - sport 22 - j ACCEPT
OpenVPN
In diesem nächsten Abschnitt wird der Datenverkehr zum und vom OpenVPN-Server über UDP ermöglicht.
- EINGABE - i eth0 - p udp - m state - state NEU, EINGESTELLT - port 1194 - j ACCEPT - AUSGABE - o eth0 - p udp - m state - state EINGESTELLT - sport 1194 - j ACCEPT
DNS
Lassen Sie jetzt DNS-Verbindungen über UDP und TCP zu. Sie möchten, dass Ihr VPN DNS verarbeitet, nicht Ihr ISP. Dies ist einer der Gründe, warum Sie in erster Linie ein VPN einrichten.
- EINGABE - i eth0 - p udp - m state - state ESTABLISHED - sport 53 - j ACCEPT - AUSGABE - o eth0 - p udp - m state - state NEW, ESTABLISHED - dport 53 - j ACCEPT - A EINGABE -i eth0 -p tcp -m Status - Status HERGESTELLT --sport 53 -j AKZEPTIEREN -A AUSGABE -o eth0 -p tcp -m Status - Status NEU, HERGESTELLT --port 53 -j AKZEPTIEREN
HTTP / S
Damit Ubuntu sich selbst aktualisieren kann, müssen Sie eine Reihe von Regeln hinzufügen, um ausgehende Verbindungen von HTTP und HTTPS zu ermöglichen. Beachten Sie, dass diese Regeln dem Server nur das Einleiten von HTTP-Verbindungen ermöglichen. Sie können ihn daher nicht als Webserver verwenden oder über Port 80 oder Port 443 eine Verbindung zu ihm herstellen
- EINGABE - i eth0 - p tcp - m state - state ESTABLISHED - sport 80 - j ACCEPT - EINGABE - i eth0 - p tcp - m state - state ESTABLISHED - sport 443 - j ACCEPT - a OUTPUT - o eth0 -p tcp -m state --status NEU, FESTGELEGT --port 80 -j ACCEPT -A OUTPUT -o eth0 -p tcp -m state --status NEU, FESTGELEGT --port 443 -j ACCEPT
NTP
Damit die Serveruhr ordnungsgemäß läuft, benötigen Sie NTP. Mit NTP kann Ihr Server mit Zeitservern auf der ganzen Welt synchronisieren. Eine falsche Uhr auf Ihrem Server kann zu Verbindungsproblemen führen. Daher ist es eine gute Idee, NTP auszuführen. Auch hier sollten Sie nur ausgehende und bereits bestehende Verbindungen akzeptieren.
- EINGABE - i eth0 - p udp - m state - state ESTABLISHED - sport 123 - j ACCEPT - AUSGABE - o eth0 - p udp - m state - state NEW, ESTABLISHED - dport 123 - j ACCEPT
TUN
Entsperren Sie die TUN-Schnittstelle, die OpenVPN zum Tunneln des Datenverkehrs verwendet.
-A INPUT -i tun0 -j ACCEPT -A FORWARD -i tun0 -j ACCEPT -A OUTPUT -o tun0 -j ACCEPT
Sie müssen TUN erlauben, Datenverkehr für das VPN an Ihre reguläre Schnittstelle weiterzuleiten. Sie finden diese IP-Adresse in der OpenVPN-Konfiguration. Wenn Sie es in der Konfiguration ändern, ändern Sie es auch in Ihren Regeln.
-A FORWARD -i tun0 -o eth0 -s 10.8.0.0/24 -j ACCEPT -A FORWARD -m state --state ESTABLISHED, RELATED -j ACCEPT
Protokollierung
Es ist eine gute Idee, Protokolle über alles zu führen, was von iptables abgelehnt wird. In diesem Fall ist alles gemeint, was nicht in eine dieser Regeln passt. Mit Hilfe von Protokollen können Sie feststellen, ob böswillige Aktivitäten vorliegen oder ob versucht wird, etwas Schändliches gegen Ihren Server zu unternehmen.
-A INPUT -m limit –limit 3 / min -j LOG –log-Präfix “iptables_INPUT_denied:” –log-Level 4
-A FORWARD -m limit –limit 3 / min -j LOG –log-Präfix “iptables_FORWARD_denied:” –log-Level 4
-A OUTPUT -m limit –limit 3 / min -j LOG –log-Präfix “iptables_OUTPUT_denied:” –log-Level 4
Alles andere ablehnen
Schließlich müssen Sie alles blockieren, was nicht in Ihre Regeln passt. Das ist der eigentliche Zweck einer Firewall.
-A EINGABE -j ABLEHNUNG -A VORWÄRTS -j ABLEHNUNG -A AUSGABE -j ABLEHNUNG
Schließen Sie die Datei mit COMMIT, um iptables anzuweisen, alle Regeln festzuschreiben.
NAT Masquerading
Sie müssen die Verbindungen vom VPN so einrichten, als ob sie vom Server selbst stammen. Dieses Teil kann nicht in die reguläre iptables-Datei aufgenommen werden, da eine andere Tabelle verwendet wird. Das ist aber in Ordnung, es ist nur eine Zeile.
$ sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
IPv4-Datenverkehr weiterleiten
Sie müssen die Weiterleitung von IPv4-Verkehr aktivieren, damit dieser zwischen dem VPN und der tatsächlichen Netzwerkschnittstelle Ihres Servers übertragen werden kann. Öffnen Sie /etc/sysctl.d/99-sysctl.conf mit sudo.
Suchen Sie die Zeile darunter und entfernen Sie das #, um das Kommentarzeichen zu entfernen.
Beenden Sie alle IPv6-Verbindungen
Entschuldigung, du bist noch nicht mit iptables fertig. Sie müssen den gesamten IPv6-Verkehr blockieren. Dieser OpenVPN-Server unterstützt nur IPv4, was in Ordnung ist, da Sie nicht in eine Situation geraten, in der Sie IPv6 benötigen. Infolgedessen können bei IPv6-Verbindungen möglicherweise Informationen verloren gehen. Dies ist das Gegenteil von dem, was Sie bei der Verwendung eines VPN wünschen.
Bevor Sie die Regeln für iptables festlegen, müssen Sie IPv6 überall auf dem System deaktivieren.
Fügen Sie die folgenden Zeilen zu /etc/sysctl.d/99-sysctl.conf hinzu. Wenn Sie es aus dem vorherigen Abschnitt geschlossen haben, öffnen Sie es erneut mit sudo.
net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1 net.ipv6.conf.eth0.disable_ipv6 = 1
Aktivieren Sie Ihre Änderungen.
$ sudo sysctl -p
Kommentieren Sie alle IPv6-Zeilen in / etc / hosts. Du wirst auch hier Sudo brauchen.
# :: 1 ip6-localhost ip6-loopback # fe00 :: 0 ip6-localnet # ff00 :: 0 ip6-mcastprefix # ff02 :: 1 ip6-allnodes # ff02 :: 2 ip6-allrouters
Zuletzt können Sie die IPv6-Iptables-Regeln schreiben. Erstellen Sie eine Datei für sie unter / tmp / ipv6.
* filter -A INPUT -j REJECT -A FORWARD -j REJECT -A OUTPUT -j REJECT COMMIT
Siehst du, sie sind einfach. Lehne alles ab
Importieren und in Iptables speichern
Sie müssen diese Regeln importieren, damit sie etwas tun können. Jetzt ist die Zeit dafür gekommen.
Beginnen Sie, indem Sie alles andere räumen, was da ist. Sie wollen nicht, dass alte Regeln im Weg sind.
$ sudo iptables -F && sudo iptables -X
Importieren Sie Ihre IPv4- und IPv6-Regeln.
$ sudo iptables-restore </ tmp / ipv4 $ sudo ip6tables-restore </ tmp / ipv6
Sie werden das wahrscheinlich nie wieder tun wollen. Sie benötigen also ein neues Paket, um Ihre Regeln dauerhaft zu speichern.
$ sudo apt installiere iptables-persistent
Während der Installation werden Sie aufgefordert, Ihre vorhandenen Regeln zu speichern. Antworten Sie mit "Ja".
Wenn Sie später Änderungen vornehmen, können Sie auch Ihre gespeicherten Konfigurationen aktualisieren.
$ sudo service netfilter-persistent speichern
Es hat eine Weile gedauert, aber Ihre Firewall ist betriebsbereit. Auf der nächsten Seite befassen wir uns mit der Erstellung der erforderlichen Verschlüsselungsschlüssel.
Klicken Sie hier: Nächste Seite
