How to Configure vsFTPd on Ubuntu?

sudo apt update
sudo apt install vsftpd
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig

sudo ufw allow 20,21,990/tcp

ftp passive ports

sudo ufw allow 40000:50000/tcp

sudo adduser ftpuser
sudo mkdir /home/ftpuser/ftp
sudo chown nobody:nogroup /home/ftpuser/ftp
sudo chmod a-w /home/ftpuser/ftp
sudo mkdir /home/ftpuser/ftp/uploads
sudo chown ftpuser:ftpuser /home/ftpuser/ftp/uploads
sudo vi /etc/vsftpd.conf

anonymous_enable=NO
#

local_enable=YES
#
write_enable=YES
#
chroot_local_user=YES
#
user_sub_token=$USER
local_root=/home/$USER/ftp
#
pasv_min_port=40000
pasv_max_port=50000
#
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
#

bash$ echo “ftpuser” | sudo tee -a /etc/vsftpd.userlist
bash$ sudo systemctl restart vsftpd

bash$ ftp -p 192.168.1.100

bash$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

bash$ sudo vi /etc/vsftpd.conf

#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
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
#
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
#
require_ssl_reuse=NO
ssl_ciphers=HIGH

wq!

bash$ sudo systemctl restart vsftpd

Disabling Shell access:

If secure connection is not possible, ftpuser shell access must be deny:

bash$ sudo vi /bin/ftponly

!/bin/sh

echo “This account is limited to FTP access only.”

bash$ sudo chmod a+x /bin/ftponly

bash$ sudo vi /etc/shells
/bin/ftponly

sudo usermod ftpuser -s /bin/ftponly

By:

Posted in:


Leave a comment