Inhaltsverzeichnis

Pure-FTPd

Ubuntu 14.04 LTS

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

fail2ban für Pure-FTPd konfigurieren

/etc/fail2ban/jail.conf
#
# 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
/etc/fail2ban/filter.d/pure-ftpd.conf
# Version vom 08. Februar 2010
failregex = pure-ftpd(?:\[\d+\])?: \(.+?@<HOST>\) \[WARNING\] %(__errmsg)s \[.+\]\s*$