FTP (Protocolo de transferencia de archivos) es un protocolo de red cliente-servidor que permite a los usuarios transferir archivos hacia y desde una máquina remota.
Hay muchos servidores FTP de código abierto disponibles para Linux. Los servidores más populares y comúnmente utilizados son PureFTPd , ProFTPD y vsftpd .
En este tutorial, instalaremos vsftpd (Very Secure Ftp Daemon) en CentOS 8. Es un servidor FTP estable, seguro y rápido. También le mostraremos cómo configurar vsftpd para restringir a los usuarios a su directorio de inicio y encriptar la transmisión de datos con SSL/TLS.
Instalación de vsftpd en CentOS 8
El paquete vsftpd está disponible en los repositorios predeterminados de CentOS. Para instalarlo, ejecute el siguiente comando como root o usuario con privilegios sudo :
sudo dnf install vsftpdUna vez que el paquete esté instalado, inicie el demonio vsftpd y habilítelo para que se inicie automáticamente en el momento del arranque:
sudo systemctl enable vsftpd --nowVerifica el estado del servicio:
sudo systemctl status vsftpdEl resultado se verá así, mostrando que el servicio vsftpd está activo y ejecutándose:
● vsftpd.service - Vsftpd ftp daemon
Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2020-03-30 15:16:51 EDT; 10s ago
Process: 2880 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
...
Configuración de vsftpd
La configuración del servidor vsftpd se almacena en el /etc/vsftpd/vsftpd.confarchivo de configuración. La mayoría de las configuraciones están bien documentadas dentro del archivo. Para conocer todas las opciones disponibles, visite la página oficial de vsftpd .
En las siguientes secciones, repasaremos algunas configuraciones importantes necesarias para configurar una instalación segura de vsftpd.
Comience abriendo el archivo de configuración de vsftpd:
sudo nano /etc/vsftpd/vsftpd.conf1. Acceso FTP
Permitiremos el acceso al servidor FTP solo a los usuarios locales, busque las directivas anonymous_enabley local_enabley asegúrese de que su configuración coincida con las líneas a continuación:
anonymous_enable=NO
local_enable=YES
2. Habilitación de cargas
Descomente la write_enableconfiguración para permitir cambios en el sistema de archivos, como cargar y eliminar archivos.
write_enable=YES
3. Cárcel de Chroot
Evite que los usuarios de FTP accedan a cualquier archivo fuera de sus directorios de inicio descomentando la chrootdirectiva.
chroot_local_user=YES
De manera predeterminada, cuando chroot está habilitado, vsftpd se negará a cargar archivos si se puede escribir en el directorio en el que están bloqueados los usuarios. Esto es para prevenir una vulnerabilidad de seguridad.
Use uno de los métodos a continuación para permitir cargas cuando el chroot está habilitado.
Método 1. - El método recomendado para permitir la carga es mantener habilitado el chroot y configurar los directorios FTP. En este tutorial, crearemos un
ftpdirectorio dentro de la página de inicio del usuario, que servirá como chroot y unuploadsdirectorio de escritura para cargar archivos./etc/vsftpd/vsftpd.confuser_sub_token=$USER local_root=/home/$USER/ftpMétodo 2. - Otra opción es agregar la siguiente directiva en el archivo de configuración vsftpd. Use esta opción si debe otorgar acceso de escritura a su usuario a su directorio de inicio.
/etc/vsftpd/vsftpd.confallow_writeable_chroot=YES
4. Conexiones FTP pasivas
vsftpd puede usar cualquier puerto para conexiones FTP pasivas. Especificaremos el rango mínimo y máximo de puertos y luego abriremos el rango en nuestro firewall.
Agregue las siguientes líneas al archivo de configuración:
pasv_min_port=30000
pasv_max_port=31000
5. Limitación del inicio de sesión del usuario
Para permitir que solo ciertos usuarios inicien sesión en el servidor FTP, agregue las siguientes líneas después de la userlist_enable=YESlínea:
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO
Cuando esta opción está habilitada, debe especificar explícitamente qué usuarios pueden iniciar sesión agregando los nombres de usuario al /etc/vsftpd/user_listarchivo (un usuario por línea).
6. Protección de transmisiones con SSL/TLS
Para encriptar las transmisiones FTP con SSL/TLS, deberá tener un certificado SSL y configurar el servidor FTP para usarlo.
Puede utilizar un certificado SSL existente firmado por una autoridad de certificación de confianza o crear un certificado autofirmado.
Si tiene un dominio o subdominio que apunta a la dirección IP del servidor FTP, puede generar fácilmente un certificado SSL gratuito de Let's Encrypt .
En este tutorial, generaremos un certificado SSL autofirmado utilizando la opensslherramienta.
El siguiente comando creará una clave privada de 2048 bits y un certificado autofirmado válido por 10 años. Tanto la clave privada como el certificado se guardarán en un mismo archivo:
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pemUna vez que se crea el certificado SSL, abra el archivo de configuración de vsftpd:
sudo nano /etc/vsftpd/vsftpd.confEncuentre las directivas rsa_cert_filey rsa_private_key_file, cambie sus valores a la pamruta del archivo y establezca la ssl_enabledirectiva en YES:
rsa_cert_file=/etc/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/vsftpd.pem
ssl_enable=YES
Si no se especifica lo contrario, el servidor FTP utilizará solo TLS para realizar conexiones seguras.
Reinicie el servicio vsftpd
Una vez que haya terminado de editar, el archivo de configuración de vsftpd (excluyendo los comentarios) debería verse así:
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
chroot_local_user=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO
tcp_wrappers=YES
user_sub_token=$USER
local_root=/home/$USER/ftp
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
Guarde el archivo y reinicie el servicio vsftpd para que los cambios surtan efecto:
sudo systemctl restart vsftpdApertura del cortafuegos
how-to-configure-and-manage-firewall-on-centos-8 Si está ejecutando un, deberá permitir el tráfico FTP.
Para abrir puerto 21(puerto de comando FTP), puerto 20(puerto de datos FTP) y 30000-31000(rango de puertos pasivos), en su firewall ingrese los siguientes comandos:
sudo firewall-cmd --permanent --add-port=20-21/tcpsudo firewall-cmd --permanent --add-port=30000-31000/tcp
Vuelva a cargar las reglas del firewall escribiendo:
firewall-cmd --reloadCreación de un usuario FTP
Para probar el servidor FTP, crearemos un nuevo usuario.
- Si ya tiene un usuario al que desea otorgar acceso FTP, omita el primer paso.
- Si configuró
allow_writeable_chroot=YESen su archivo de configuración, omita el tercer paso.
Crear un nuevo usuario llamado
newftpuser:sudo adduser newftpuserA continuación, deberá establecer la contraseña de usuario :
sudo passwd newftpuserAgregue el usuario a la lista de usuarios FTP permitidos:
echo "newftpuser" | sudo tee -a /etc/vsftpd/user_listCree el árbol de directorios FTP y establezca los permisos correctos :
sudo mkdir -p /home/newftpuser/ftp/uploadsudo chmod 550 /home/newftpuser/ftpsudo chmod 750 /home/newftpuser/ftp/uploadsudo chown -R newftpuser: /home/newftpuser/ftpComo se discutió en la sección anterior, el usuario podrá cargar sus archivos en el
ftp/uploaddirectorio.
En este punto, su servidor FTP es completamente funcional y debería poder conectarse a su servidor con cualquier cliente FTP que pueda configurarse para usar el cifrado TLS, como FileZilla .
Deshabilitar el acceso de Shell
De forma predeterminada, al crear un usuario, si no se especifica explícitamente, el usuario tendrá acceso SSH al servidor.
Para deshabilitar el acceso al shell, crearemos un nuevo shell que simplemente imprimirá un mensaje diciéndole al usuario que su cuenta está limitada solo al acceso FTP.
Ejecute los siguientes comandos para crear el /bin/ftponlyshell y hacerlo ejecutable:
echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a /bin/ftponlysudo chmod a+x /bin/ftponly
Agregue el nuevo shell a la lista de shells válidos en el /etc/shellsarchivo:
echo "/bin/ftponly" | sudo tee -a /etc/shellsCambie el shell de usuario a /bin/ftponly:
sudo usermod newftpuser -s /bin/ftponlyUse el mismo comando para cambiar el shell para otros usuarios a los que desea dar solo acceso FTP.
Conclusión
Le mostramos cómo instalar y configurar un servidor FTP seguro y rápido en CentOS 8.
Para transferencias de datos más seguras y rápidas, debe usar SCP o SFTP .
Si tiene alguna pregunta o comentario, no dude en dejar un comentario.

0 Comentarios