
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 scp
oder 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 cat
durch fast jedes Programm ersetzen, verdammt, es cp somefile /dev/stdout
scheint 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 curl
gibt es zumindest Optionen wie --data @filename
und --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 wieseccomp
um 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?