Lassen Sie sshd auf eine bestimmte Schnittstelle hören

15

Auf meinem Computer verwende ich OpenVPN, das die tun0-Schnittstelle verwendet. Ich möchte, dass sshd nur auf dieser Schnittstelle hört.

Ich weiß, ich kann die IP-Adresse angeben, die abgehört werden soll

/etc/ssh/sshd_config

mit einer

ListenAddress 0.0.0.0

Richtlinie. Meine IP-Adresse ändert sich jedoch, sodass ich hier keine immer gültige IP auswählen kann. Ich weiß, dass ich den Daemon nur starten kann, wenn das VPN aktiv ist - das ist nicht das Problem.

Wie kann ich sshd dazu bringen, nur eine bestimmte Schnittstelle (tun0) abzuhören?

Philipp
quelle
2
Firewall aus Port 22 an irgendwelchen Ports, die es nicht sind tun0?
NickW

Antworten:

7

Sie können dies nicht direkt tun, da sshd nur IP-Adressen versteht. Möglicherweise können Sie mithilfe eines OpenVPN-Up-Skripts etwas zusammenfügen

-up cmd Shell-Befehl, der ausgeführt wird, nachdem das TUN / TAP-Gerät erfolgreich geöffnet wurde (UID-Änderung vor dem Benutzer). Das Skript up ist nützlich, um Routenbefehle anzugeben, mit denen IP-Verkehr für private Subnetze, die am anderen Ende der VPN-Verbindung vorhanden sind, in den Tunnel geleitet wird.

Siehe auch die --downOption zum Bereinigen und die relevanten Teile der Dokumentation, die die Skriptsicherheit usw. beschreiben.

Sie werden feststellen, dass die IP-Adresse des Tun-Geräts als Umgebungsvariable an das Skript übergeben wird. Sshd übernimmt auch Optionen in der Befehlszeile des Formulars

-oSomeOption=SomeValue

-o Option Kann verwendet werden, um Optionen in dem Format anzugeben, das in der Konfigurationsdatei verwendet wird. Dies ist nützlich, um Optionen anzugeben, für die es kein separates Befehlszeilenflag gibt. Ausführliche Informationen zu den Optionen und ihren Werten finden Sie unter sshd_config (5).

Du könntest es also gebrauchen

-o ListenAddress=<some address>

Vermutlich haben Sie eine Out-of-Band-Methode, um mit Ihrem VPS zu sprechen, sodass Sie den Server kontaktieren können, wenn dies unterbrochen wird.

user9517 supportedGoFundMonica
quelle
1
Versuchen Sie:-o ListenAddress=$(ip addr | awk '/inet/ && /tun0/{sub(/\/.*$/,"",$2); print $2}')
pjz
@pjz Ich glaube, Sie müssen das nicht tun, da ich ziemlich sicher bin, dass die IP-Adresse des Geräts als Umgebungsvariable für das up-Skript verfügbar ist. Ich habe einfach nicht das Zeug zur Hand, um es zu testen.
User9517 unterstützt GoFundMonica
1
Ausgezeichnet! Die IP wird als ifconfig_local = 10.xx.xx.xx an das up-Skript übergeben. Eine ganze Reihe anderer Daten (dev_type = tun, common_name = myservername, ifconfig_remote, route_gateway_1, untrusted_ip, ifconfig_local, proto_1, tls_serial_1, tls_serial_0 ...) werden weitergegeben.
Philipp
Ja, ich weiß und jetzt tust du es auch :)
user9517 supportedGoFundMonica
3
Vielleicht möchten Sie Ihre Antwort bearbeiten und den entsprechenden Namen der Umgebungsvariablen hinzufügen? (für zukünftige Leser)
Philipp