Hier eine kleine Anleitung einen SFTP Server mit Proftpd einzurichten. Da es um die reine Funktionsweise geht, habe ich die Konfiguration und die Erklärung auf das nötigste gestrippt.
/etc/proftpd.conf
User nobody
Group nobodyLogFormat default “%h %l %u %t \”%r\” %s %b”
LogFormat auth “%v [%P] %h %t \”%r\” %s”LoadModule mod_sftp.c
SFTPEngine on
SFTPLog /var/log/proftpd/sftp.log
TransferLog /var/log/proftpd/sftp-xferlogPort 40448
SFTPHostKey /etc/ssh/ssh_host_rsa_key
SFTPHostKey /etc/ssh/ssh_host_dsa_keySFTPAuthMethods publickey
SFTPAuthorizedUserKeys file:/etc/proftpd/keys/%uDefaultRoot ~
Die Authentifizierung ist damit auf Publickey beschränkt. Proftpd akzeptiert RFC4716 Public Keys (ssh.com). Sollte das Key-Set im OpenSSH Format vorliegen, muss der Public Key konvertiert werden:
ssh-keygen -e -f /pfad/zum/pubkey.pub
Die Ausgabe aus obigem Kommando wird dann nach /etc/proftpd/keys/username gespeichtert. Username steht hier für den Benutzernamen mit dem man sich verbinden möchte (Siehe auch %u in SFTPAuthorizedUserKeys). Es ist auch darauf zu achten, dass der Benutzer im System angelegt ist. Es ist kein Problem dem Benutzer /bin/false o.ä. als Shell zuzuweisen.
Das war auch schon alles, natürlich sollten die Dateiberechtigungen der Pubkeys entsprechend sicher konfiguriert werden. In dieser Konfiguration ist der verbundene Benutzer in einem Jail gefangen, welches das Home-Verzeichnis des jeweiligen Benutzers abbildet.
