Kung Fu Style Linux: Kostenloses VPN über SSH

Wenn Sie auf einigen Websites viele Werbebanner sehen, wissen Sie, dass Hacker sehr bald Ihren Computer übernehmen und ruinieren und Ihr Zuhause verbrennen, wenn Sie kein VPN (Virtual Private Network) verwenden. Zumindest planen sie definitiv so etwas. Tatsächlich gibt es zwei Hauptgründe, warum jemand möglicherweise eine VPN-Verbindung benötigt. Sie können natürlich ein Abonnement für den entsprechenden Dienst kaufen. Wenn Sie jedoch über einen SSH-Zugriff auf einen Computer mit Internetzugang verfügen, können Sie Ihren eigenen VPN-Dienst erstellen, ohne einen Cent dafür auszugeben.



Die Grundidee hierbei ist, eine Verbindung zu einem Remotecomputer in einem Netzwerk herzustellen und den gesamten Netzwerkverkehr für dieses Netzwerk als lokal zu betrachten.







Der erste Grund, warum jemand dies benötigt, ist die Verbesserung der Sicherheit und die frühzeitige Beseitigung potenzieller Bedrohungen. Beispielsweise müssen Sie möglicherweise auf einem Netzwerkdrucker drucken, ohne diesen Drucker dem normalen Internet auszusetzen. So kann beispielsweise jemand in einem Café sitzen und, nachdem er über VPN mit dem Netzwerk verbunden ist, Dokumente auf dem Drucker drucken, als ob er an seinem Schreibtisch sitzt und der Drucker ein paar Meter entfernt ist. Die Verwendung eines VPN bedeutet auch, dass die über das WiFi-Netzwerk des Cafés übertragenen Daten verschlüsselt werden.



Der zweite Grund besteht darin, den tatsächlichen Standort des Benutzers vor neugierigen Blicken zu verbergen. Nehmen wir an, jemand sieht gerne BBC-Videos, lebt aber in Ecuador. Dies bedeutet, dass er eine VPN-Verbindung zu einem Netzwerk in Großbritannien herstellen muss, damit die Videos für ihn nicht blockiert werden. Wenn die Behörden eines bestimmten Landes das Internet überwachen und zensieren, können die Einwohner dieses Landes auch von der Möglichkeit profitieren, ihren Verkehr zu verschleiern.



Die Verwendung von SSH zum Herstellen einer VPN-Verbindung ist für beide oben genannten Aufgaben in Ordnung. Wenn Sie jedoch hauptsächlich an der ersten interessiert sind, ist es möglicherweise besser, einen dedizierten Router oder einen kleinen Computer wie den Raspberry Pi zu verwenden, um Ihr Problem zu lösen. Ich muss sagen, wenn Sie irgendwo einen Server mieten, ist "VPN über SSH" nichts für Sie.



Vorbereitende Vorbereitung









VPN



Sie benötigen nur Root-Zugriff auf beide Computer. Auf dem Remotecomputer muss ein SSH-Server installiert sein. Natürlich benötigen Sie auch einen SSH-Client. Sowohl lokale als auch Remote-Computer müssen konfiguriert werden. Ich verwende KDE, daher verwende ich NetworkManager, um die erforderlichen Einstellungen vorzunehmen, aber Sie können auch in die andere Richtung gehen. Die Verwendung von NetworkManager erleichtert die Arbeit.



Einige spezielle Einstellungen müssen auf dem Server vorgenommen werden, aber es ist durchaus möglich, dass sie bereits auf dem Server vorgenommen wurden. Die Datei/etc/ssh/sshd_config



muss also eine Zeile enthaltenPermitTunnel=yes



. Außerdem müssen Sie möglicherweise den Wert auf einenyes



ParameterfestlegenAllowTCPForwarding



. Die Firewall benötigt möglicherweise auch einige Einstellungen. In diesem Fall die Anweisungen zum Konfigurieren des NetworkManager-Plugins kann sogar für diejenigen nützlich sein, die dieses Programm nicht verwenden.



Clientseitige Einstellungen



Wenn Sie NetworkManager verwenden, benötigen Sie das entsprechende Plugin. Für Neon- und andere Debian-basierte Distributionen ist das Paket in Ordnung network-manager-ssh



. Das ist alles was du brauchst. Wenn Sie NetworkManager nicht verwenden möchten, können Sie die folgenden Befehle aus dem Material des Plugin-Autors verwenden:



ssh -f -v -o Tunnel=point-to-point -o ServerAliveInterval=10 -o TCPKeepAlive=yes -w 100:100 root@YOUR_SSH_SERVER \
'/sbin/ifconfig tun100 172.16.40.1 netmask 255.255.255.252 pointopoint 172.16.40.2' && \
/sbin/ifconfig tun100 172.16.40.2 netmask 255.255.255.252 pointopoint 172.16.40.1

      
      





Dies erfordert Root-Zugriff auf beide Systeme, da wir einen Tunnel erstellen. Dies führt selbst bei Verwendung des Plugins zu mehreren Problemen. Natürlich möchten wir nicht ständig aufgefordert werden, ein Passwort für die SSH-Verbindung einzugeben und den Schlüssel zu überprüfen. Wenn Sie das VPN jedoch manuell konfigurieren, können Sie diese Probleme beheben.



Probleme



Bei den meisten modernen Systemen können Sie sich nicht mit einem Kennwort als root anmelden, und manchmal können Sie in diesem Modus nicht einmal eine Verbindung zum System herstellen. Deshalb müssen wir dieses Problem zunächst lösen. Wenn NetworkManager SSH startet, sucht es außerdem nach Schlüsseln für den Root-Benutzer, nicht für den regulären Benutzer. Wenn er etwas nicht finden kann, hört er einfach auf. Daher müssen wir eine nahtlose Root-Anmeldung bereitstellen.



Um die Root-Anmeldung am Server zu ermöglichen, müssen Sie die Datei bearbeiten /etc/ssh/sshd_config



und den Parameter PermitRootLogin



auf setzenyes



... Ich empfehle, dass Sie so lange in diesem Modus arbeiten, bis die nächsten Schritte der Serverkonfiguration abgeschlossen sind. Als Nächstes müssen Sie den sshd-Server beispielsweise mit dem folgenden Befehl neu starten:



systemctl restart sshd

      
      





Sie können diesen Befehl auch verwenden:



/etc/init.d/ssh restart

      
      





Wenn Sie sich dann mit einem regulären Konto am lokalen Computer anmelden, müssen Sie ssh-copy-id



das Zertifikat auf dem Hostcomputer installieren. Danach müssen Sie zum Server zurückkehren und den /etc/ssh/sshd_config



Wert PermitRootLogin



in ändern prohibit-password



. Auf diese Weise können Sie sich mit einem Zertifikat, jedoch ohne Kennwort, als Root beim Server anmelden.



Wenn Sie sich bereits mit root angemeldet haben, wurden Sie möglicherweise bereits gefragt, ob Sie den Serverschlüssel akzeptieren möchten. Wenn dies nicht der Fall ist, haben wir ein Problem. Wenn Sie können, melden Sie sich bitte an und beantworten Sie die entsprechende Frage mit Ja. Danach hört das System auf, sie zu stellen. Wenn dies jedoch nicht möglich ist, können wir das Problem durch Deaktivieren beheben StrictHostKeyChecking



.



Theoretisch können Sie zusätzliche ssh-Optionen an das NetworkManager-Plugin übergeben. Aus irgendeinem Grund funktioniert dieser Ansatz jedoch nicht mit der Version des Plugins aus den Repositorys. Wenn Sie das Plugin nicht verwenden und alles manuell ausführen, können Sie die erforderlichen Einstellungen selbst vornehmen. SSH-Einstellungen für Root-Benutzer können in festgelegt werden /root/.ssh/config



. Sie können auch globale Einstellungen in definieren /etc/ssh/ssh_config



.



Wenn Sie die globalen Einstellungen ändern und das System dies unterstützt, sollten Sie die Verwendung in Betracht ziehen /etc/ssh/ssh_config.d



. Dank dieser Funktion können Sie Parameter für einen bestimmten Host festlegen, die beim Aktualisieren des Systems nicht überschrieben werden. Beispielsweise können Sie eine Datei im entsprechenden Verzeichnis mit dem Namen erstellen hackaday.conf



:



Host *.hackaday.com hackaday.com
StrictHostKeyChecking no
Tunnel yes

      
      





Wenn Ihnen die Idee, den Hostschlüssel zu überprüfen, nicht gefällt, melden Sie sich einfach einmal als root an und akzeptieren Sie den Remote-Schlüssel manuell. Oder, wenn Sie mutig sind, manuell bearbeiten /root/.ssh/known_hosts



.



Verbindung



Jetzt sollte alles bereit sein. Wenn Sie das Plugin für NetworkManager verwenden, müssen Sie nur eine neue Verbindung herstellen. Sie müssen nämlich zum Abschnitt VPN-Verbindungen gehen und SSH auswählen.









Auswählen des Verbindungstyps



Jetzt müssen Sie mehrere Parameter der neuen Verbindung konfigurieren. Einschließlich - Sie müssen das Zertifikat angeben, mit dem Sie sich beim Remote-System anmelden möchten.









Einrichten der Verbindung



Nach dem Speichern der Verbindungseinstellungen kann diese Verbindung wie jede andere Netzwerkschnittstelle aktiviert werden. Wenn Sie Ihr neues VPN testen möchten, fragen Sie normalerweise zuerst auf der entsprechenden Website nach Ihrer IP-Adresse. Schalten Sie dann das VPN ein und finden Sie Ihre Adresse erneut heraus. Wenn Sie keine VPN-Verbindung herstellen können, suchen Sie im Systemprotokoll nach Informationen zu SSH-Fehlern.



Ergebnis



Es gibt natürlich auch andere VPN-Lösungen. Es ist jedoch fast garantiert, dass der Remotecomputer, mit dem Sie arbeiten, über einen SSH-Server verfügt. Daher ist das vorgeschlagene Verfahren zum Herstellen einer VPN-Verbindung über SSH eine einfache und bequeme Lösung, die ohne vorherige Vorbereitung verwendet werden kann.



Übrigens können Sie mit SSH viele interessante Dinge tun . Zum Beispiel, um die bequeme Arbeit mit Dateien zu organisieren .



Verwenden Sie ein VPN?










All Articles