Cómo instalar, configurar y proteger el servidor FTP en RHEL 8


FTP (siglas de "File Transfer Protocol") es un protocolo de red estándar y antiguo que se utiliza para la transferencia de archivos entre un cliente y un servidor en una red informática. Está construido sobre una arquitectura de modelo cliente-servidor, que ofrece acceso a archivos y directorios a través de un cliente FTP, para cargar archivos al servidor y descargar archivos desde él.

En nuestro artículo anterior, explicamos cómo instalar, configurar y asegurar el servidor FTP en CentOS/RHEL 7 para la transferencia de archivos de computadora entre un cliente y un servidor en una red de computadoras.

En este artículo, describiremos cómo instalar, configurar y asegurar un servidor FTP en RHEL 8 para compartir archivos básicos entre computadoras.

Instale el servidor FTP en RHEL 8

1. Para instalar un paquete FTP seguro, utilice el siguiente comando dnf.

# dnf install vsftpd

2. Cuando se complete la instalación, debe iniciar el servicio vsftpd mientras tanto, habilitarlo para que se inicie automáticamente al arrancar el sistema y luego verificar el estado usando los siguientes comandos systemctl.

# systemctl start vsftpd
# systemctl enable vsftpd
# systemctl status vsftpd

3. A continuación, debe abrir el puerto FTP 21 en el firewall del sistema para permitir el acceso a los servicios FTP desde sistemas externos.

# firewall-cmd --zone=public --permanent --add-port=21/tcp
# firewall-cmd --zone=public --permanent --add-port=45073/tcp
# firewall-cmd --reload

Configurar el servidor FTP en RHEL 8

4. Para configurar un servidor FTP, debe realizar la copia de seguridad del archivo de configuración FTP principal /etc/vsftpd/vsftpd.conf utilizando el siguiente comando de copia.

# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.orig

5. A continuación, abra el archivo de configuración con su editor de línea de comandos favorito.

# vi /etc/vsftpd/vsftpd.conf

Configure los siguientes parámetros con estos valores correspondientes (consulte man vsftpd.conf para conocer el significado de los parámetros de configuración):

anonymous_enable=NO             
local_enable=YES		
write_enable=YES		
local_umask=022		        
dirmessage_enable=YES	        
xferlog_enable=YES		
connect_from_port_20=YES        
xferlog_std_format=YES          
listen=NO   			
listen_ipv6=YES		        
pam_service_name=vsftpd        

6. A continuación, debe configurar FTP para permitir/denegar el acceso de los usuarios a los servicios FTP según el archivo de lista de usuarios /etc/vsftpd.userlist.

De forma predeterminada, a los usuarios enumerados en el archivo /etc/vsftpd.userlist se les niega el acceso con la opción userlist_deny establecida en YES , si userlist_enable u003d SÍ , habilita el acceso.

Pero, configurar el parámetro userlist_deny u003d NO altera la configuración, lo que significa que solo los usuarios enumerados explícitamente en userlist_file u003d/etc/vsftpd.userlist podrán iniciar sesión.

Por lo tanto, agregue las siguientes líneas en su archivo de configuración vsftpd.conf (o si ya existen, descomente y establezca sus valores como se muestra):

userlist_enable=YES                   # allow access to list of usernames from the userlist_file
userlist_file=/etc/vsftpd.userlist    # stores usernames.
userlist_deny=NO   

7. Ahora agregue las siguientes líneas en su archivo de configuración vsftpd.conf para restringir a los usuarios de FTP a sus directorios de inicio.

chroot_local_user=YES		#means local users will be placed in a chroot jail, their home directory after login by default settings.
user_sub_token=$USER         	
local_root=/home/$USER/ftp   	

Guarde los cambios en el archivo y ciérrelo.

8. Configure la siguiente regla booleana de SELinux para permitir que FTP lea/escriba archivos del directorio personal del usuario.

# semanage boolean -m ftpd_full_access --on

9. Finalmente reinicie el servicio vsftpd para afectar todos los cambios que hicimos hasta ahora:

# systemctl restart vsftpd

Prueba del servidor FTP en RHEL 8

10. Para probar si la configuración de FTP anterior está funcionando bien, comience creando un usuario de FTP con el comando useradd y cree una contraseña para ese usuario.

# useradd -m -c "Tecmint HowTos" -s /bin/bash tecmint
# passwd tecmint

11. Luego agregue el usuario tecmint al archivo /etc/vsftpd.userlist usando el comando echo de la siguiente manera.

# echo "tecmint" | tee -a /etc/vsftpd.userlist
# cat /etc/vsftpd.userlist

12. Luego, cree el directorio raíz local alternativo para el usuario (tecmint, el suyo probablemente sea diferente) y establezca los permisos adecuados en este directorio.

# mkdir -p /home/tecmint/ftp
# chown nobody:nobody /home/tecmint/ftp
# chmod a-w /home/tecmint/ftp

13. A continuación, cree un directorio dentro de la ubicación raíz local, donde el usuario guardará sus archivos.

# mkdir /home/tecmint/ftp/files
# chown tecmint:tecmint /home/tecmint/ftp/files
# chmod 0700 /home/tecmint/ftp/files/

14. Ahora conéctese al servidor FTP utilizando cualquier cliente FTP de la siguiente manera.

# ftp [email protected]
Connected to 192.168.56.100
220 Welcome to TecMint.com FTP service.
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls

¡Eso es! En este artículo, describimos cómo instalar, configurar y proteger un servidor FTP en RHEL 8. En nuestro próximo artículo, mostraremos cómo proteger el servidor FTP mediante conexiones SSL/TLS. Hasta entonces, quédate con nosotros.