stefankittel
Goto Top

Remote Ports für mehrere SSH Tunnel am Server festlegen

Hallo,

für ein Projekt schaue ich gerade wie ich mehrere Windows-PCs mit je einer Webseite mittels SSH Reverse Tunnel auf einem Gateway (Ubuntu LTS) verfügbar mache.

Die Seiten selber haben keine sensiblen oder personenbezogenen Daten.
Es sind primär aktuelle Temperaturwerte die Jemand hin und wieder nachschaut.
Das Gateway selber ist nicht öffentlich erreichbar.

Die Webseiten kommen von Windows-PCs wo xampp mit PHP.
Diese PCs haben wechselnde IP-Adresse und sind meist hintern NATs.

Mittels PLink bauen diese PCs einen Tunnel auf.

LokalerPC1:80 -> SSH Tunnel -> gateway:3001 -> http://gatewayhostname:3001
LokalerPC2:80 -> SSH Tunnel -> gateway:3002 -> http://gatewayhostname:3002
LokalerPC3:80 -> SSH Tunnel -> gateway:3003 -> http://gatewayhostname:3003

PLink nutzt dafür Benutzer mit SSH Schlüsseln.
plink.EXE -N -R 3001:127.0.0.1:80

Jetzt kann es durch einen unbedachten Konfigurationsfehler passieren, dass PC2 sich nicht mit Port 3002 sondern mit Port 3001 verbindet. (An diesen PCs fummeln zu viele Leute rum).

Frage: Wie kann ich am Ubuntu-Gateway einem SSH-Benutzer einen bestimmten Port erlauben und alle andere Verbieten?
Benutzer Web3 darf nur Port 1003
Benutzer Web5 darf nur Port 1005

So dass die lokalen Ports am Windows-PC festgelegt werden und die Remote-Ports am Server.

Jemand eine Idee?

Stefan

Content-Key: 6466959888

Url: https://administrator.de/contentid/6466959888

Printed on: May 4, 2024 at 23:05 o'clock

Member: StefanKittel
StefanKittel Mar 22, 2023 updated at 19:45:56 (UTC)
Goto Top
Eine Idee von mir. Kann man aus Seiten des Servers den Befehl den PLink senden prüfen und die Verbindung trennen wenn dieser einem nicht gefällt. bashrc wird auf dem Server bei einerm Verbindung von PLink nicht ausgeführt. Vieleicht aber was anderes was ich noch nicht gefunden habe?

Update:
Ohne "-n" wird eine sichtbare session gestartet und bashrc ausgeführt.

Weiß Jemand wie ich in BashRC den Tunnel-befehl ausgeben/ermitteln kann?

Update:
Man kann über iptables die Verbindung unterbinden.
Dabei wird der Port aber trotzdem blockiert.

Update:
hmmm.... nix gefunden.
Ich könnte über einen Cron "lsof -i -P -n | grep LISTEN" aufrufen um zu schauen welcher User welchen Port geöffnet hat.
Wenn Jemand einen falsche Port öffnen trenne ich den User und wen das wiederholt passiert sperre ich ihn.
Ist aber irgendwie nicht "elegant".
Mitglied: 6247018886
6247018886 Mar 22, 2023, updated at Mar 23, 2023 at 08:35:10 (UTC)
Goto Top
Moin.
Würde ich statt mit SSH mit Wireguard machen. Da hat dann jeder Client seine fest zugewiesene IP und durch das Cryptokey-Routing auch nicht durch den User manipulierbar.

Cheers Briggs
Member: Tezzla
Tezzla Mar 23, 2023 at 06:34:56 (UTC)
Goto Top
Moin,

wenn du das in großem Stil machen möchtest: rport.io

Da kann man alle möglichen Ports remote zugänglich machen. Lohnt aber vermutlich erst ab ein paar Rechnern mehr. Läuft aber sehr zuverlässig.

VG