Ich muss einschränken, welche Ports ssh -R
von einem Benutzer per Fernzugriff weitergeleitet werden können.
Ich kenne die permitopen
Option auf authorized_keys, aber wie auf der Manpage steht, beschränkt sie nur die lokale ssh -L
Portweiterleitung
Wie hier besprochen , würde ein Benutzer dasselbe mit netcat
oder ähnlich bekommen, aber in diesem Fall hat der Benutzer keinen Shell-Zugriff
Ich habe auch diesen Thread gefunden , in dem es um die Verwendung von selinux oder geht LD_PRELOAD
, aber ich habe selinux noch nie konfiguriert und kann keine Informationen dazu finden, wie das geht LD_PRELOAD
.
vielleicht hat jemand einen patch für openssh gemacht, um das umzusetzen?
EDIT: Ich habe diesen Fehlerbericht gefunden, also denke ich, dass er noch nicht implementiert ist
quelle
Antworten:
Dies wurde in OpenSSH 7.8p1 implementiert, das am 24.08.2018 veröffentlicht wurde. Zitat aus den Release Notes:
quelle
no-port-forwarding
Sie können eine Option verwenden, die die Weiterleitung aller Ports verhindert. Vorhanden mindestens ab OpenSSH 4.3p2 (CentOS 5.3 - älteste Maschine, auf die ich Zugriff habe). Stellen Sie es an die gleiche Stelle, an die Sie es gestellt hättenpermitopen
.quelle
Es ist nicht möglich, dies mit ssh zu begrenzen. Vielleicht könnten dazu Selinux oder Iptables verwendet werden. Es gibt jedoch eine alternative Strategie, die möglicherweise Ihren Anforderungen entspricht oder nicht. Verwenden Sie die Bindung an UNIX-Sockets. Dies sollte ab openssh Version 6.8 verfügbar sein.
Wenn Sie Sockets verwenden, steht Ihnen die Dateisystem-ACL zur Verfügung (auch wenn dies möglicherweise nix-abhängig ist), mit der Sie verhindern können, dass ein Benutzer sich an einen anderen Socket bindet. Dies verhindert jedoch in keiner Weise das Binden an Ports. Abhängig von Ihrem Anwendungsfall ist dies möglicherweise nicht hilfreich, aber Ports spielen möglicherweise keine Rolle, wenn Sie konsequent nur Sockets verwenden können.
Bei UNIX-Sockets kann die Verarbeitung von Dangling-Socket-Dateien problematisch sein, da Reverse Publisher versuchen, die Verbindung wiederherzustellen. Ich habe eine andere Frage (und Antwort) zu diesem Problem. Kurz gesagt, möchten Sie wahrscheinlich auch Folgendes verwenden
StreamLocalBindUnlink yes
:Wie bereinige ich den SSH-Reverse-Tunnel-Socket nach dem Schließen der Verbindung?
quelle
Duplizieren: /superuser/516417/how-to-restrict-ssh-port-forwarding-without-denying-it
Sieht aus, als könnten Sie Folgendes verwenden?
Bearbeiten: Fügen Sie in der Serverkonfiguration Folgendes hinzu
quelle