Ich möchte SFTP verwenden können, um Dateien zu bearbeiten, für die Root-Berechtigungen erforderlich sind.
Ich verwende SSH-Schlüssel-basierte Authentifizierung - RSA-Schlüssel auf Smartcard.
Wenn das System sudo zum Ausführen von Befehlen auf Root-Ebene benötigt, wie kann ich das umgehen?
Kann ich eine Methode erstellen, um sudo nur für SFTP zu umgehen?
Gibt es eine Möglichkeit, die Sudo & Key-Authentifizierung beizubehalten?
Ich benutze Windows, um eine Verbindung zu Ubuntu herzustellen. Ich brauche das, um mit einem Mac zu arbeiten, der sich auch mit Ubuntu verbindet.
Ich verstehe, wie man SSH-Tunneling ausführt, um die Systemdienste zu verwalten. Derzeit verwende ich die Root-Benutzeranmeldung direkt, die Kennwortanmeldung ist jedoch deaktiviert. Ich habe nicht verstanden, wie man sudo und SFTP gleichzeitig benutzt. Es scheint eine bewährte Methode zu sein, sich als Nicht-Root-Benutzer anzumelden und dann sudo zu verwenden, da in den Protokollen aufgezeichnet wird, wer für jeden Befehl erweiterte Berechtigungen erhalten hat.
Sollte ich mich damit befassen, wenn ich die schlüsselbasierte Authentifizierung verwende, oder ist dies ein unbedeutender Unterschied in Bezug auf Sicherheit / Protokollierung? Es sieht so aus, als ob die Seriennummer des Benutzers in den Protokollen durch die schlüsselbasierte Authentifizierung erfasst wird, und der Root-Benutzer kann mehrere Schlüssel haben, um jeden Benutzer zu identifizieren. Dies scheint der gleiche Effekt zu sein, wie wenn ich sudo benutze. Liege ich falsch?
sudo
.Antworten:
SFTP ist ein Befehlszugriff auf Dateioperationen mit den Einschränkungen des von Ihnen verwendeten Kontos. Sie müssen ssh verwenden, um mehr Verwaltungsvorgänge durchzuführen, und sudo und SFTP nicht gleichzeitig verwenden. Wenn Sie mit SFTP uneingeschränkt auf die gesamte Festplatte zugreifen möchten, verwenden Sie das Root-Konto. Auf jeden Fall können Sie sich mit root auf sftp und ssh gleichzeitig anmelden, wobei Sie zwei verschiedene Sitzungen verwenden.
Die Sicherheitsschlüssel verbessern die Sicherheit und vereinfachen die Protokollierung, da keine Tastatureingaben erforderlich sind. Nur hilft beim Einloggen, man kann für jeden Kontobenutzer mehrere Passwörter haben und hatte den gleichen Effekt.
EDIT: Ich habe vergessen: Sie können ein anderes Konto mit dem gleichen Effekt wie root erstellen, wenn Sie die Benutzer-ID auf 0 setzen, aber keinen Sinn haben, und auf die gleiche Weise gefährlich sind. Könnte etwas Verschleierung geben, wenn jemand versucht, sich wie root anzumelden, aber davon abgesehen hatte er nicht viel Sinn.
quelle
Der Aufruf des Subsystems mit sudo hat bei mir funktioniert.
An einen Ubuntu-Host zum Beispiel:
quelle
sudo /usr/libexec/openssh/sftp-server
)Abgesehen von dem, was @MartinVonWittich in den obigen Kommentaren vorgeschlagen hat, können Sie nur für diese Aktivität ein dediziertes SSH-Schlüsselpaar einrichten und diese zur Root-Benutzerdatei hinzufügen, wobei der
/root/.ssh/authorized_keys
Gültigkeitsbereich auf einen einzigen Befehl beschränkt wird.Dies würde es einem anderen System mit dem entsprechenden Schlüssel für dieses Paar ermöglichen, SFTP in dieses System als Root einzuspielen. Sie haben immer noch eine Aufzeichnung dieser Verbindung in Ihren
syslog
und / odersecure.log
Dateien (vorausgesetzt, Ihre Distribution bietet diese Protokollierungsstufe).ANMERKUNG : Jeder Benutzer, der mit dieser Methode auf den Server zugreift, verfügt über einen Cartes-Blanche-Zugriff. Verwenden Sie ihn daher mit Bedacht. Lesen Sie weiter und kombinieren Sie diese Funktion mit Chroot- und Nur-Lese-Zugriff, um strengere Einschränkungen und einen gezielten Zugriff auf bestimmte Speicherorte als Root zu erstellen.
Chroot & Readonly
Die andere Technik, die Sie hier ausnutzen könnten, wäre, die SFTP-Verbindung so einzuschränken, dass sie auf der Grundlage des verwendeten SSH-Schlüssels als Root an bestimmte Speicherorte geleitet wird. Weitere Informationen finden Sie in meiner Antwort auf diese Fragen und Antworten zu U & L mit dem Titel " Kennwortloses Backup mit SFTP einschränken ".
Sie können auch
sftp-server
über die Schalter-R
und steuern-d
.quelle
sftp-server
macht es nicht sicherer, oder? Wenn ein Angreifer Zugriff auf dieses Konto erhält, kann er sich mithilfe von SFTP problemlos eine Root-Shell geben. Daher ist die Befehlsbeschränkung aus Sicherheitsgründen ziemlich nutzlos :)root
ist nur schwierig, SFTP-Zugriff in irgendeiner Form zu gewähren, insbesondere, wenn es nicht in der Chroot-Phase ist.Ein einfacher Ansatz, dem ich folgte, war, einfach sftp und die Dateien in einem Bühnenbereich
mkdir
abzulegen ( neues Verzeichnis, in dem Sie Berechtigungen auf dem Server haben) und dann ssh erneut, um die Dateien von dort mitsudo cp
oder zum Ziel zu verschiebensudo mv
.quelle
Ein ähnliches Problem bestand darin, dass ich vimdiff verwenden wollte, um Konfigurationsdateien auf einer Gruppe von meist ähnlichen Hosts mit cssh und sudo zu bearbeiten, und Sie möglicherweise in der Lage sind, meine Lösung an Ihren Workflow anzupassen.
Mit sudoedit (Teil von sudo) können Sie jeden Editor als normalen Benutzer zum Bearbeiten einer Datei verwenden, für die Sie keine Schreibberechtigung haben, und Sie können den Editor mit einer Umgebungsvariablen angeben. sudoedit kopiert die Datei (en), ruft den Editor mit den Namen der Kopie (n) auf und wartet, bis der Editor beendet ist. Anschließend kopiert sudoedit die geänderte Kopie dorthin zurück, wo sie war. Also habe ich einen 'Editor' erstellt, der nicht bearbeitet, sondern die Datei nur zur späteren Verwendung notiert und wartet, sowie einen Wrapper um vimdiff, der diesen Marker verwendet.
Die erste Datei ist ~ / .bin / redit
Die Sekunde ist ~ / .bin / redit1
Mit cssh öffne ich eine Verbindung zu allen vier Hosts und verwende dann einen Befehl wie
EDITOR=~/.bin/redit sudoedit /etc/conf/file
und In einem anderen Fenster führen Sie~/.bin/redit1
die Änderungen aus, speichern und beenden Sie das Programm, wechseln Sie zurück zu cssh und drücken Sie die Eingabetaste, um die Änderungen zu bestätigen und beenden Sie sudoedit (es sei denn, ich bearbeite mehr als eine Datei. In diesem Fall wechselt redit zur nächsten Datei in der Liste und Sie führen redit1 erneut für die nächste Datei aus.)Da das, was Sie tun, weniger kompliziert ist, brauchen Sie redit1 nicht, da Sie nur mit einem Remote-Host arbeiten. Sie können Ihren SFTP-Editor einfach auf host verweisen: .var / redit / host oder gleichwertiges.
quelle
Ich verwende scp anstelle von (s) ftp und ändere die Shell
sudo su -
in WinSCP in Advanced \ SCP \ Shell, dies funktioniert jedoch nur mit dem scp-Protokoll.quelle
Für sftp: Wenn Sie über einen SSH-Shell-Sudo-Zugriff verfügen, können Sie Ihren Benutzernamen zur Root-Benutzergruppe in / etc / group hinzufügen und dieser Gruppe dann die Empfangsberechtigungen für die Ordner erteilen, auf die Sie zugreifen möchten.
quelle
root
Gruppe hinzugefügt. Ich verbinde mich über sftp, kann aber trotzdem keine Dateien von Orten wie '/ etc' und so weiter herunterladen. Ich bin nicht sicher, ob ich etwas falsch mache, aber ich vermute, dass diese Antwort nicht funktioniert.Sie können auf der Serverseite Folgendes in Ihre sshd_config-Datei einfügen:
Auf diese Weise erhält jeder, der über das NOPASSWD-Sudo-Recht verfügt, einen Root-SFTP-Zugriff.
quelle
Subsystem
Befehl? Unter Ubuntu 16.04 erhalte ich "Befehl nicht gefunden"Das Hinzufügen dieser Zeile unter / etc / ssh / sshd_config war eine Korrektur für mich und kommentierte die vorhandene Subsystemzeile
Subsystem sftp sudo -n true && sudo -n /usr/lib/openssh/sftp-server || /usr/lib/openssh/sftp-server
dann
sudo systemctl sshd restart
quelle