Running FTP server on unlix-like OS: ProFTPD server
File Transfer Protocol (FTP) is a standard network protocol used to transfer files from one host to another host over a TCP-based network, such as the Internet or local nets. There are various ftp-services tou can run at your server among then proftpd, vsftpd, Pure-FTPd, ftpd(native, basic built-in service) and other. I used to run ProFTPD on my servers.
ProFTPD (short for Pro FTP daemon) is free and open-source software server, compatible to Unix-like systems and Microsoft Windows (via Cygwin). Along with vsftpd and Pure-FTPd, ProFTPD is among the most popular FTP servers in UNIX-like environments. ProFTPD provides simplicity, speed or security and flexibility. Primary design goal is to be a highly feature rich FTP server, exposing a large amount of configuration options.
ProFTPD can be easily installed on FreeBSD (via ports), Debian/Ubuntu (via apt-get), CentOS (via yum).
# cd /usr/ports/ftp/proftpd
# make install clean
# yum update
# yum install proftpd
# apt-get update
# apt-get install proftpd
After installation ‘proftpd.conf’ will be created. Here next example. Core features: hide server version, allow login user without valid shell (sure, you do not create users for your web projects with valid shell 🙂 ), limit timeout, etc…
ServerName "unknown" # we don't want to ident our server
ServerIdent Off # we don't want to show server version
# Don't show welcome message until user has authenticated
TimeoutNoTransfer 600 # set timeouts
TimeoutStalled 600 # set timeouts
TimeoutIdle 1200 # set timeouts
# Log files
# Port 21 is the standard FTP port.
# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
# To prevent DoS attacks, set the maximum number of child processes
# to 30. If you need to allow more than 30 concurrent connections
# at once, simply increase this value. Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd).
# Set the user and group under which the server will run.
# To cause every FTP user to be "jailed" (chrooted) into their home
# Default root - user home dirs
# Do not require valid shell
# Enable automatic deletion of partially uploaded HiddenStores files
# No root login
# Attempts limit
MaxLoginAttempts 3 "to much tries..."
# Normally, we want files to be overwriteable.
# Bar use of SITE CHMOD by default