How to use FTP servers in Ubuntu

How to use FTP servers in Ubuntu

In This blog we will see how to install and configure an FTP server on Ubuntu 20.04 that you use to share files between your devices.

FTP stand for File Transfer Protocol which is a standard network protocol used to transfer files to and from a remote system. We will be installing vsftpd which stand for Very Secure Ftp Daemon, a stable, secure, and fast FTP server.

FTP is a very popular protocol, for more secure and faster data transfers

Installing vsftpd on Ubuntu 20.04

The vsftpd package is available in the Ubuntu repositories. To install it, run the following commands:

sudo apt update
sudo apt install vsftpd

The ftp service will automatically start once the installation process is complete. To verify it, print the service status:

sudo systemctl status vsftpd

The output should show that the vsftpd service is active and running:

● vsftpd.service - vsftpd FTP server
     Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2021-03-02 15:17:22 UTC; 3s ago
      .
      .
      .

Configuring vsftpd The vsftpd server configuration is stored in the /etc/vsftpd.conf file.

For more visit the vsftpd documentation page.

In the following sections, we will go over some important settings needed to configure a secure vsftpd installation.

Start by opening the vsftpd configuration file:

sudo vi /etc/vsftpd.conf

Paste these properties at last

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
user_sub_token=$USER
local_root=/home/$USER/ftp
pasv_min_port=30000
pasv_max_port=31000
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO

Save the file and restart the vsftpd service for changes to take effect:

sudo systemctl restart vsftpd

Opening the Firewall If you are running a UFW firewall , you’ll need to allow FTP traffic.

To open port 21 (FTP command port), port 20 (FTP data port), and 30000-31000 (Passive ports range), run the following commands:

sudo ufw allow 20:21/tcp
sudo ufw allow 30000:31000/tcp

To avoid being locked out, make sure port 22 is open:

sudo ufw allow OpenSSH

Reload the UFW rules by disabling and re-enabling UFW:

sudo ufw disable
sudo ufw enable

To verify the changes run:

sudo ufw status

Output look like

Status: active
To                         Action      From
--                         ------      ----
20:21/tcp                  ALLOW       Anywhere
30000:31000/tcp            ALLOW       Anywhere
OpenSSH                    ALLOW       Anywhere
20:21/tcp (v6)             ALLOW       Anywhere (v6)
30000:31000/tcp (v6)       ALLOW       Anywhere (v6)
OpenSSH (v6)               ALLOW       Anywhere (v6)

Creating FTP User

To test the FTP server, we will create a new user. Create a new user named newuser:

sudo adduser newuser

Add the user to the allowed FTP users list:

echo "newuser" | sudo tee -a /etc/vsftpd.user_list

Create the FTP directory tree and set the correct permissions:

sudo mkdir -p /home/newuser/ftp

Give the require permission to the newuser.

sudo chmod 777 /home/newuser/ftp
sudo chown -R newuser: /home/newuser/ftp

Test your configuration Perform the following step in another windows/Linux system to test out

step 1: open Command line interface of your respective system and run this following command with replacing the ip_address of remote system

ftp ip_address

Enter the user name which you newly created with password and you will see the following output

C:\Users\window>ftp 192.168.29.128 
Connected to 192.168.29.128. 
220 (vsFTPd 3.0.3) 
200 Always in UTF8 mode. User (192.168.29.128:(none)): newuser
331 Please specify the password.
Password: 
230 Login successful.
ftp>

Done!😎

Read the next blog to upload and download the file through the ftp