====== Pure-FTPd ======
* [[https://www.server-world.info/en/note?os=Ubuntu_16.04&p=ftp&f=3]]
* [[https://www.server-world.info/en/note?os=Ubuntu_16.04&p=ftp&f=8]]
===== Ubuntu 14.04 LTS =====
* [[http://articlebin.michaelmilette.com/setting-up-pure-ftpd-in-ubuntu/]]
* **[[https://help.ubuntu.com/community/PureFTP]]**
Installation:
> aptitude install pure-ftpd
Die folgenden NEUEN Pakete werden zusätzlich installiert:
libfile-copy-recursive-perl{a} openbsd-inetd{a} pure-ftpd pure-ftpd-common{a} update-inetd{a}
Mit Grafischer Gtk-Oberfläche für PureFTPd:
> aptitude install pure-ftpd pureadmin
Die folgenden NEUEN Pakete werden zusätzlich installiert:
fontconfig{a} fontconfig-config{a} gamin{a} hicolor-icon-theme{a} libatk1.0-0{a} libatk1.0-data{a} libavahi-client3{a}
libavahi-common-data{a} libavahi-common3{a} libcairo2{a} libcups2{a} libdatrie1{a} libfile-copy-recursive-perl{a}
libfontconfig1{a} libgamin0{a} libgdk-pixbuf2.0-0{a} libgdk-pixbuf2.0-common{a} libglade2-0{a} libgraphite2-3{a}
libgtk2.0-0{a} libgtk2.0-bin{a} libgtk2.0-common{a} libharfbuzz0b{a} libjasper1{a} libjbig0{a} libjpeg-turbo8{a}
libjpeg8{a} libpango-1.0-0{a} libpango1.0-0{a} libpangocairo-1.0-0{a} libpangoft2-1.0-0{a} libpangox-1.0-0{a}
libpangoxft-1.0-0{a} libpixman-1-0{a} libthai-data{a} libthai0{a} libtiff5{a} libxcb-render0{a} libxcb-shm0{a}
libxcomposite1{a} libxcursor1{a} libxdamage1{a} libxfixes3{a} libxft2{a} libxi6{a} libxinerama1{a} libxrandr2{a}
libxrender1{a} openbsd-inetd{a} pure-ftpd pure-ftpd-common{a} pureadmin update-inetd{a}
einen FTP-User und das gemeinsame FTP-Verzeichnis anlegen:
> groupadd ftpgroup
> useradd -g ftpgroup -d /dev/null -s /etc ftpuser
> chown -R ftpuser:ftpgroup /home/ftpuser
"otto" darf nicht per FTP auf diese Maschine zugreifen:
> echo "otto" >> /etc/ftpusers
Konfiguration:
> echo "yes" > /etc/pure-ftpd/conf/Daemonize
> echo "yes" > /etc/pure-ftpd/conf/NoAnonymous
> echo "yes" > /etc/pure-ftpd/conf/ChrootEveryone
> echo "yes" > /etc/pure-ftpd/conf/IPV4Only
der Benutzer "fritz" wird als virtueller FTP-User angelegt, der im Betriebssystem aber nicht existieren muss (aber kann):
> pure-pw useradd fritz -u ftpuser -d /home/ftpusers
Password:
Enter it again:
Sollte man weitere virtuelle FTP-Benutzer benötigen, dann muss am Ender der Kommandozeile mit ''pure-pw'' ein ''-m'' angehängt werden.
nachdem sich etwas an der Passwortdatei geändert hat, muss aus der Passwortdatei ''/etc/pure-ftpd/pureftpd.passwd'' eine (neue) Passwort-Datenbank ''/etc/pure-ftpd/pureftpd.pdb'' erzeugt werden:
> pure-pw mkdb
> service pure-ftpd restart
alle virtuellen Benutzer anzeigen:
> pure-pw list
fritz /home/ftpusers/./
alle Daten zu einem virtuellen Benutzer anzeigen:
> pure-pw show fritz
Login : fritz
Password : $1$O5VyP8o0$/M9IiimAS/dTG6Re4HW9C.
UID : 1001 (fritz)
GID : 1001 (fritz)
Directory : /home/fritz/./
Full name :
Download bandwidth : 0 Kb (unlimited)
Upload bandwidth : 0 Kb (unlimited)
Max files : 0 (unlimited)
Max size : 0 Mb (unlimited)
Ratio : 0:0 (unlimited:unlimited)
Allowed local IPs :
Denied local IPs :
Allowed client IPs :
Denied client IPs :
Time restrictions : 0000-0000 (unlimited)
Max sim sessions : 0 (unlimited)
Passwort eines virtuellen Benutzers ändern:
> pure-pw passwd fritz -m
einen virtuellen Benutzer löschen:
> pure-pw userdel fritz -m
Start/Stop/Status
> service pure-ftpd status
> service pure-ftpd start
> service pure-ftpd stop
Server-Aktivitäten anzeigen:
> pure-ftpwho
+------+---------+-------+------+-------------------------------------------+
| PID | Login |For/Spd| What | File/IP |
+------+---------+-------+------+-------------------------------------------+
==== weiter Möglichkeiten zum besseren absichern ====
=== mit SSL Zertifikat für TLS ===
[[https://wiki.hetzner.de/index.php/PureFTPd]]
FTP is by nature a rather unsecure protocol. Add TLS support to prevent your sessions from being vulnerable to man-in-the-middle-attacks
> aptitude install openssl
Enable TLS only mode in Pure-FTPd
> echo 2 > /etc/pure-ftpd/conf/TLS
or for a less secure version that also accepts insecure FTP connections
> echo 1 > /etc/pure-ftpd/conf/TLS
Make a private SSL key
> mkdir -p /etc/ssl/private/
Create your key (z.B. für 7300 Tage)
> openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem
SSL certificates are inherently insecure if other users can read them. You must secure the certificate before it can be used by changing file permissions.
> chmod 600 /etc/ssl/private/pure-ftpd.pem
And now you need to restart Pure-FTPd
> /etc/init.d/pure-ftpd restart
=== fail2ban ===
[[https://www.howtoforge.com/community/threads/fail2ban-pureftp.40177/#post-207610|fail2ban für Pure-FTPd konfigurieren]]
#
# FTP servers
#
[pure-ftpd]
enabled = true
port = ftp,ftp-data,ftps,ftps-data
filter = pure-ftpd
action = iptables[name=PUREFTP, port=ftp, protocol=tcp]
sendmail-whois[name=PUREFTP, dest=you@mail.com]
logpath = /var/log/messages
maxretry = 3
# Version vom 08. Februar 2010
failregex = pure-ftpd(?:\[\d+\])?: \(.+?@\) \[WARNING\] %(__errmsg)s \[.+\]\s*$