vsftpd für den Zugriff auf www-Root konfigurieren
Die folgende Anleitung erläutert die Konfiguration eines FTP-Servers für den Zugriff von Benutzern ohne Shell-Login auf das Rootverzeichnis des Webservers.
Installieren Sie zunächst den FTP-Server vsftpd. Unter OpenSuse via Yast, unter Ubuntu via apt-get install vsftpd.
Benutzer anlegen und Rechte vergeben
Zunächst legen wir eine neue Benutzergruppe (im Beispiel wwwftp) an unter der all unsere FTP-Benutzer zusammengefasst werden.
groupadd wwwftp
Danach legen wir unseren ersten Benutzer ftpuser an. Diesen fügen wir unserer Gruppe wwwftp hinzu und setzen das Home-Verzeichnis auf unser Root-Verzeichnis des Webservers /var/www. Dadurch wird dem Benutzer beim einloggen via FTP sofort das Webserver-Rootverzechnis präsentiert.
useradd -g wwwftp -d /var/www ftpuser
Danach vergeben wir für unseren gerade angelegten Benutzer noch ein Passwort.
passwd ftpuser
Zuletzt müssen wir die Dateisystemrechte für das Root-Verzeichnis noch entsprechend anpassen, damit unsere FTP-Benutzergruppe auch lesen und schreiben darf.
chown -R www-data:wwwftp /var/www
chmod -R 775 /var/www
FTP-Server konfigurieren
Die FTP-Server-Konfiguration befindet sich in der Datei /etc/vsftpd.
Die folgenden Zeilen zeigen die Änderungen die abweichend zur Standardkonfiguration vorgenommen wurden. Beachten Sie, dass sich zwischen Konfigurationsparameter, = und Wert keine Leerzeichen befinden dürfen.
Konfigurationsdatei
# Allow anonymous FTP? (Disabled by default)
anonymous_enable=NO
local_umask = 022
# Uncomment this to allow local users to log in.
local_enable=YES
# Uncomment this to enable any form of FTP write command.
write_enable=YES
# chroot_list_enable below.
chroot_local_user=YES
# You may fully customise the login banner string:
ftpd_banner=Welcome @home baby!
# It is recommended that you define on your system a unique user which the
# ftp server can use as a totally isolated and unprivileged user.
nopriv_user=www-data
userlist_deny=NO
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
Userlist
Um den Zugriff zu regeln empfiehlt es sich von so gennanten Userlists gebrauch zu machen. Diese Text-Dateien enthalten eine Auflistung aller lokalen Benutzer die sich per FTP anmelden dürfen. Erstellen Sie dazu die Datei /etc/vsftpd.user_list laut obiger Konfiguration. Fügen Sie einen Benutzernamen pro Zeile ein.
FTP-Benutzern den Zugriff auf die Shell verwehren
Um den angelegten FTP-Benutzern den Zugriff auf die lokale Shell zu verwehren und damit die Sicherheit zu erhöhen, bzw. FTP-only Benutzer zu erstellen, muss ein wenig getrickst werden, da vsftpd eigentlich einen Shell-Login voraussetzt.
Zunächst müssen Sie die verwendete Shell für die einzelnen FTP-Benutzer in der Datei /etc/passwd von /bin/bash auf /bin/false ändern. Für unseren FTP-Benutzer würde der Eintrag damit in etwa wie folgt lauten:
ftpuser:x:1001:1001::/var/www:/bin/false
Danach muss noch die Sicherheitseinstellung im pam-Modul umkonfiguriert werden. Dazu kommentieren Sie die folgende Zeile in der Datei /etc/pam.d/vsftpd aus:
auth required pam_shells.so
Spitze! Dankeschön!