Archive for April 6th, 2011

SFTP in chroot()-Umgebung made easy

Mittwoch, April 6th, 2011

Uploader möchte man im Allgemeinen auf dem eigenen Server in Ihre Home-Directories eingesperrt wissen. Die haben außerhalb einfach nichts verloren. Das geht seit Jahren problemlos mit dem ProFTPd mit der simplen Direktive:

DefaultRoot ~

FTP ist mittlerweile aber ziemlich überholt. Ich selbst benutze nur noch SFTP oder Rsync-over-SSH. Einfach weil die Übertragung verschlüsselt stattfindet und eine Publi-Private-Key Authentifizierung stattfindet und so keine Passwörter gespeichert oder gar im Klartext übertragen werden müssen.

Allerdings bricht man sich die Beine, sofern man jemanden in ein Verzeichnis einsperren möchte und derjenige aber ein etwas (zurecht) ausgeprägeteres Sicherheitsbedürfnis hat und eben eine verschlüsselte Verbindung nutzen möchte.

Beim World-Update meines Gentoo-Servers fiel mir das USE-Flag „sftp“ beim Proftpd auf. Also gleich mal das Flag aktiviert und proftpd neu kompiliert. Nun ist auch die sichere Verbindung mit chroot() wirklich einfach geworden. So funktionierts:

SFTPEngine      On
SFTPLog /var/log/proftpd_sftp.log
SFTPHostKey /etc/ssh/ssh_host_rsa_key
SFTPHostKey /etc/ssh/ssh_host_dsa_key

# Configure the file used for comparing authorized public keys of users.
SFTPAuthorizedUserKeys file:~/.ssh/sftp_authorized_keys

# Enable compression
SFTPCompression delayed

# Allow the same number of authentication attempts as OpenSSH.
#
# It is recommended that you explicitly configure MaxLoginAttempts
# for your SSH2/SFTP instance to be higher than the normal
# MaxLoginAttempts value for FTP, as there are more ways to authenticate
# using SSH2.
MaxLoginAttempts 6

Die Public-Key muss allerdings im RFC4716 Format vorliegen. Konvertieren kann man so:

ssh-keygen -e -f ~/.ssh/id_rsa.pub

Weitere Infos gibt es direkt beim Autor des Moduls