ProFTPD is a free and open source FTP server. Its authors announce it as powerful and perfectly secure. ProFTPD is the most popular file transfer protocole in Unix-like environments today.

It is distributed under the terms of the GNU GPL license.

ProFTPD is also well documented, most configurations would be similar to the tutorials provided with the software. Its unique configuration file, proftpd.conf, uses Apache-like syntax to homogenize configuration files. However, the include directive allows you to split configuration directives into different files for more complex cases.

The software makes it possible to configure several virtual FTP servers and has the possibility of being used in a dedicated environment (chroot). It can be launched as a daemon or as an inetd service. Finally, ProFTPD is IPv6 compatible.

Its architecture is modular, which has made it possible to write extensions for the support of SSL / TLS cryptography (FTPS protocol) and the extension of authentication via RADIUS, LDAP or SQL databases.

The SQL module also allows database storage of the operations performed on the FTP server.

The version 1.3.2 also supports the SFTP and SCP protocols from SSH via the mod_sftp module.

Supported platforms

  • AIX
  • BSD/OS
  • DG/UX
  • Digital Unix
  • FreeBSD
  • HP/UX
  • IRIX
  • Linux for IBM S/390, zSeries
  • Linux
  • Mac OS X
  • NetBSD
  • OpenBSD
  • SCO
  • Solaris
  • SunOS
  • Windows (via Cygwin)

proFTPD Configuration and features

Configuration

To configure proFTPD on CentOS please read this tutorial.

Examples of configuration code

# Name of the server that is displayed
ServerName "ProFTPD Default Server"
# Standalone Server (do not modify)
ServerType standalone
# Enable default server (If not "VirtualHost")
DefaultServer on
# Do we need a valid shell to connect
RequireValidShell off
# Enable PAM authentication
AuthPAM off
AuthPAMConfig ftp
 
# Listening port (21 by default)
Port 21
 
# Permissions of a folder or file created via FTP
Umask 022
 
# Number of simultaneous FTP connections
MaxInstances 30
 
# Launch the ftp daemon under this user and group
User ftp
Group ftp
 
# FTP root ([b] ~ [/ b] corresponds to the fact that the user is partitioned in his personal folder)
DefaultRoot ~
 
# Generally files are overwritable.
AllowOverwrite on
 
# Disable the CHMOD command via FTP
<Limit SITE_CHMOD>
  DenyAll
</ Limit>
 
# Anonymous folder example without possibility to upload
<Anonymous ~ ftp>
  User ftp
  Group ftp
 
  # Ability to connect with users "anonymous" and "ftp".
  UserAlias anonymous ftp
 
  # Limit the number of anonymous connections
  MaxClients 10
 
  # Disable the WRITE command for anonymous users
  <Limit WRITE>
    DenyAll
  </ Limit>
</ Anonymous>