Angenommen, ich habe ein Konto erstellt, dessen Login-Shell eigentlich ein Skript ist, das keine interaktive Anmeldung zulässt und nur einen sehr begrenzten, spezifischen Befehlssatz ermöglicht, der remote ausgeführt wird.
Dennoch, ssh
ermöglicht es dem Benutzer dieses Kontos, Ports weiterzuleiten, was ein Loch ist
Nun, der Witz ist, dass ich wirklich möchte, dass das Konto eine bestimmte Port-Forwarding-Konfiguration einrichtet, wenn ssh
Sitzung ist eingerichtet. Es muss jedoch unmöglich sein, eine beliebige Port-Weiterleitung zu konfigurieren.
(Dies ist eine akzeptable Lösung, wenn die zulässige Portweiterleitungskonfiguration im Rahmen jeder Sitzung unbedingt festgelegt wird.)
ssh
port-forwarding
Kaz
quelle
quelle
Antworten:
Es stellt sich heraus, dass OpenSSH eine Funktion zur Einschränkung hat
-L
Stil öffnet sich auf der Serverseite. Die Funktion ist auf zwei Arten verfügbar.In der Serverkonfigurationsdatei befindet sich a
PermitOpen
Möglichkeit. Mit dieser Option können Hosts und Ports angegeben werden, für die Weiterleitungen eingerichtet werden können. Diese Option kann innerhalb von verwendet werdenMatch
blockieren, so dass er durch Benutzer, Gruppen oder Hostnamen oder IP-Adressmuster eingeschränkt werden kann.In einem (n
authorized_keys
Datei können Optionen mit einem bestimmten Schlüssel verknüpft werden. Da ist einpermitopen
Option, die ähnlich arbeitet wie die server-config.Anmerkungen / Einschränkungen:
Die Option
AllowTcpForwarding
Deaktiviert alle Weiterleitungen in beide Richtungen, wodurch verhindert wird, dass Überwachungsports auf dem Server eingerichtet werden und aktive Weiterleitungen aktiviert sind.Es gibt kein
PermitOpen
Zugangskontrolle für-R
Stilverbindungen. Das ist wahrscheinlich in Ordnung. Was es bedeutet, ist, dass die Benutzer verwenden könnenssh
verschiedene nicht privilegierte Ports zum Abhören auf dem Server öffnen. Wo diese Verbindungen auf der anderen Seite der SSH-Verbindung hergestellt werden, ist das Problem des Clients. Wenn wir die Weiterleitung im-L
Richtung hat der Benutzer keine Möglichkeit, diese zu verwenden-R
Ports (zumindest nicht durchssh
, wenn dieser Benutzer keine beliebige interaktive Sitzung erstellen kann).Es scheint keine Möglichkeit zu geben, eine leere Liste der zulässigen Öffnungen zu erstellen, um zu verhindern, dass Benutzer solche erstellen
-L
Stilverbindungen überhaupt. Eine Problemumgehung besteht jedoch in der Verwendung eines harmlosen, nicht vorhandenen oder unmöglichen Hostnamens, z. Konkretpermitopen=":1234"
macht den Trickquelle
-R
, das funktioniert für mich.Mit dem Argument "any" können Sie alle Einschränkungen aufheben und Weiterleitungsanfragen zulassen. Das Argument "none" kann verwendet werden, um alle Weiterleitungsanforderungen zu unterbinden. Standardmäßig sind alle Portweiterleitungsanforderungen zulässig.
quelle