Wie kann ich SSH auf einen Linux-Server zulassen, aber keine Dateiübertragung von einem?

Wie kann ich SSH auf einen Linux-Server zulassen, aber keine Dateiübertragung von einem?

Ich habe einen Linux-Server (Ubuntu 16.04), auf dem ich einige Simulationen ausführe. Ich möchte einem Mitarbeiter Zugriff auf diesen Server gewähren, damit er seinen Code testen kann (er würde remote von seinem persönlichen Computer darauf zugreifen), ihm aber nicht erlauben, Dateien vom Server auf sein System herunterzuladen.

Die Dateien sind ziemlich groß (mehrere GB), daher mache ich mir keine Sorgen, wenn er den gesamten Dateiinhalt manuell in seinen Computer kopiert und einfügt.

Wie erlaube ich ihm also den SSH-Zugriff, verbiete ihm jedoch den SCP/WinSCP-Zugriff?

Antwort1

Ich bin mir nicht sicher, ob Sie das tun können, wenn sie die Daten wirklich wegschieben möchten. Sie können möglicherweise die Ausführung von scpoder verhindern sftp, aber es bleiben immer noch viele andere Möglichkeiten zum Übertragen von Dateien.

Zunächst einmal ist das wirklich einfache Dateiübertragungsprotokoll folgendes:

ssh user@hostname 'cat /some/remote/file' > /some/local/path

Und Sie können es catdurch fast jedes Programm ersetzen, verdammt, es cp somefile /dev/stdoutscheint sogar zu funktionieren.

In den Kommentaren gab es Vorschläge, Sitzungen nach einer bestimmten Zeit oder nach einer bestimmten übertragenen Datenmenge zu trennen. Das scheint oberflächlich zu funktionieren, wenn Sie auch die Anzahl der Verbindungen begrenzen, die der Benutzer herstellen kann. Wenn Sie 10 Verbindungen pro Tag zulassen, mit einem Limit von 1 MB/Verbindung, würden Sie nur 10 MB übertragen können. Vielleicht könnte so etwas funktionieren, wenn die normale beabsichtigte Verwendung viel weniger Datenübertragung erfordert als das unerwünschte Szenario.

Aber was, wenn sie die Datei einfach woanders hinschicken? Es sollte einfach sein, irgendwo anders einen SSH/FTP/was-auch-immer-Server einzurichten und die Datei darüber zu schicken. Oder über HTTP(S), da curlgibt es zumindest Optionen wie --data @filenameund --upload-file, und die Einrichtung der Serverseite sollte nicht schwer sein. Wenn Sie die bereits vorhandenen Tools entfernen, was ist, wenn das Programm, das sie auf dem System ausführen, die Daten wegschickt, während/anstatt sie zu verarbeiten?


Sie müssten mithilfe einer Art Sandbox die Möglichkeiten des Programms, das auf die Daten zugreift, einschränken.

Sorgen Sie dafür, dass der Code in einer virtuellen Maschine ausgeführt wird, die keinen Zugriff auf die Außenwelt hat, abgesehen von einer Schnittstelle zum Hochladen des Codes und Herunterladen der Ergebnisse, mit entsprechenden Kontrollen für das, was als gültiger Upload und gültiges Ergebnis akzeptiert wird. Oder verwenden Sie etwas wieseccompum die Möglichkeiten des Codes einzuschränken.

Antwort2

Sie können /etc/ssh/sshd_config wie folgt bearbeiten

ForceCommand           /bin/sh
PermitOpen             0.0.0.0
AllowTcpForwarding     no
PermitTunnel           no
# Subsystem sftp       /usr/lib/openssh/sftp-server
PermitUserEnvironment  no

und entfernen Sie scp vom Server und entfernen Sie auch den Sudo-Zugriff auf sein Konto. Sie können scp bei Bedarf wieder hinzufügen.

mit freundlicher Genehmigung von Brad und Mikes Antworten vonhttps://serverfault.com/questions/28858/ist es möglich, SCP zu verhindern, während SSH-Zugriff noch möglich ist?

verwandte Informationen