Skip to content

vsftpd

Generate Key

openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

Config

listen=YES
listen_port=21
#listen_ipv6=NO
allow_writeable_chroot=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=NO
use_localtime=YES
connect_from_port_20=NO
chroot_local_user=YES

# USER WHITE LIST
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd.user_list

secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=ftp
#rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
#rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem

# LOG
xferlog_enable=YES
#xferlog_file=/var/log/vsftpd.log

# SSL
ssl_enable=YES
ssl_tlsv1=YES

pasv_enable=YES
pasv_min_port=11111
pasv_max_port=22222

Limit FTP access only to the /var/www

Method 1

chroot_local_user=YES
usermod --home /var/www/ username

Method 2 (Using user_sub_token)

chroot_local_user=YES
local_root=/ftphome/$USER
user_sub_token=$USER

See man vsftpd.conf