In meinem Projekt muss ich sftp für einige Benutzer deaktivieren, diese Benutzer müssen jedoch weiterhin eine Verbindung über ssh herstellen. Weiß jemand, wie man das umsetzt?
Ich habe Vorschläge zur Änderung der Datei unter gesehen /etc/ssh/sshd_config
, bin mir aber nicht sicher, was ich ändern soll.
owner
für den ausgehenden Zugriff. Dies setzt voraus, dass Sie von einem Red-Team einem Pen-Test unterzogen werden. Wenn jeder, der auf Ihr System zugreift, immer die Regeln befolgt und niemals Vorsatz hat, wäre mein Ansatz hartnäckig und übermäßig komplex.Antworten:
Im Allgemeinen ist dies aus Gründen, die andere aufgelistet haben, eine schlechte Sicherheitspraxis. Ich denke jedoch, der Sinn Ihrer Aufgabe ist es, Ihnen beizubringen, dass Sie bedingte Konfigurationsabschnitte haben können, die auf verschiedenen Kriterien basieren.
Die Möglichkeit dazu besteht in der Verwendung eines
Match
bedingten Blocks *.Siehe
sshd_config(5)
unter demMatch
Abschnitt für weitere Informationen und passende aufGroup
.* Es gibt mehr als einen Weg, dies zu tun.
quelle
Das ergibt keinen Sinn, es ist Sicherheit durch nutzlose Dunkelheit. Jeder Benutzer, der SSH kann, kann alle Dateien, die er lesen kann, über die SSH-Sitzung übertragen. Sie können auch schreiben, wenn Sie dazu berechtigt sind.
Sie können beispielsweise / etc / passwd über ssh mit der folgenden Methode herunterladen (keine scp / sftp-Sitzung erforderlich): ssh [email protected] "cat / etc / passwd"> passwdcopy
Wenn Sie es über SSH auf Ihrem Bildschirm sehen können, können Sie es einfach als Datei kopieren.
Dies ist nur dann sinnvoll, wenn Sie eine benutzerdefinierte eingeschränkte Shell haben, die eine Sicherheitsrichtlinie erzwingt.
Das Gegenteil davon ist jedoch sinnvoll (Deaktivieren der ssh-Shell, aber Deaktivieren von scp / sftp), da Sie keine willkürlichen Befehle über sftp / scp ausführen können, die Sie über eine ssh-Shell ausführen können.
PS: Ich gehe davon aus, dass die SSH-Shell, die Sie gewähren, eine Standard-Shell ist, die eine beliebige Ausführung ermöglicht. Wenn dies nicht der Fall ist , lesen Sie Folgendes : So deaktivieren Sie das SFTP-Subsystem für einen bestimmten Benutzer oder eine bestimmte Gruppe? und werfen Sie einen Blick auf die Subsystem-Konfigurationsoption von sshd_config.
quelle
Ich bevorzuge es, dafür eine Gruppe zu verwenden.
Dies ist in Kombination mit Benutzern mit eingeschränkten Shells nützlich. Manchmal erteile ich einem Client ssh-Zugriff, damit er auf einen SQL-Dump seiner Datenbank zugreifen kann, indem er seine Shell auf ein Skript setzt, das seine Daten speichert. Es scheint auch eine kluge Idee zu sein, sie von scp abzuschneiden. Sie haben keinen Zugriff auf die Ausführung
cat
, um eine Datei über ssh zu übertragen.quelle
Directive 'Subsystem' is not allowed within a Match block
Es ist möglich, SFTP global zu aktivieren und SFTP nur für einige Benutzer zu deaktivieren.
Dies funktioniert nicht, wenn Ihr Benutzer eine reguläre Shell-Eingabeaufforderung erhalten soll. Es macht auch keinen Sinn, da Sie die meisten Dinge umgehen könnten, wenn Sie Shell-Zugriff haben. Dies funktioniert nur, wenn Sie nur Zugriff auf ein bestimmtes Programm gewähren möchten.
Ich persönlich benötige dies, weil ich über SSH Zugriff auf einige Git-Repositorys gewähren möchte und ich nicht benötigte Systeme gerne deaktiviere. In diesem Fall wird SFTP nicht benötigt.
Passend
Um eine Gruppe von Benutzern abzugleichen, können Sie SSH mit dem
Match
Schlüsselwort konfigurieren . Aus demsshd_config(5)
Handbuch:Einige Beispiele:
Match User eva
Entspricht dem Benutzer "eva"Match User stephen,maria
Entspricht den Benutzern "stephen" und "maria"Match Group wheel,adams,simpsons
Entspricht den Gruppen "Wheel", "Adams", "Simpsons"Wenn Sie weitere Informationen wünschen, enthält das
sshd_config(5)
Handbuch zahlreiche Informationen .Befehl erzwungen
Normalerweise erhalten Sie die Anmeldeshell des Benutzers, wenn Sie eine Verbindung über SSH herstellen. SSH kann jedoch so konfiguriert werden, dass ein bestimmter Befehl erzwungen wird. Der Befehl wird für jede SSH-Verbindung, einschließlich SFTP, erzwungen, sodass Sie möglicherweise die Option haben, den gewünschten Befehl zu erzwingen.
Der zu erzwingende Befehl kann mit dem
ForceCommand
Schlüsselwort konfiguriert werden . Aus demsshd_config(5)
Handbuch:So können Sie den eingeschränkten Befehl erzwingen, den Sie verwenden möchten
ForceCommand <your command>
. Beispielsweise:Beispiel
In meinem Fall, in dem ich Git-Zugriff gewähren möchte, muss der Benutzer nur Zugriff darauf haben
git-shell
. In diesem Abschnitt wird SFTP für meine Git-Benutzer zusammen mit einigen Sicherheitsoptionen deaktiviert:quelle
Getestet und lauffähig unter CentOS 6.6. Beachten Sie, dass Subsystem mit Match mindestens auf neueren CentOS-Versionen nicht zulässig ist. Die Manpage für sshd_config listet die eingeschränkten Schlüsselwörter auf, die mit der Übereinstimmungsbedingung zulässig sind.
quelle
Sie können scponly anschauen , um das Gegenteil zu tun. Erlauben Sie nur scp / sftp, aber keinen Shell-Zugriff.
Ich stimme @ Nathan oben zu, das macht nicht viel Sinn. Wenn Sie fertig sind, versuchen Sie, Ihre / etc / ssh / sshd_config-Datei zu bearbeiten und die folgende Zeile zu entfernen / auskommentieren:
Subsystem sftp / usr / libexec / openssh / sftp-server
quelle
Gib kein Home-Verzeichnis für den Benutzer an
Ändern Sie das Subsystem sftp / usr / libexec / openssh / sftp-server in der Datei / etc / ssh / sshd_config in das Subsystem sftp / dev / null / usr / libexec / openssh / sftp-server
Starten Sie dann das ssh neu
es funktioniert bei mir, debian.
quelle
In der
~/authorized_key
Konfiguration den Benutzerschlüssel wie folgt:quelle