Debian 9 Server als Virtuelle Maschine-Teil 4

Den dritten Teil der Installatationanleitung hatte ich mit der Einrichtung von Putty und SSH beendet. Im 2. Teil war zu sehen, dass auch bereits ein Webserver (Apache) installiert wird. Wir haben also jetzt bereits einen zwar rudimentären, aber funktionierenden Webserver auf der Basis des Debian Linux 9 Stretch in der virtuellen Maschine. Im folgenden geht es um den weiteren Ausbau des Servers (insbesondere die Installation von PHP und FTP) und die Konfiguration der Komponenten.

FTP-Server installieren - ProFTPD

Eigentliche Installation

Meist wird ProFTPD als FTP-Server auf Debian Distributionen verwendet. Einige Quellen, in denen das beschrieben wird sind:

https://www.thomas-krenn.com/de/wiki/FTP-Server_unter_Debian_einrichten

und

https://hosting.1und1.de/digitalguide/server/konfiguration/eigenen-debian-ftp-server-mit-proftpd-einrichten/

Vor der Installation neuer Pakete sollte man zunächst prüfen, ob die bereits installierten Pakete auf dem aktuellsten Stand sind:

apt-get update
apt-get upgrade

Das brachte die folgenden Updates

Die folgenden Pakete werden aktualisiert (Upgrade):
apache2 apache2-bin apache2-data apache2-doc apache2-utils base-files
ca-certificates discover dpkg file libdiscover2 libldap-2.4-2 libldap-common 
libmagic-mgc libmagic1 libpam-systemd libsystemd0 libudev1 libxapian30 
python3-reportbug reportbug shared-mime-info systemd systemd-sysv udev

Jetzt erfolgt die eigentliche Installation mit

apt-get install proftpd-basic

Bei der Installation werden weitere Pakete installiert:

The following additional packages will be installed:
libmemcached11 libmemcachedutil2
Vorgeschlagene Pakete:
openbsd-inetd | inet-superserver proftpd-doc proftpd-mod-ldap proftpd-mod-mysql proftpd-mod-odbc 
proftpd-mod-pgsql proftpd-mod-sqlite proftpd-mod-geoip
Die folgenden NEUEN Pakete werden installiert:
libmemcached11 libmemcachedutil2 proftpd-basic

Während der Installation werden neue Nutzer und Gruppen angelegt:

Warnung: Auf das von Ihnen angegebene Home-Verzeichnis /run/proftpd kann nicht zugegriffen werden: No such file or directory
Lege Systembenutzer »proftpd« (UID 107) an ...
Lege neuen Benutzer »proftpd« (UID 107) mit Gruppe »nogroup« an ...
Erstelle Home-Verzeichnis »/run/proftpd« nicht.
Lege Systembenutzer »ftp« (UID 108) an ...
Lege neuen Benutzer »ftp« (UID 108) mit Gruppe »nogroup« an ...
Erstelle Home-Verzeichnis »/srv/ftp« ...

Konfiguration von ProFTPD

Konfigurationsdatei anlegen:

touch /etc/proftpd/conf.d/custom.conf

und mit

mcedit /etc/proftpd/conf.d/custom.conf

so füllen:

# Ftp user doesn't need a valid shell
<Global>
    RequireValidShell off
</Global>
# If desired turn off IPv6
UseIPv6 off
# Default directory is ftpusers home
DefaultRoot ~ ftpuser
# Limit login to the ftpuser group
<Limit LOGIN>
    DenyGroup !ftpuser
</Limit>

Neustart des FTP-Servers

systemctl restart proftpd.service

SSL/TLS-verschlüsselte FTP-Verbindung einrichten

Überprüfung mit

proftpd -vv | grep tls

zeigt, dass es bereits installiert ist. Jetzt brauchen wir ein Zertifikat:

apt install ssl-cert

ist im konkreten Fall schon installiert. Zertifikat erstellen:

make-ssl-cert generate-default-snakeoil --force-overwrite

Anzeigen mit

ls -la /etc/ssl/certs/ssl-cert-snakeoil.pem
ls -la /etc/ssl/private/ssl-cert-snakeoil.key

SSL/TLS-verschlüsselte FTP-Verbindung konfigurieren

Datei anlegen:

touch /etc/proftpd/conf.d/tls.conf

und mit

mcedit /etc/proftpd/conf.d/tls.conf

füllen:

<IfModule mod_tls.c>
    TLSEngine on
    TLSLog /var/log/proftpd/tls.log
    TLSProtocol TLSv1.2
    TLSRSACertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
    TLSRSACertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
    TLSVerifyClient off
    TLSRequired on
</IfModule>

Neustart des FTP-Servers

systemctl restart proftpd.service

Nutzer einrichten

adduser ftpuser01 --shell /bin/false --home /var/www/ftpuser01

Die Meldungen sind:

Lege Benutzer »ftpuser01« an ...
Lege neue Gruppe »ftpuser01« (1001) an ...
Lege neuen Benutzer »ftpuser01« (1001) mit Gruppe »ftpuser01« an ...
Erstelle Home-Verzeichnis »/var/www/ftpuser01« ...
Kopiere Dateien aus »/etc/skel« ...

Als Passwort wurde pasewalk eingegeben. Allerdings wurde das angegebene Home-Verzeichnis nicht erstellt. Dies geschieht aber zu einem späteren Zeitpunkt automatisch.

Login funktioniert aber nicht!!!

Anonymous Zugang einrichten

Konfigurationsdatei erstellen:

touch /etc/proftpd/conf.d/anon.conf

und mit

mcedit /etc/proftpd/conf.d/anon.conf

füllen:

<Anonymous ~ftpuser>
    User ftp
    Group ftp
    # Users can also login with ftp
    UserAlias anonymous ftp
    # All files belong to ftp
    DirFakeUser on ftp
    DirFakeGroup on ftp
    RequireValidShell off
    MaxClients 10
    <Directory *>
        <Limit WRITE>
            DenyAll
        </Limit>
    </Directory>
</Anonymous>

Nutzer für anonymen Zugriff erstellen

adduser ftp ftpuser