Heutzutage noch das veraltete File Transfer Protokoll für Dateiübertragungen von oder zu einem Server zu benutzen ist ungefähr gleichzusetzen mit dem Verwenden von Telnet zur Administration von Remoteservern. Es gibt längst die Möglichkeit Dateiübertragungen über das verschlüsselte SSH-Protokoll abzuwickeln, und doch bekommt man bei vielen großen Webhostern lediglich einen FTP-Zugang bereitgestellt.
Dabei bräuchte man eigentlich keine zusätzliche FTP-Serversoftware mehr einzusetzen, da SSH mit SFTP ein Dateiübertragungsprotokoll integriert hat und man so zwei Fliegen mit einer Klappe schlägt. In der SSH-Konfiguration lassen sich auch ohne großen Aufwand Benutzer oder Benutzergruppen in ihren Homeverzeichnissen einsperren:
Match group customers
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
PasswordAuthentication yes
Dieser Block muss an das Ende der SSH-Konfigurationsdatei gesetzt werden und sorgt dafür, dass alle UNIX-Benutzer auf dem System, die sich in der Gruppe customers
befinden, automatisch in ihrem Homeverzeichnis (%h
) eingesperrt werden. Wenn in der globalen SSH-Konfiguration die Passwortauthentifizierung deaktiviert ist, weil Administratoren sich via Public-Key-Authentication anmelden, so muss natürlich noch die Passwortauthentifizierung für diese Gruppe explizit erlaubt werden. Dann sollte man noch sicherstellen, dass die betreffenden Benutzer auf dem System keine gültige Shell besitzen, so dass sie sich nicht via SSH auf der Kommandozeile einloggen können:
sudo usermod --shell /usr/sbin/nologin username
Zuletzt sollte man noch sicherstellen, dass das Homeverzeichnis des betreffenden Benutzers und alle übergeordneten Verzeichnisse root:root
oder root:username
gehören und der Benutzer keine Schreibrechte auf die übergeordneten Verzeichnisse hat. Das ist eine Sicherheitsmaßnahme um zu verhindern, dass der Benutzer aus dem chroot-Gefängnis ausbrechen kann. Bei Problemen ist ein tail -f
auf die Logdatei /var/log/auth.log
möglicherweise hilfreich.