Wiki source code of Configure Vsftpd FTP Server on Rocky Linux 8|AlmaLinux 8
Last modified by Сергей Коршунов on 2023/05/03 13:52
Show last authors
| author | version | line-number | content |
|---|---|---|---|
| 1 | = Configure Vsftpd FTP Server on Rocky Linux 8|AlmaLinux 8 = | ||
| 2 | |||
| 3 | |||
| 4 | **FTP** is an acronym for //File Transfer Protocol//. This application layer protocol is essential where the seamless transfer or data exchange between devices over the internet is required. File upload and download in an FTP application is made easy using **TCP**(Transmission Control Protocol) | ||
| 5 | |||
| 6 | C-More EA9 HMI Series Panel FTP - F... | ||
| 7 | |||
| 8 | |||
| 9 | |||
| 10 | **VSFTPD**, an acronym for// Very Secure FTP Daemon// secures data transfer on FTP by creating secure tunnels to encrypt the data flow. With Vsftpd, data transfer security is guaranteed since an end to end encryption is enforced. | ||
| 11 | |||
| 12 | |||
| 13 | |||
| 14 | The amazing features related to Vsftpd include: | ||
| 15 | |||
| 16 | * **Stability** – This is a very consistent and reliable FTP server. | ||
| 17 | * **IP independent **– with support for both IPv4 and IPv6. | ||
| 18 | * Supports **Standalone** or **inetd** operation | ||
| 19 | * It handles **Bandwidth throttling** | ||
| 20 | * Powerful per-user configurability | ||
| 21 | * **Secure** – Supports encryption through TLS/SSL integration | ||
| 22 | * **Fast and reliable** – there is minimal interference since files are download via a private tunnel | ||
| 23 | * **Virtual users** – this is and added security feature because whenever a real user account is compromised, user can only use FTP Server but can not login to system to use other services like SSH. | ||
| 24 | |||
| 25 | By following the below steps, you should be able to configure the Vsftpd FTP Server on Rocky Linux 8 / AlmaLinux 8. | ||
| 26 | |||
| 27 | |||
| 28 | |||
| 29 | |||
| 30 | |||
| 31 | == 1. Install vsftpd on Rocky Linux 8/ AlmaLinux 8 == | ||
| 32 | |||
| 33 | The first thing we need to do is to install the Very Secure FTP Daemon which is available in the default Rocky Linux 8/ AlmaLinux 8 repositories. | ||
| 34 | |||
| 35 | {{{sudo yum update | ||
| 36 | sudo yum install vsftpd}}} | ||
| 37 | |||
| 38 | Dependency tree: | ||
| 39 | |||
| 40 | |||
| 41 | |||
| 42 | {{{Dependencies resolved. | ||
| 43 | ================================================================================ | ||
| 44 | Package Architecture Version Repository Size | ||
| 45 | ================================================================================ | ||
| 46 | Installing: | ||
| 47 | vsftpd x86_64 3.0.3-34.el8 appstream 180 k | ||
| 48 | |||
| 49 | Transaction Summary | ||
| 50 | ================================================================================ | ||
| 51 | Install 1 Package | ||
| 52 | |||
| 53 | Total download size: 180 k | ||
| 54 | Installed size: 347 k | ||
| 55 | Is this ok [y/N]: y}}} | ||
| 56 | |||
| 57 | Once the installation is successful, verify the installed version of Vsftpd as below. | ||
| 58 | |||
| 59 | {{{$ sudo rpm -qi vsftpd | ||
| 60 | Name : vsftpd | ||
| 61 | Version : 3.0.3 | ||
| 62 | Release : 34.el8 | ||
| 63 | Architecture: x86_64 | ||
| 64 | Install Date: Sat 12 Feb 2022 02:30:16 AM EST | ||
| 65 | Group : System Environment/Daemons | ||
| 66 | Size : 355732 | ||
| 67 | License : GPLv2 with exceptions | ||
| 68 | Signature : RSA/SHA256, Tue 09 Nov 2021 10:07:58 AM EST, Key ID 15af5dac6d745a60 | ||
| 69 | Source RPM : vsftpd-3.0.3-34.el8.src.rpm | ||
| 70 | Build Date : Tue 09 Nov 2021 09:27:17 AM EST | ||
| 71 | Build Host : ord1-prod-x86build004.svc.aws.rockylinux.org | ||
| 72 | Relocations : (not relocatable) | ||
| 73 | Packager : infrastructure@rockylinux.org | ||
| 74 | Vendor : Rocky | ||
| 75 | URL : https://security.appspot.com/vsftpd.html | ||
| 76 | Summary : Very Secure Ftp Daemon | ||
| 77 | Description : | ||
| 78 | vsftpd is a Very Secure FTP daemon. It was written completely from | ||
| 79 | scratch.}}} | ||
| 80 | |||
| 81 | Start and enable the Very Secure FTP Daemon to run automatically on system boot. | ||
| 82 | |||
| 83 | {{{sudo systemctl enable vsftpd --now }}} | ||
| 84 | |||
| 85 | Check the status of the service. | ||
| 86 | |||
| 87 | {{{$ systemctl status vsftpd | ||
| 88 | ● vsftpd.service - Vsftpd ftp daemon | ||
| 89 | Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled) | ||
| 90 | Active: active (running) since Sat 2022-02-12 02:30:39 EST; 6s ago | ||
| 91 | Process: 32110 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS) | ||
| 92 | Main PID: 32111 (vsftpd) | ||
| 93 | Tasks: 1 (limit: 36438) | ||
| 94 | Memory: 580.0K | ||
| 95 | CGroup: /system.slice/vsftpd.service | ||
| 96 | └─32111 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf | ||
| 97 | |||
| 98 | Feb 12 02:30:38 localhost.localdomain systemd[1]: Starting Vsftpd ftp daemon... | ||
| 99 | Feb 12 02:30:39 localhost.localdomain systemd[1]: Started Vsftpd ftp daemon.}}} | ||
| 100 | |||
| 101 | == 2. Create the FTP User and User Directory == | ||
| 102 | |||
| 103 | We need to create and grant dedicated user access to the FTP server. We will create the user as below. | ||
| 104 | |||
| 105 | {{{sudo adduser vsftpduser | ||
| 106 | sudo passwd vsftpduser}}} | ||
| 107 | |||
| 108 | With the user and password created as above, proceed and create the FTP directories with the necessary permissions. | ||
| 109 | |||
| 110 | {{{sudo mkdir -p /srv/ftp | ||
| 111 | sudo chmod -R 750 /srv/ftp | ||
| 112 | sudo chown vsftpduser: /srv/ftp}}} | ||
| 113 | |||
| 114 | To grant the user access to the Vsftpd server, add them to the **///etc/vsftpd/user_list//** file. | ||
| 115 | |||
| 116 | {{{sudo bash -c 'echo vsftpduser >> /etc/vsftpd/user_list'}}} | ||
| 117 | |||
| 118 | == 3. Configure vsftpd on Rocky Linux 8/ AlmaLinux 8. == | ||
| 119 | |||
| 120 | We need to make some adjustments to the Vsftpd config file accessed as below. | ||
| 121 | |||
| 122 | |||
| 123 | {{{sudo vi /etc/vsftpd/vsftpd.conf}}} | ||
| 124 | |||
| 125 | With the file opened, make the below adjustments: | ||
| 126 | |||
| 127 | * Allow remote access to local users then block anonymous users. | ||
| 128 | |||
| 129 | {{{anonymous_enable = NO | ||
| 130 | local_enable = YES}}} | ||
| 131 | |||
| 132 | * Grant user permission to run ant FTP commands. | ||
| 133 | |||
| 134 | {{{write_enable = YES}}} | ||
| 135 | |||
| 136 | * Restrict user access to their home directory only and grant the write permissions. | ||
| 137 | |||
| 138 | {{{chroot_local_user=YES | ||
| 139 | allow_writeable_chroot=YES}}} | ||
| 140 | |||
| 141 | * Set custom ports to enable passive FTP connections. | ||
| 142 | |||
| 143 | {{{pasv_min_port=30000 | ||
| 144 | pasv_max_port=31000}}} | ||
| 145 | |||
| 146 | * Allow dedicated Vsftpd users in the **//user_list//** file to access the FTP server. | ||
| 147 | |||
| 148 | {{{userlist_file=/etc/vsftpd/user_list | ||
| 149 | userlist_enable=YES | ||
| 150 | userlist_deny=NO}}} | ||
| 151 | |||
| 152 | With the above changes made, restart the server. | ||
| 153 | |||
| 154 | {{{sudo systemctl restart vsftpd}}} | ||
| 155 | |||
| 156 | == 4. Open FTP Ports on Firewalld == | ||
| 157 | |||
| 158 | Based on the above configuration, we have set the passive communication port range between 30000-31000. We now need to allow these ports through the firewall. Also, we need to allow port range 20-21 for FTP data and traffic. | ||
| 159 | |||
| 160 | {{{sudo firewall-cmd --permanent --add-port=20-21/tcp | ||
| 161 | sudo firewall-cmd --permanent --add-port=30000-31000/tcp}}} | ||
| 162 | |||
| 163 | Apply the changes to the firewall daemon. | ||
| 164 | |||
| 165 | {{{sudo firewall-cmd --reload}}} | ||
| 166 | |||
| 167 | Now test the FTP connection using the below command: | ||
| 168 | |||
| 169 | {{{ftp serverIP}}} | ||
| 170 | |||
| 171 | Sample Output: | ||
| 172 | |||
| 173 | [[~[~[image:https://computingforgeeks.com/wp-content/uploads/2022/02/Configure-Vsftpd-FTP-Server-on-Rocky-Linux-AlmaLinux.png?ezimgfmt=rs:404x190/rscb23/ng:webp/ngcb23~|~|alt="Configure Vsftpd FTP Server on Rocky Linux" height="190" width="404"~]~]>>path:data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22404%22%20height=%22190%22%3E%3C/svg%3E]] | ||
| 174 | |||
| 175 | == 5. Vsftpd SSL/TLS Configuration on Rocky Linux 8/ AlmaLinux 8 == | ||
| 176 | |||
| 177 | For security and encryption reasons on the FTP server, we will generate SSL certificates on this system. | ||
| 178 | |||
| 179 | In this guide, we use self-signed certificates generated using OpenSSL as below. | ||
| 180 | |||
| 181 | First, ensure OpenSSL is installed | ||
| 182 | |||
| 183 | {{{sudo yum install openssl}}} | ||
| 184 | |||
| 185 | Then generated the self-signed certificates. | ||
| 186 | |||
| 187 | {{{sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/vsftpd.pem -out /etc/vsftpd/vsftpd.pem}}} | ||
| 188 | |||
| 189 | On the output, provide the required country name, state/province details e.t.c | ||
| 190 | |||
| 191 | [[~[~[image:https://computingforgeeks.com/wp-content/uploads/2022/02/Configure-Vsftpd-FTP-Server-on-Rocky-Linux-AlmaLinux-1.png?ezimgfmt=rs:688x368/rscb23/ng:webp/ngcb23~|~|alt="Configure Vsftpd FTP Server on Rocky Linux AlmaLinux 1" height="368" width="688"~]~]>>path:data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22688%22%20height=%22368%22%3E%3C/svg%3E]] | ||
| 192 | |||
| 193 | Now get back to the Vsftpd config file and add the generated certificates path. | ||
| 194 | |||
| 195 | {{{$ sudo vi /etc/vsftpd/vsftpd.conf | ||
| 196 | #Add these lines### | ||
| 197 | rsa_cert_file=/etc/vsftpd/vsftpd.pem | ||
| 198 | rsa_private_key_file=/etc/vsftpd.pem | ||
| 199 | |||
| 200 | #Enable SSL## | ||
| 201 | ssl_enable=YES | ||
| 202 | allow_anon_ssl=NO | ||
| 203 | force_local_data_ssl=YES | ||
| 204 | force_local_logins_ssl=YES | ||
| 205 | ssl_tlsv1=YES | ||
| 206 | ssl_sslv2=NO}}} | ||
| 207 | |||
| 208 | Save the changes and restart Vsftpd. | ||
| 209 | |||
| 210 | {{{sudo systemctl restart vsftpd}}} | ||
| 211 | |||
| 212 | == 6. Test FTP using FTP Client(Filezilla) == | ||
| 213 | |||
| 214 | We now want to test the FTP server using the Filezilla FTP client that can be installed on both Windows and Linux systems. For Windows, download and install the Filezilla.exe file, on Linux proceed as below. | ||
| 215 | |||
| 216 | {{{# [On Debian, Ubuntu & Mint] | ||
| 217 | sudo apt install filezilla | ||
| 218 | |||
| 219 | #[On RHEL/CentOS/Fedora & Rocky Linux/AlmaLinux] | ||
| 220 | sudo yum install filezilla | ||
| 221 | |||
| 222 | #[On Arch Linux] | ||
| 223 | sudo pacman -S filezilla | ||
| 224 | |||
| 225 | #[On OpenSUSE] | ||
| 226 | sudo zypper in filezilla}}} | ||
| 227 | |||
| 228 | Once installed, launch Filezilla and navigate to **File**->**Site Manager**. | ||
| 229 | |||
| 230 | [[~[~[image:https://computingforgeeks.com/wp-content/uploads/2022/02/Configure-Vsftpd-FTP-Server-on-Rocky-Linux-AlmaLinux-2.png?ezimgfmt=rs:696x500/rscb23/ng:webp/ngcb23~|~|alt="Configure Vsftpd FTP Server on Rocky Linux AlmaLinux 2" height="685" width="953"~]~]>>path:data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22953%22%20height=%22685%22%3E%3C/svg%3E]] | ||
| 231 | |||
| 232 | Now enter the FTP server details as shown | ||
| 233 | |||
| 234 | [[~[~[image:https://computingforgeeks.com/wp-content/uploads/2022/02/Configure-Vsftpd-FTP-Server-on-Rocky-Linux-AlmaLinux-3.png?ezimgfmt=rs:696x508/rscb23/ng:webp/ngcb23~|~|alt="Configure Vsftpd FTP Server on Rocky Linux AlmaLinux 3" height="656" width="898"~]~]>>path:data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22898%22%20height=%22656%22%3E%3C/svg%3E]] | ||
| 235 | |||
| 236 | With the correct details entered, click **connect**. You will be granted the earlier created certificate, click **Ok** to proceed. | ||
| 237 | |||
| 238 | [[~[~[image:https://computingforgeeks.com/wp-content/uploads/2022/02/Configure-Vsftpd-FTP-Server-on-Rocky-Linux-AlmaLinux-4.png?ezimgfmt=rs:696x617/rscb23/ng:webp/ngcb23~|~|alt="Configure Vsftpd FTP Server on Rocky Linux AlmaLinux 4" height="692" width="780"~]~]>>path:data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22780%22%20height=%22692%22%3E%3C/svg%3E]] | ||
| 239 | |||
| 240 | Once the connection has been established, you will be granted a window divided into two parts with one part showing the local server and the other showing the Vsftpd server with the created directory(**//ftp_folder//**). | ||
| 241 | |||
| 242 | [[~[~[image:https://computingforgeeks.com/wp-content/uploads/2022/02/Configure-Vsftpd-FTP-Server-on-Rocky-Linux-AlmaLinux-5.png?ezimgfmt=rs:696x502/rscb23/ng:webp/ngcb23~|~|alt="Configure Vsftpd FTP Server on Rocky Linux AlmaLinux 5" height="689" width="956"~]~]>>path:data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22956%22%20height=%22689%22%3E%3C/svg%3E]] | ||
| 243 | |||
| 244 | Now using the vsftpduser created earlier, we can upload files to the server. | ||
| 245 | |||
| 246 | |||
| 247 | [[~[~[image:https://computingforgeeks.com/wp-content/uploads/2022/02/Configure-Vsftpd-FTP-Server-on-Rocky-Linux-AlmaLinux-6.png?ezimgfmt=rs:696x333/rscb23/ng:webp/ngcb23~|~|alt="Configure Vsftpd FTP Server on Rocky Linux AlmaLinux 6" height="460" width="962"~]~]>>path:data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22962%22%20height=%22460%22%3E%3C/svg%3E]] | ||
| 248 | |||
| 249 | The uploaded file will be available on the FTP server as below. | ||
| 250 | |||
| 251 | [[~[~[image:https://computingforgeeks.com/wp-content/uploads/2022/02/Configure-Vsftpd-FTP-Server-on-Rocky-Linux-AlmaLinux-7.png?ezimgfmt=rs:696x331/rscb23/ng:webp/ngcb23~|~|alt="Configure Vsftpd FTP Server on Rocky Linux AlmaLinux 7" height="455" width="958"~]~]>>path:data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22958%22%20height=%22455%22%3E%3C/svg%3E]] | ||
| 252 | |||
| 253 | You can as well download files as below. | ||
| 254 | |||
| 255 | [[~[~[image:https://computingforgeeks.com/wp-content/uploads/2022/02/Configure-Vsftpd-FTP-Server-on-Rocky-Linux-AlmaLinux-8.png?ezimgfmt=rs:696x393/rscb23/ng:webp/ngcb23~|~|alt="Configure Vsftpd FTP Server on Rocky Linux AlmaLinux 8" height="462" width="819"~]~]>>path:data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22819%22%20height=%22462%22%3E%3C/svg%3E]] | ||
| 256 | |||
| 257 | The downloaded file appears on your local machine as shown. | ||
| 258 | |||
| 259 | [[~[~[image:https://computingforgeeks.com/wp-content/uploads/2022/02/Configure-Vsftpd-FTP-Server-on-Rocky-Linux-AlmaLinux-9.png?ezimgfmt=rs:696x269/rscb23/ng:webp/ngcb23~|~|alt="Configure Vsftpd FTP Server on Rocky Linux AlmaLinux 9" height="371" width="961"~]~]>>path:data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22961%22%20height=%22371%22%3E%3C/svg%3E]] | ||
| 260 | |||
| 261 | == Closing Thoughts. == | ||
| 262 | |||
| 263 | We triumphantly configured the Vsftpd FTP Server on Rocky Linux 8 / AlmaLinux 8. You can now share files securely over the private tunnel. I hope this was significant to you. |