Anonim

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.

net.ipv4.ip_forward = 1

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

Alles über VPNs: Wie erstelle ich mein eigenes VPN mit OpenVPN (Teil 3)?