Búsqueda de sitios web

Cómo instalar y configurar el servidor FTP en Ubuntu


FTP (Protocolo de transferencia de archivos) es un protocolo de red estándar relativamente antiguo y más utilizado para cargar/descargar archivos entre dos computadoras a través de una red. Sin embargo, FTP por su origen es inseguro, porque transmite datos junto con las credenciales del usuario (nombre de usuario y contraseña) sin cifrado.

Advertencia: si planea utilizar FTP, considere configurar una conexión FTP con SSL/TLS (se cubrirá en próximo artículo). De lo contrario, siempre es mejor utilizar FTP seguro como SFTP.

Lectura sugerida: Cómo instalar y proteger el servidor FTP en CentOS 7

En este tutorial, mostraremos cómo instalar, configurar y proteger un servidor FTP (VSFTPD en su totalidad “Very Secure FTP Daemon“) en Ubuntu tendrá una potente seguridad contra las vulnerabilidades de FTP.

Paso 1: Instalar el servidor VsFTP en Ubuntu

1. Primero, necesitamos actualizar la lista de fuentes de paquetes del sistema y luego instalar el paquete binario VSFTPD de la siguiente manera:

sudo apt-get update
sudo apt-get install vsftpd

2. Una vez que se complete la instalación, el servicio se deshabilitará inicialmente, por lo tanto, debemos iniciarlo manualmente por el momento y también habilitarlo para que se inicie automáticamente desde el siguiente inicio del sistema:

------------- On SystemD ------------- 
systemctl start vsftpd
systemctl enable vsftpd

------------- On SysVInit ------------- 
service vsftpd start
chkconfig --level 35 vsftpd on

3. A continuación, si tiene habilitado el firewall UFW (no está habilitado de forma predeterminada) en el servidor, debe abrir los puertos 21 y 20. donde están escuchando los demonios FTP, para permitir el acceso a los servicios FTP desde máquinas remotas, luego agregue las nuevas reglas de firewall de la siguiente manera:

sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw status

Paso 2: Configurar y proteger el servidor VsFTP en Ubuntu

4. Ahora realicemos algunas configuraciones para configurar y proteger nuestro servidor FTP. Primero crearemos una copia de seguridad del archivo de configuración original /etc/vsftpd/vsftpd.conf como entonces:

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig

A continuación, abramos el archivo de configuración vsftpd.

sudo vi /etc/vsftpd.conf
OR
sudo nano /etc/vsftpd.conf

Agregue/modifique las siguientes opciones con estos valores:

anonymous_enable=NO             # disable  anonymous login
local_enable=YES		# permit local logins
write_enable=YES		# enable FTP commands which change the filesystem
local_umask=022		        # value of umask for file creation for local users
dirmessage_enable=YES	        # enable showing of messages when users first enter a new directory
xferlog_enable=YES		# a log file will be maintained detailing uploads and downloads
connect_from_port_20=YES        # use port 20 (ftp-data) on the server machine for PORT style connections
xferlog_std_format=YES          # keep standard log file format
listen=NO   			# prevent vsftpd from running in standalone mode
listen_ipv6=YES		        # vsftpd will listen on an IPv6 socket instead of an IPv4 one
pam_service_name=vsftpd         # name of the PAM service vsftpd will use
userlist_enable=YES  	        # enable vsftpd to load a list of usernames
tcp_wrappers=YES  		# turn on tcp wrappers

5. Ahora, configure VSFTPD para permitir/denegar el acceso FTP a los usuarios según el archivo de lista de usuarios /etc/vsftpd.userlist.

Tenga en cuenta que, de forma predeterminada, a los usuarios enumerados en userlist_file=/etc/vsftpd.userlist se les niega el acceso de inicio de sesión con la opción userlist_deny=YES si userlist_enable=YES .

Sin embargo, la opción userlist_deny=NO distorsiona el significado de la configuración predeterminada, por lo que solo los usuarios cuyo nombre de usuario aparezca explícitamente en userlist_file=/etc/vsftpd.userlist podrán inicie sesión en el servidor FTP.

userlist_enable=YES                   # vsftpd will load a list of usernames, from the filename given by userlist_file
userlist_file=/etc/vsftpd.userlist    # stores usernames.
userlist_deny=NO   

Importante: Cuando los usuarios inician sesión en el servidor FTP, se les coloca en una cárcel chroot, este es el directorio raíz local que actuará como su directorio de inicio para la sesión FTP. solo.

A continuación, veremos dos escenarios posibles sobre cómo configurar el directorio chrooted jail (raíz local), como se explica a continuación.

6. En este punto, agreguemos/modifiquemos/descomentemos estas dos opciones siguientes para restringir a los usuarios de FTP a sus directorios de inicio.

chroot_local_user=YES
allow_writeable_chroot=YES

La opción chroot_local_user=YES significa importante que los usuarios locales serán colocados en una cárcel chroot, su directorio de inicio predeterminado después de iniciar sesión.

Y también debemos entender que VSFTPD no permite que se pueda escribir en el directorio chroot jail, de forma predeterminada por razones de seguridad; sin embargo, podemos usar la opción allow_writeable_chroot=YES para deshabilitar esta configuración.

Guarde el archivo y ciérrelo. Luego tenemos que reiniciar los servicios VSFTPD para que los cambios anteriores surtan efecto:

------------- On SystemD ------------- 
systemctl restart vsftpd

------------- On SysVInit ------------- 
service vsftpd restart

Paso 3: Probar el servidor VsFTP en Ubuntu

7. Ahora probaremos el servidor FTP creando un usuario FTP con el comando useradd de la siguiente manera:

sudo useradd -m -c "Aaron Kili, Contributor" -s /bin/bash aaronkilik
sudo passwd aaronkilik

Luego, tenemos que listar explícitamente al usuario aaronkilik en el archivo /etc/vsftpd.userlist con el comando echo y el comando tee como se muestra a continuación:

echo "aaronkilik" | sudo tee -a /etc/vsftpd.userlist
cat /etc/vsftpd.userlist

8. Ahora es el momento de probar que nuestras configuraciones anteriores funcionan según lo requerido. Comenzaremos probando inicios de sesión anónimos; Podemos ver claramente en el resultado a continuación que no se permiten inicios de sesión anónimos en el servidor FTP:

ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.102:aaronkilik) : anonymous
530 Permission denied.
Login failed.
ftp> bye
221 Goodbye.

9. A continuación, probemos si a un usuario que no figura en el archivo /etc/vsftpd.userlist se le concederá permiso para iniciar sesión, lo cual no es cierto según el resultado siguiente. :

ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : user1
530 Permission denied.
Login failed.
ftp> bye
221 Goodbye.

10. Ahora llevaremos a cabo una prueba final para determinar si un usuario incluido en el archivo /etc/vsftpd.userlist realmente se ubica en su directorio personal después de acceso. Y esto es cierto según el resultado a continuación:

ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.102:aaronkilik) : aaronkilik
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls

Advertencia: Configurar la opción allow_writeable_chroot=YES puede ser tan peligroso que tiene posibles implicaciones de seguridad, especialmente si los usuarios tienen permiso de carga, o más aún, acceso al shell. Úselo sólo si sabe exactamente lo que está haciendo.

Debemos tener en cuenta que estas implicaciones de seguridad no son específicas de VSFTPD, sino que también pueden afectar a todos los demás demonios FTP que ofrecen colocar a los usuarios locales en cárceles chroot.

Por este motivo, en la sección siguiente, explicaremos un método más seguro para configurar un directorio raíz local diferente y no modificable para un usuario.

Paso 4: Configurar los directorios de inicio de usuarios FTP en Ubuntu

11. Ahora, abra el archivo de configuración VSFTPD una vez más.

sudo vi /etc/vsftpd.conf
OR
sudo nano /etc/vsftpd.conf

y comente la opción no segura usando el carácter # como se muestra a continuación:

#allow_writeable_chroot=YES

A continuación, cree el directorio raíz local alternativo para el usuario (aaronkilik, el suyo posiblemente no sea el mismo) y establezca los permisos necesarios desactivando los permisos de escritura para todos los demás usuarios en este directorio:

sudo mkdir /home/aaronkilik/ftp
sudo chown nobody:nogroup /home/aaronkilik/ftp
sudo chmod a-w /home/aaronkilik/ftp

12. Luego, cree un directorio bajo la raíz local con los permisos adecuados donde el usuario almacenará sus archivos:

sudo mkdir /home/aaronkilik/ftp/files
sudo chown -R aaronkilk:aaronkilik /home/aaronkilik/ftp/files
sudo chmod -R 0770 /home/aaronkilik/ftp/files/

Luego, agregue/modifique las siguientes opciones en el archivo de configuración VSFTPD con sus valores correspondientes:

user_sub_token=$USER          # inserts the username in the local root directory 
local_root=/home/$USER/ftp    # defines any users local root directory

Guarde el archivo y ciérrelo. Y reinicie los servicios VSFTPD con la configuración reciente:

------------- On SystemD ------------- 
systemctl restart vsftpd

------------- On SysVInit ------------- 
service vsftpd restart

13. Ahora, realicemos una verificación final y asegurémonos de que el directorio raíz local del usuario sea el directorio FTP que creamos en su directorio de inicio.

ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:aaronkilik) : aaronkilik
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls

¡Eso es todo! Recuerde compartir su opinión sobre esta guía a través del formulario de comentarios a continuación o posiblemente brindarnos cualquier información importante sobre el tema.

Por último, pero no menos importante, no te pierdas nuestro próximo artículo, donde describiremos cómo proteger un servidor FTP usando conexiones SSL/TLS en Ubuntu 16.04/16.10, hasta entonces, estad siempre atentos a TecMint.