SSH-Tunnel für eingeschränkte Benutzer mit PuTTY und ohne Shell

SSH-Tunnel für eingeschränkte Benutzer mit PuTTY und ohne Shell

also habe ich schon seit einiger Zeit SSH-Tunnel verwendet, um den Zugriff auf interne Sites oder Teile öffentlicher Sites einzuschränken, und da nur Administratoren überhaupt SSH-Zugriff hatten, habe ich Standardbenutzerkonten ohne Rootberechtigung/Sudo verwendet. Nun, da ich expandiere und versuche, Studenten meiner örtlichen Universitäten einzubeziehen, um ihre Projekte zu erweitern, müssen sie anfangen, auf einige dieser internen Seiten zuzugreifen.

Der Proxyserver ist eine CentOS 6.4-Box mit aktiviertem SELinux und wird außer dem Proxy keine anderen Dienste ausführen. Ich möchte irgendwann ein vollständiges VPN einrichten, aber in diesem Fall geht es lediglich darum, den Zugriff auf bestimmte Maschinen mit einer IP-Whitelist zu ermöglichen, anstatt vollständigen internen Netzwerkzugriff zu gewähren.

Ich habe mir alle Methoden zum Einrichten eines SOCKS-Proxys mit Benutzerkonten mit Angaben wie /bin/false usw. angesehen, aber entweder

A) Sie gehen davon aus, dass nur ein einziger Port oder Host weitergeleitet wird (wobei ich in diesem Fall eine Reihe von VPS-Instanzen habe, die sich bei Bedarf in den Netzwerkkonfigurationen ändern), oder

B) dass ein normaler SSH-Client verwendet wird und nicht etwas wie PuTTY (so gerne ich alle Studenten zwingen würde, eine VM zu verwenden oder Linux direkt zu installieren, ist das keine wirkliche Option, da die Schule PuTTY auf ihrer technischen Hardware für die Studenten verwendet).

Folgendes habe ich bisher herausgefunden: Wenn ein normaler SSH-Client verwendet wird, kann ich die Benutzer-Shell auf /bin/false setzen und der Benutzer kann beim Einrichten des SOCKS-Proxys den Befehl -N angeben, aber für PuTTY-Benutzer scheint dies leider nicht zu funktionieren (zumindest habe ich es nicht zum Laufen gebracht).

Wenn PuTTY einen Tunnel über die standardmäßigen Tunneloptionen öffnet, muss es eine Shell öffnen, die die Verbindung beim Anmelden sofort trennt, da der Benutzer eine /bin/false-Shell hat. Wenn ich in den SSH-Einstellungen das Argument „keine Shell oder kein Befehl“ angebe, scheinen die Proxy-Optionen nicht eingerichtet zu werden. Wenn ich versuche, den Proxy in den SSH-Optionen für Remote-Befehle einzurichten, wird er trotzdem nicht ausgeführt, es sei denn, ich lasse in den Optionen eine Shell oder andere Befehle zu.

Verwandte Fragen, die ich gefunden habe, die aber nicht ganz passen:

Erstellen Sie SOCKS-Tunnel mit PuTTY und nologin (das hier würde technisch funktionieren, aber die Shell ist einfach ein Sleep-Befehl, der sehr lange läuft, und ich mache mir Sorgen, dass er verlassen wird. Ich hätte lieber eine echte Noshell als eine Shell, die aus Sicherheitsgründen einfach hängen bleibt.)

https://askubuntu.com/questions/48129/how-to-create-a-restricted-ssh-user-for-port-forwarding (Dies funktioniert nicht, da der Benutzer hierfür eine echte SSH-Installation verwenden müsste und Programme wie PuTTY nicht funktionieren.) Außerdem müssen sie auf Webseiten zugreifen können, obwohl ich davon ausgehe, dass ich für das Konto einfach „PermitTunnel“ angeben könnte, anstatt nur einen bestimmten Port zuzulassen.

„noshell“ für SSH-Proxy-Benutzer (Dies funktioniert nicht für PuTTY aus den oben genannten Gründen, da für PuTTY Befehle zum Einrichten des SOCKS-Proxys aktiviert sein müssen.)

Irgendwelche Vorschläge? Es könnte gut sein, dass ich etwas übersehe, aber ich bin nicht sicher.

-Jim

Antwort1

Ich habe eine Lösung gefunden (unter einem Beitrag hier ohne Verwendung von Tags wie „nologin“ oder „noShell“, sondern mit einem kinderleichten Trick für Windows-Benutzer, den ich aber ohne Shell zum Laufen gebracht habe).

Ich habe mithilfe der Antwort aus diesem Beitrag ein Batch-Skript erstellt, das eine Standardinstallation von PuTTY ausführen und einen Tunnel einrichten kann, ohne Befehle auszuführen, die zu einer Trennung der Shell führen würden:

Kinderleichter SSH-Tunnel für meine Windows-Benutzer

"C:\Program Files (x86)\PuTTY\plink.exe" -v -N -D localhost:8080 proxy@remote_host

Da Windows-Benutzer mit PuTTY nun auf den Tunnel zugreifen können, kann ich weiterhin die Kontoshell als /bin/false verwenden.

Hier gepostet für alle, die sich in einer ähnlichen Situation befinden könnten, und um den Thread zu lösen. Wenn es noch andere Lösungen gibt, würde ich sie gerne hören!

Jetzt muss ich nur noch versuchen, dies mit meinem auf SSH-Push basierenden Zwei-Faktor-System zum Laufen zu bringen, das ich auf allen meinen Systemen implementiere, aber daran arbeite ich, nachdem alles andere funktioniert.

-Jim

Antwort2

Habe gerade gesehen, dass PuTTY die folgende Option hat und es könnte sein, wonach Sie suchen: Verbindung->SSH->Keine Shell oder keinen Befehl starten

Wenn aktiviert, wird die Verbindung hergestellt, es wird keine Anzeige mehr auf der Konsole angezeigt, aber sie bleibt bestehen und der Tunnel funktioniert einwandfrei. Hoffe, das hilft.

verwandte Informationen