OnWorks Linux and Windows Online WorkStations

Logo

Free Hosting Online for WorkStations

< Previous | Contents | Next >

1.4. Securing FTP


There are options in /etc/vsftpd.conf to help make vsftpd more secure. For example users can be limited to their home directories by uncommenting:


chroot_local_user=YES


You can also limit a specific list of users to just their home directories:


chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list


After uncommenting the above options, create a /etc/vsftpd.chroot_list containing a list of users one per line. Then restart vsftpd:


sudo systemctl restart vsftpd.service


Also, the /etc/ftpusers file is a list of users that are disallowed FTP access. The default list includes root, daemon, nobody, etc. To disable FTP access for additional users simply add them to the list.


FTP can also be encrypted using FTPS. Different from SFTP, FTPS is FTP over Secure Socket Layer (SSL). SFTP is a FTP like session over an encrypted SSH connection. A major difference is that users of SFTP need to have a shell account on the system, instead of a nologin shell. Providing all users with a shell may not be ideal for some environments, such as a shared web host. However, it is possible to restrict such accounts to only SFTP and disable shell interaction. See the section on OpenSSH-Server for more.


To configure FTPS, edit /etc/vsftpd.conf and at the bottom add:


ssl_enable=Yes


Also, notice the certificate and key related options:


rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key


By default these options are set to the certificate and key provided by the ssl-cert package. In a production environment these should be replaced with a certificate and key generated for the specific host. For more information on certificates see Section 5, “Certificates” [p. 198].


Now restart vsftpd, and non-anonymous users will be forced to use FTPS:


sudo systemctl restart vsftpd.service


To allow users with a shell of /usr/sbin/nologin access to FTP, but have no shell access, edit /etc/shells

adding the nologin shell:


# /etc/shells: valid login shells

/bin/csh

/bin/sh

/usr/bin/es

/usr/bin/ksh

/bin/ksh

/usr/bin/rc

/usr/bin/tcsh

/bin/tcsh

/usr/bin/esh

/bin/dash

/bin/bash



/bin/rbash

/usr/bin/screen

/usr/sbin/nologin


This is necessary because, by default vsftpd uses PAM for authentication, and the /etc/pam.d/vsftpd

configuration file contains:


auth required pam_shells.so


The shells PAM module restricts access to shells listed in the /etc/shells file.


Most popular FTP clients can be configured to connect using FTPS. The lftp command line FTP client has the ability to use FTPS as well.


Top OS Cloud Computing at OnWorks: