Cómo configurar el servidor FTP en CentOS

SConfigurar un servidor FTP (Protocolo de transferencia de archivos) en su PC con Linux le permitirá transferir archivos entre su sistema y una máquina remota. Le mostraremos cómo configurar un servidor FTP en CentOS.

Linux ya tiene una tonelada de servidores FTP de código abierto que puede usar para el trabajo. Esto incluye servidores populares como PureFTPd, ProFTPD y vsftpd.

Se le permite utilizar cualquiera de los servidores FTP que desee. Sin embargo, en este tutorial, instalaremos y usaremos vsftpd, abreviatura de Very Secure FTP Daemon. Es un servidor FTP rápido, estable y seguro que le ayudará a transferir archivos desde y hacia un sistema remoto en un santiamén.

Índice

Configuración del servidor FTP en CentOS

Entonces, sin más preámbulos, comencemos:

Instalación de vsftpd

Primero, necesitaremos instalar vsftpd en CentOS. Para hacer esto, ingrese el siguiente comando en la terminal:

$ sudo dnf install vsftpd

Imagen que muestra la instalación de vsftpd
Instalación de vsftpd en CentOS

Con vsftpd instalado en su sistema CentOS, debe configurarlo para que se inicie y arranque automáticamente. Esto se puede hacer usando el siguiente comando:

$ sudo systemctl enable vsftpd --now

Una vez hecho esto, verifique el estado del servicio vsftpd ingresando este comando:

$ sudo systemctl status vsftpd

Aparecerá una pantalla de salida similar a la siguiente. Debería ver que vsftpd no está "Activo" en su sistema CentOS.

imagen-mostrando-vsftpd-activo-y-ejecutándose-en-CentOS
vsftpd activo y ejecutándose en CentOS

Configurar vsftpd

Con vsftpd activo y ejecutándose en su sistema, deberá configurar los ajustes del servidor. Para hacerlo, deberá acceder al archivo de configuración /etc/vsftpd/vsftpd.conf. Esto se puede hacer abriendo el archivo de configuración en el editor nano ingresando el siguiente comando en la terminal:

$ sudo nano /etc/vsftpd/vsftpd.conf

Con el archivo ahora abierto en el editor, hay varios cambios que debe realizar para configurar vsftpd en su sistema. Repasemos uno por uno.

1. Configurar el acceso FTP

Primero, configuremos el servidor FTP para permitir el acceso solo a los usuarios locales. Para hacer esto, necesitará encontrar las directivas anonymous_enable y local_enable en el archivo y editarlas como se muestra en la imagen a continuación:

Imagen que muestra la configuración de acceso a FTP
Configuración de acceso FTP

Como puede ver, deberá establecer anonymous_enable = NO y local_enable = YES.

2. Habilitar subidas

A continuación, deberá configurar el servidor FTP para permitir la carga y eliminación de archivos.

Para hacer esto, deberá ubicar la directiva write_enable y cambiarla a YES, como se muestra en la imagen.

Imagen que muestra la habilitación de la configuración de cargas
Opción para habilitar cargas de vsftpd

3. Limite los inicios de sesión de los usuarios

Una vez hecho esto, querrá limitar el número total de inicios de sesión de usuarios, es decir, solo desea que ciertos usuarios inicien sesión en su servidor FTP. Para hacer esto, primero, ubique esta línea en el archivo .conf - userlist_enable = YES. Después de eso, agregue estas dos líneas en el archivo:

userlist_file=/etc/vsftpd/user_list
userlist_deny=NO

Utilice la siguiente imagen como referencia:

Imagen que muestra los inicios de sesión de usuario limitadores
Configuración para limitar los inicios de sesión de los usuarios

También puede optar por habilitar esta opción. Si lo hace, tendrá que especificar explícitamente a qué usuarios desea dar acceso al servidor FTP. Para permitir a los usuarios, deberá agregar sus nombres de usuario al archivo / etc / vsftpd / user_list con solo un nombre de usuario en cada línea.

4. Configurar conexiones FTP pasivas

Es posible que también desee configurar conexiones FTP pasivas.

Como tal, aquí le mostraremos cómo puede especificar los rangos mínimo y máximo de los puertos agregando un par de líneas dentro del archivo .conf.

Imagen-mostrando-configuración-conexiones-FTP-pasivas
Configurar conexiones FTP pasivas

Todo lo que necesita hacer es desplazarse hacia abajo hasta el final del archivo y agregar estas dos líneas, como se muestra en la imagen.

pasv_min_port=30000
pasv_max_port=31000

También discutiremos cómo puede abrir el rango en su firewall más adelante en este tutorial.

5. Configurar transmisiones seguras mediante SSL / TLS

Finalmente, surge la cuestión de proteger la conexión FTP mediante SSL / TLS. Para hacer esto, necesitará tener un certificado SSL y configurar su servidor FTP para usarlo.

Sin embargo, por el bien de este tutorial, generaremos un certificado SSL autofirmado utilizando la herramienta OpenSSL y luego lo usaremos para cifrar nuestra transmisión FTP.

Entonces, lo primero es lo primero, deberá usar OpenSSL para generar un nuevo certificado SSL. Puede hacer esto ingresando el siguiente comando en la terminal:

sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem

Imagen que muestra la creación de un certificado openssl
Creación de un certificado OpenSSL autofirmado en CentOS

La ejecución del comando anterior generará una clave privada de 2048 bits y un certificado autofirmado. Ambos tienen una validez de diez años y se guardan en el mismo archivo.

Después de crear su nuevo certificado SSL, abra el archivo de configuración vsftpd usando el comando anterior:

sudo nano /etc/vsftpd/vsftpd.conf

Desplácese hacia abajo y agregue las siguientes líneas como se muestra en la imagen:

rsa_cert_file=/etc/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/vsftpd.pem
ssl_enable=YES

Imagen-mostrando-seguridad-vsftpd-conexión-con-SSL
Configurar los ajustes de SSL para vsftpd

Y eso es. Ha configurado correctamente el certificado SSL para su servidor FTP.

6. Finalizar

Una vez hecho esto, vuelva a verificar el archivo de configuración vsftpd para ver si todas las siguientes configuraciones son como está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
userlist_enable=YES
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO
pasv_min_port=30000
pasv_max_port=31000
rsa_cert_file=/etc/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/vsftpd.pem
ssl_enable=YES

Una vez que se haya asegurado de que se hayan realizado todos los cambios anteriores en el archivo, deberá guardarlo. Una vez guardado, reinicie el servicio vsftpd usando el siguiente comando:

$ sudo systemctl restart vsftpd

Configurar el cortafuegos

Si tiene un firewall habilitado junto con el servidor FTP, entonces necesita configurar el firewall para que permita las transmisiones FTP.

Para hacer esto, deberá ingresar los siguientes comandos en la terminal:

$ sudo firewall-cmd --permanent --add-port=20-21/tcp

El comando anterior abre el puerto 21, que es el puerto de comando FTP, y el puerto 20, que es el puerto de datos FTP.

También deberá ingresar este comando:

$ sudo firewall-cmd --permanent --add-port=30000-31000/tcp

Este comando abre el rango de puertos pasivos 30000-31000, que configuramos previamente.

Imagen que muestra el firewall de configuración para vsftpd
Permitir que el servidor vsftpd pase a través del firewall CentOS

Una vez hecho esto, deberá volver a cargar el firewall con el siguiente comando:

$ firewall-cmd --reload

Cómo crear un nuevo usuario de FTP

Ahora que ha configurado su servidor vsftpd en su sistema CentOS, es hora de crear un nuevo usuario de FTP y probarlo.

Primero, creemos un nuevo usuario FTP (newftpuser) usando el siguiente comando:

$ sudo adduser newftpuser

A continuación, deberá establecer una contraseña para el nuevo usuario. Para hacer esto, use este comando:

$ sudo passwd newftpuser

Asegúrese de que la contraseña sea segura y de más de ocho caracteres.

Imagen que muestra la creación de un nuevo usuario ftp
Creando un nuevo usuario de FTP

Después de crear el nuevo usuario, deberá agregarlo a la lista de usuarios de FTP. Esto se puede hacer ingresando el siguiente comando en la terminal:

$ echo "newftpuser" | sudo tee -a /etc/vsftpd/user_list

Finalmente, deberá crear un árbol de directorios FTP donde establecerá todos los permisos correctos. Para hacer esto, deberá ingresar la siguiente serie de comandos en la terminal:

$ sudo mkdir -p /home/newftpuser/ftp/upload
$ sudo chmod 550 /home/newftpuser/ftp
$ sudo chmod 750 /home/newftpuser/ftp/upload
$ sudo chown -R newftpuser: /home/newftpuser/ftp

Imagen que muestra la creación de un árbol de directorios FTP y otorga todos los permisos
Cree un árbol de directorio FTP

A estas alturas, su servidor FTP es completamente funcional y está listo para funcionar. Ahora puede conectarse a él utilizando cualquier cliente FTP como FileZilla. Solo asegúrese de que el cliente FTP también se pueda configurar para utilizar el cifrado TLS, ya que se utiliza para cifrar las transmisiones FTP.

Deshabilitar el acceso a Shell

Una cosa que debe tener en cuenta al crear un nuevo usuario de FTP es que, a menos que se especifique explícitamente, el usuario tendrá acceso SSH al servidor.

Si desea deshabilitar el acceso de shell del usuario, deberá crear un nuevo shell que imprimirá un mensaje informándole al usuario que: "Esta cuenta está limitada al acceso FTP únicamente".

Para hacer esto, deberá ingresar el siguiente comando en la terminal:

$ echo -e '#!/bin/shnecho "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly
$ sudo chmod a+x /bin/ftponly

El comando anterior creará el shell / bin / ftponly y lo ejecutará.

A continuación, deberá agregar el nuevo shell a la lista de shells válidos que se encuentran dentro del / etc / shells expediente. Esto se hace usando el siguiente comando:

$ echo "/bin/ftponly" | sudo tee -a /etc/shells

Y como paso final, todo lo que necesita hacer es cambiar el shell del usuario a / bin / ftponly usando este comando:

$ sudo usermod newftpuser -s /bin/ftponly

Además, para los futuros usuarios de FTP, puede usar el mismo comando para cambiar su shell de modo que solo puedan tener acceso a FTP.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir