OpenVPN anonymisieren SSH-Zugriff auf internen Server zulassen

10

Ich verwende ein anonymisierendes VPN, möchte aber einen SSH-Zugriff auf den internen Computer.

Wie greife ich über SSH auf meinen internen Computer zu? Wenn ich ssh 98.123.45.6 mache , läuft die Verbindung ab.

  • IP-Adresse des Kabelanbieters: 98.123.45.6
  • Anonyme IP über VPN: 50.1.2.3
  • Interner Computer: 192.168.1.123

Bei der Suche habe ich Empfehlungen gefunden, um entweder iptables-Regeln oder Routing-Regeln einzurichten oder ListenAddress zu sshd_config hinzuzufügen. Welche davon trifft auf meinen Fall zu?

Hier ist meine Route :

Kernel-IP-Routing-Tabelle
Destination Gateway Genmask Flags Metric Ref Verwenden Sie Iface
10.115.81.1 10.115.81.9 255.255.255.255 UGH 0 0 0 tun0
10.115.81.9 * 255.255.255.255 UH 0 0 0 tun0
50.1.2.3-sta ddwrt 255.255.255.255 UGH 0 0 0 eth0
192.168.1.0 * 255.255.255.0 U 202 0 0 eth0
169.254.0.0 * 255.255.0.0 U 204 0 0 vboxnet0
Loopback * 255.0.0.0 U 0 0 0 lo
Standard 10.115.81.9 128.0.0.0 UG 0 0 0 tun0
128.0.0.0 10.115.81.9 128.0.0.0 UG 0 0 0 tun0
Standard ddwrt 0.0.0.0 UG 202 0 0 eth0
Lionel
quelle

Antworten:

15

Um dieses Problem zu beheben, müssen Sie sowohl iptables als auch Routing-Regeln einrichten . Das spezifische Problem besteht darin, dass ausgehende SSH-Pakete über Ihre anonyme VPN-Tunnelschnittstelle anstelle Ihrer Ethernet-Schnittstelle weitergeleitet werden. Dies liegt daran, dass Ihre VPN-Software eine Routing-Regel eingerichtet hat, um jeglichen nicht behandelten Datenverkehr über die Tunnelschnittstelle zu senden. Gut für die Anonymisierung Ihres Netzwerkverkehrs; schlecht für den Aufbau von SSH-Verbindungen zu Ihrem Computer.

Es gibt einige Möglichkeiten, um dieses Problem zu beheben, aber ich werde Ihnen die mitteilen, die in einer identischen Situation für mich funktioniert hat. Folgendes müssen wir tun:

  1. Erstellen Sie eine neue IP-Regeltabelle für den Nicht-VPN-Verkehr
  2. Fügen Sie eine IP-Regel hinzu, um in unserer No-VPN-Tabelle nach Paketen zu suchen, die mit einer bestimmten Netzfiltermaske gekennzeichnet sind
  3. Fügen Sie eine IP-Route hinzu, die den gesamten Datenverkehr in unserer No-VPN-Tabelle so leitet, dass Ihre Ethernet-Schnittstelle anstelle des Tunnels verwendet wird
  4. Fügen Sie eine iptables-Regel hinzu, um den gesamten SSH-Verkehr mit unserer festgelegten Netzfiltermaske zu markieren

Hinweis: Ich habe mit Raspbian gearbeitet, während ich Folgendes ausgeführt habe. Daher müssen Sie möglicherweise die Befehle ein wenig anpassen, um sie an Ihre Distribution anzupassen.

Erstellen einer neuen IP-Regeltabelle

Beginnen Sie mit der Überprüfung der Tabellendefinitionsdatei von iproute2. Wir möchten sicherstellen, dass wir nicht den Namen oder die Nummer vorhandener Regeltabellen verwenden.

cat /etc/iproute2/rt_tables

Sie werden wahrscheinlich etwas in dieser Richtung sehen:

# reserved values
255      local 
254      main
253      default   
0        unspec
#
# local
#
#1      inr.ruhep

Wählen Sie eine beliebige Nummer und einen beliebigen Namen für Ihre neue Regeltabelle - alles, was oben nicht verwendet wurde. Ich werde die Nummer 201 und den Namen novpnfür den Rest dieser Antwort verwenden.

Hängen Sie eine Definition direkt an die Definitionsdatei an oder bearbeiten Sie sie im Texteditor Ihrer Wahl:

echo "201 novpn" >> /etc/iproute2/rt_tables

Fügen Sie eine neue IP-Regel hinzu, um die No-VPN-Tabelle nachzuschlagen

Suchen Sie nach vorhandenen IP-Regeln, die sich mit Netzfiltermasken befassen:

ip rule show | grep fwmark

Wenn grep nichts auftaucht, sind Sie im klaren. Wenn einige Zeilen gedruckt werden, notieren Sie sich die Hexadezimalzahl rechts neben dem Wort fwmarkin jeder Zeile. Sie müssen eine Nummer auswählen, die derzeit nicht verwendet wird. Da ich keine fwmark-Regeln hatte, wählte ich die Nummer 65.

ip rule add fwmark 65 table novpn

Dies führt dazu, dass Pakete mit der Netzfiltermaske 65 in unserer neuen novpnTabelle nach Anweisungen zum Weiterleiten der Pakete suchen.

Leiten Sie den gesamten Datenverkehr in unserer neuen Tabelle zur Verwendung der Ethernet-Schnittstelle

ip route add default via YOUR.GATEWAY.IP.HERE dev eth0 table novpn

Das Wichtigste dabei ist dev eth0. Dadurch wird der gesamte Datenverkehr, der durch die novpnTabelle geleitet wird, gezwungen, nur die Hardware-Ethernet-Schnittstelle anstelle der von Ihrem VPN erstellten virtuellen Tunnelschnittstelle zu verwenden.

Jetzt wäre ein guter Zeitpunkt, um Ihren iproute-Cache zu leeren und sicherzustellen, dass Ihre neuen Regeln und Routen sofort wirksam werden:

ip route flush cache

Weisen Sie die Firewall-Regel an, den gesamten SSH-Verkehr mit der angegebenen Netzfiltermaske zu kennzeichnen

iptables -t mangle -A OUTPUT -p tcp --sport 22 -j MARK --set-mark 65

Hier gibt es zu viele Möglichkeiten, als dass ich sie näher erläutern könnte. Ich empfehle Ihnen dringend, die Handbuchseite für iptables zu lesen, um einen Eindruck davon zu bekommen, was hier vor sich geht:

man iptables

Kurz gesagt: Wir hängen eine Ausgaberegel an die Mangle-Tabelle der Firewall an (für die spezielle Paketverarbeitung), die sie anweist, alle TCP-Pakete, die vom Quellport 22 stammen, mit unserer festgelegten Netzfiltermaske 65 zu markieren.

Was als nächstes?

Zu diesem Zeitpunkt sollten Sie bereit sein, SSH zu testen. Wenn alles gut geht, sollten Sie mit der fröhlichen Aufforderung "Anmelden als" empfangen werden.

Aus Sicherheitsgründen empfehle ich Ihnen, Ihre Firewall anzuweisen, eingehende SSH-Anforderungen von der Tunnelschnittstelle zu löschen:

iptables -A INPUT -i tun0 -p tcp -m tcp --dport 22 -j DROP

Beachten Sie, dass alle oben genannten Anweisungen vorübergehend sind (mit Ausnahme der Erstellung der Regeltabellen-ID). Sie werden beim nächsten Neustart Ihres Computers gelöscht. Sie dauerhaft zu machen, ist eine Übung, die ich Ihnen überlasse.

Biege.
quelle