Wie leite ich einen SSH-Port per Benutzernamen auf einen anderen Port um?

Wie leite ich einen SSH-Port per Benutzernamen auf einen anderen Port um?

Ich habe sshd: Listen 2222auf einem Server und möchte Folgendes tun: ssh -p 2222 userA@ipDer Server findet userAund leitet diese Verbindung dann an 6122den Port dieses Servers um. Ich möchte dies jedoch auf meinem lokalen Computer nicht ändern, da es dort Hunderte von Benutzern gibt und alle diese Benutzer ihre eigenen Docker-Container haben. Für den Benutzer userAführe ich beispielsweise sshdseinen Container aus und lege 22den Port dem 6122Port des Hosts frei. Daher möchte ich iptablesoder andere Möglichkeiten zur Weiterleitung Host:2222an verwenden Container:6122.

Ich habe Befehle wie die folgenden ausprobiert:

iptables -t nat -A userA_rules -p tcp --dport 2222 -j REDIRECT --to-port 6122
iptables -A OUTPUT -m owner --uid-owner userA -j userA_rules

Aber es funktioniert nicht. Ich bin neu bei iptables, also bin ich mir nicht sicher, wo der Fehler liegt. Ich habe auch versucht, es so zu ändern, /etc/ssh/sshd_configdass es Block verwendet Match User userA, aber auch das hat nicht geklappt. Ich bin für alle Vorschläge dankbar.

Antwort1

Das iptables-Eigentümermodul funktioniert nur mit lokal generierten Paketen auf dem Computer, auf dem die Pakete generiert werden, nicht auf einem Remote-Server.

https://manpages.ubuntu.com/manpages/focal/en/man8/iptables-extensions.8.html

owner
   This  module  attempts to match various characteristics of the packet creator, for locally
   generated packets. This match  is  only  valid  in  the  OUTPUT  and  POSTROUTING  chains.
   Forwarded packets do not have any socket associated with them. Packets from kernel threads
   do have a socket, but usually no owner.

Aber diese UID/GID ist außerhalb des Servers nicht verfügbar.

Iptables arbeitet mit TCP/IP-Netzwerkpaketen. Pakete haben eine Ziel-IP, einen Zielport, eine Quell-IP und einen Quellport, aber keine Eigenschaft, die besagt: Sie wurden vom Benutzer freshzyoder von UID #123 auf der Quellmaschine generiert. Daher verfügt iptables auf dem Remote-Server einfach nicht über die Informationen, um das zu tun, was Sie möchten: eine Regel für einen Benutzer von einer Remote-Maschine aus zu erstellen.

verwandte Informationen