Chrooted SFTP-Benutzer Schreibberechtigungen

10

Ich habe ein Setup mit nur SFTP-Benutzern:

Match Group sftponly
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

Ich erhalte die folgende Nachricht in meinem Secure.log:

fatal: bad ownership or modes for chroot directory

Mit dem Schlüsselwort match sind einige Sicherheitsvorkehrungen verbunden ... Die Verzeichnisse müssen im Besitz von root sein, und die Verzeichnisse müssen chmod 755 (drwxr-xr-x) sein. Daher ist es für einen Benutzer unmöglich, Schreibberechtigungen für die Ordner zu haben, wenn diese nur in das Benutzerstammverzeichnis geschrieben und aufgrund der Sicherheit von ssh für Gruppen nicht beschreibbar sind.

Kennt jemand eine gute Arbeit?

Adionditsak
quelle
Besitzen die chrooted-Benutzer ihre ChrootDirectory? Können sie darauf zugreifen?
John WH Smith

Antworten:

2

Ich habe die gleichen Einstellungen auf unserem Server. Wir verwenden die gleiche Konfiguration von SSHD. Benutzer Home - Verzeichnisse sind im Besitz von root und in ihnen gibt es Ordner documentsund public_htmlvon den jeweiligen Benutzern gehören. Benutzer melden sich dann mit SFTP an und schreiben in diese Ordner (nicht direkt in die Startseite). Da SSH für sie nicht erlaubt ist, funktioniert es perfekt. Sie können anpassen, welche Verzeichnisse für neue Benutzer in / etc / skel / erstellt werden (zumindest in openSUSE bin ich mit anderen Distributionen nicht so vertraut).

Eine andere Möglichkeit wäre ACL ( openSUSE-Dokumentation ) - sie kann Schreibberechtigungen für den jeweiligen Benutzer für sein Home-Verzeichnis hinzufügen.

Tilia
quelle
1
Unter Debian Jessie (8.10) funktioniert das Festlegen einer ACL für das Haus des Benutzers nicht. Wenn der Benutzer versucht, sich mit SFTP anzumelden, erhält erpacket_write_wait: Connection to 10.0.0.42 port 22: Broken pipe
Drew Chapin
7

Wir haben kürzlich eine Problemumgehung gefunden, die folgendermaßen aussieht:

/ etc / ssh / sshd_config:

...

Subsystem sftp internal-sftp

Match Group sftponly
    ChrootDirectory /home
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand internal-sftp

Verzeichnisberechtigungen:

root@server:~ # chown root:root /home
root@server:~ # chmod 111 /home
root@server:~ # chmod 700 /home/*

Erfüllt jetzt /homedie Anforderungen für ChrootDirectoryeingeschränkte Benutzer und kann von diesen nicht aufgelistet werden. Benutzer können sich jedoch sftponlynicht anmelden, wenn ihre Home-Verzeichnisse wie gewohnt eingerichtet sind ( /home/$LOGNAME): In der Chroot-Umgebung befinden sich ihre Home-Verzeichnisse nicht innerhalb, /homesondern direkt unter root ( /).

Problemumgehung 1

Stellen Sie die Häuser eingeschränkter Benutzer so ein, wie sie unter chroot angezeigt werden:

root@server:~ # usermod -d /username username

Vorbehalt 1

Wenn einer der uneingeschränkten Benutzer oder ein Verwaltungsskript die Tilde-Erweiterung von bash verwendet, wie ~usernamesie bis /usernamejetzt erweitert wird, ist dies nicht gemeint.

Auch der Administrator, der sftponlyBenutzer erstellt , muss daran denken, nicht standardmäßige Startseite zu verwenden. Mit einem Skript lösbar. Was der Administrator beachten muss, um zu verwenden.

Problemumgehung 2

Dies ist eine Alternative zu der vorherigen, die wir letztendlich verwendet haben:

root@server:~ # ln -s . /home/home

Das heißt, Sie erstellen einen Symlink /homezu Ihrem eigenen Verzeichnisnamen. Zeigt nun unter chroot /home/usernameauf dasselbe Verzeichnis wie ohne chroot. Für eingeschränkte Benutzer, die mit sftp angemeldet sind, wird dies als angezeigt /username. Dieses Verzeichnis kann auf seinen Besitzer (eingeschränkter Benutzer) geschrieben werden. Eingeschränkte Benutzer können die übergeordneten oder privaten Verzeichnisse der Geschwister nicht nach Namen auflisten.

Das einzige Besondere an einem sftponlyBenutzer ist seine Teilnahme an der sftponlyGruppe. Wir fanden es einfacher, damit umzugehen als mit der Problemumgehung 1.

Vorbehalte 2

  1. Sie können keinen Benutzer mit dem Namen 'home' mit einem Home-Verzeichnis haben /home/home
  2. Sie müssen vorsichtig mit Skripten sein, die die /homeHierarchie durchlaufen und Symlinks folgen.
artm
quelle
Hallo artm oder andere Leser, ich weiß, dass dies ein alter Beitrag ist, aber könnten Sie mir bitte helfen, Workaround 2 zu verstehen? Ich habe einen Benutzer (ftpuser), der in sein Home-Verzeichnis (/ home / ftpuser /) gesperrt werden muss. Dies kann ich erreichen, aber / home / ftpuser muss natürlich 755 haben. Ich brauche den ftpuser, um Dateien und Ordner in ihrem Home-Verzeichnis erstellen zu können. Welchen Symlink muss ich erstellen und welchen Wert sollte mein ChrootDirectory haben?
Krass
4

Sie müssen eine Struktur im Home-Verzeichnis des Benutzers erstellen, z. B. In- und Out-Verzeichnisse. Diese Verzeichnisse sollten dem Benutzer gehören und dort Dateien ablegen und abrufen können.

YoMismo
quelle
0

Sie sollten die folgende Verzeichnisstruktur erstellen:

/Heimanwender

/ home / user / home / user <- das echte Verzeichnis, auf das der Benutzer Zugriff hat

Optional:

/home/user/.ssh/authorized_keys <- Wenn Sie sich mit einem öffentlichen Schlüssel authentifizieren möchten

Fernando Ulisses dos Santos
quelle
0

In Bezug auf den Abschnitt 'Verzeichnisberechtigungen' in der Antwort von @artm (die ich gerade getestet habe). Ich fand:

root@server:~ # chmod 111 /home <- Does not work

Es erlaubt nicht, dass die SFTP-Verbindung unter Ubuntu funktioniert, wobei nur Berechtigungen für alles ausgeführt werden, z. B. 111.

Ich habe das gefunden:

root@server:~ # chmod 555 /home

Funktioniert mit der Verbindung zu sftp mit den Lese- und Ausführungsberechtigungen, z. B. 555. Ich bin mir nicht sicher, ob Debian und andere Varianten unterschiedlich sind, aber das funktioniert bei meinen Ubuntu-Installationen.

willm
quelle
0

Wenn Sie einen Benutzer erstellen, müssen Sie den Besitz mit chownjedem Verzeichnis für jeden Benutzer festlegen .

Zum Beispiel:

sudo chown usertest:groupsftp /home/rootsftp/usertest
Miguel Dueñas
quelle