Hallo Jungs,
in diesem Beitrag geht es um die Installation & Einrichtung eines FTP-Servers unter Linux.
Eigentlich kein Ding, manchmal sollte man sich aber trotzdem die Zeit nehmen den Dienst richtig zu konfigurieren wenn er ans Netz soll.
Sollte ich Verschlüsselung für den FTP-Server aktivieren?
Ja, mindestens die Logins sollten verschlüsselt übertragen werden – sonst macht man es dem ISP-Sniffer zu einfach.
Sollte ich besser virtuelle Benutzer oder lokale Benutzer verwenden?
Besser virtuelle damit kein direkter Zugriff auf die Kommandozeile durch einfache Anmeldung an alternativen Dienste wie ein locker konfiguriertes SSH erreicht werden kann.
Welche Möglichkeiten der Login-Verwaltung gibt es?
- lokale Benutzer
- virtuelle Benutzer-DB4
- htpasswd-Benutzerdatei
- Anbindung an LDAP/Active Directory
- etc…
Installation FTP-Server (vsftpd)
Der vsftpd wird mit einer virtuellen Benutzer-Datenbank erstellt (RedHat empfohlener Weg),
die Verschlüsselung per TLS über den Standard-Port des FTP wird zu dem optional bereitgestellt.
In einem späteren Nachtrag wird ggf. noch einmal behandelt wie der FTP-Dienst mit einem anderen Benutzerkonto als Dienst installiert wird. (per yum wird der Dienst als root hinzugefügt, Software-Fehler könnten also zu root-Rechten führen)
Anforderungen:
DB4 inkl. Werkzeuge für die virtuelle Datenbank, vsftpd, SSL-Support
yum install db4 db4-utils openssl openssl-devel vsftpd
Anpassung des virtuellen Datenbank-Providers auf ein DB-File im Ordner von vsftpd.
(pam – Anwendungs-Authentifizierungsdienste-Modul)
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.virtual
je nach Konfiguration (keep it simple) in diesem Falle legt man einen Ordner pro Benutzer an oder einen allgemeinen für alle…
mkdir /var/ftp/public
# Neue Benutzerordner
mkdir /var/ftp/users/user01
mkdir /var/ftp/users/user02
# oder Weiterleitungen des chroot
cd /var/ftp/users
ln -s /var/ftp/users/user01 user03
# Sicherheitseinstellungen
cd /var/ftp
chown root * -R
chgrp ftp * -R
chmod -R 770 *
Nächster Schritt der Vorbereitung – aktivieren der Verschlüsselung (generieren des Zertifikats):
openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem
Zu guter letzt bearbeiten wir die Konfigurationsdatei mit allen Optionen die wir haben oder nicht haben wollen:
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
nano /etc/vsftpd/vsftpd.conf
Und hier der Inhalt der „vsftpd.conf“:
# Umgang mit anonymen Logins, vorerst offline zur Sicherheit
anonymous_enable=NO
anon_upload_enable=NO
guest_enable=YES
# Konfiguration lokale Benutzer, notwendig für die virtuellen Benutzer
local_enable=YES
write_enable=YES
local_umask=077
virtual_use_local_privs=YES
# Standard-Konfiguration
dirmessage_enable=YES
banner_file=/etc/vsftpd/issue
xferlog_enable=YES
xferlog_std_format=NO
log_ftp_protocol=YES
chown_uploads=YES
#Verbindungseinstellungen
connect_from_port_20=YES
idle_session_timeout=600
data_connection_timeout=120
pasv_min_port=40000
listen=YES
#listen_ipv6=YES
#deny_email_enable=YES
chkconfig vsftpd on
ntsysv
system-config-securitylevel-tui
Ggf. prüft man nach folgender Zeile per iptables und fügt diese hinzu…siehe hierzu dann den iptables-Artikel.
IPTABLES_MODULES=“ip_conntrack_ftp“
Hier geht es zum iptables-Artikel.