SERVIDOR FTP EN UBUNTU 18.04
Tabla de contenido:
- Prerrequisitos
- Instalar vsftpd en Ubuntu 18.04
- Configurar vsftpd
- 1. Acceso FTP
- 2. Habilitar cargas
- 3. Cárcel de Chroot
- 4. Conexiones FTP pasivas
- 5. Limitar el inicio de sesión del usuario
- 6. Asegurar transmisiones con SSL / TLS
- Reinicie el servicio vsftpd
- Abrir el cortafuegos
- Crear usuario FTP
- Deshabilitar el acceso a Shell
- Conclusión
FTP (Protocolo de transferencia de archivos) es un protocolo de red estándar utilizado para transferir archivos hacia y desde una red remota. Para transferencias de datos más seguras y rápidas, use SCP o SFTP.
Hay muchos servidores FTP de código abierto disponibles para Linux. Los más populares y ampliamente utilizados son PureFTPd, ProFTPD y vsftpd. En este tutorial, instalaremos vsftpd (Very Secure Ftp Daemon). 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 personal y cifrar toda la transmisión con SSL / TLS.
Aunque este tutorial está escrito para Ubuntu 18.04, se aplican las mismas instrucciones para Ubuntu 16.04 y cualquier distribución basada en Debian, incluidos Debian, Linux Mint y Elementary OS.
Prerrequisitos
Antes de continuar con este tutorial, asegúrese de haber iniciado sesión como usuario con privilegios de sudo.
Instalar vsftpd en Ubuntu 18.04
El paquete vsftpd está disponible en los repositorios de Ubuntu. Para instalarlo, simplemente ejecute los siguientes comandos:
sudo apt update
sudo apt install vsftpd
El servicio vsftpd se iniciará automáticamente una vez que se complete el proceso de instalación. Verifíquelo imprimiendo el estado del servicio:
sudo systemctl status vsftpd
La salida se verá como a continuación, mostrando que el servicio vsftpd está activo y ejecutándose:
* vsftpd.service - vsftpd FTP server Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2018-10-15 03:38:52 PDT; 10min ago Main PID: 2616 (vsftpd) Tasks: 1 (limit: 2319) CGroup: /system.slice/vsftpd.service `-2616 /usr/sbin/vsftpd /etc/vsftpd.conf
Configurar vsftpd
El servidor vsftpd se puede configurar editando el archivo
/etc/vsftpd.conf
. La mayoría de las configuraciones están bien documentadas dentro del archivo de configuración. Para ver 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 vsftpd:
1. Acceso FTP
Permitiremos el acceso al servidor FTP solo a los usuarios locales,
local_enable
directivas
anonymous_enable
y
local_enable
y verificaremos que su configuración coincida con las siguientes líneas:
anonymous_enable=NO local_enable=YES
2. Habilitar cargas
write_enable
configuración
write_enable
para permitir cambios en el sistema de archivos, como cargar y eliminar archivos.
3. Cárcel de Chroot
Para evitar que los usuarios de FTP accedan a cualquier archivo fuera de sus directorios personales, elimine el comentario de la configuración de
chroot
.
chroot_local_user=YES
De manera predeterminada, para evitar una vulnerabilidad de seguridad, cuando chroot está habilitado, vsftpd se negará a cargar archivos si el directorio en el que están bloqueados los usuarios es editable.
Use uno de los métodos a continuación para permitir cargas cuando Chroot está habilitado.
-
Método 1. - El método recomendado para permitir la carga es mantener chroot habilitado y configurar directorios FTP. En este tutorial, crearemos un directorio
/etc/vsftpd.confftp
dentro de la página de inicio del usuario que servirá como chroot y un directorio deuploads
escritura para cargar archivos.user_sub_token=$USER local_root=/home/$USER/ftp
Mé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.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:
/etc/vsftpd.conf
pasv_min_port=30000 pasv_max_port=31000
5. Limitar el inicio de sesión del usuario
Para permitir que solo ciertos usuarios inicien sesión en el servidor FTP, agregue las siguientes líneas al final del archivo:
userlist_enable=YES 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 archivo
/etc/vsftpd.user_list
(un usuario por línea).
6. Asegurar transmisiones con SSL / TLS
Para cifrar las transmisiones FTP con SSL / TLS, deberá tener un certificado SSL y configurar el servidor FTP para usarlo.
Puede usar un certificado SSL existente firmado por una autoridad de certificación de confianza o crear un certificado autofirmado.
Generaremos un certificado SSL autofirmado con el comando
openssl
.
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/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
Una vez que se crea el certificado SSL, abra el archivo de configuración vsftpd:
sudo nano /etc/vsftpd.conf
Encuentre las directivas
rsa_cert_file
y
rsa_private_key_file
, cambie sus valores a la ruta del archivo
pam
y establezca la directiva
ssl_enable
en
YES
:
rsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem ssl_enable=YES
Si no se especifica lo contrario, el servidor FTP usará solo TLS para hacer conexiones seguras.
Reinicie el servicio vsftpd
Una vez que haya terminado de editar, el archivo de configuración vsftpd (excluyendo comentarios) debería verse así:
/etc/vsftpd.conf
listen=NO listen_ipv6=YES anonymous_enable=NO local_enable=YES write_enable=YES dirmessage_enable=YES use_localtime=YES xferlog_enable=YES connect_from_port_20=YES chroot_local_user=YES secure_chroot_dir=/var/run/vsftpd/empty pam_service_name=vsftpd rsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem ssl_enable=YES user_sub_token=$USER local_root=/home/$USER/ftp pasv_min_port=30000 pasv_max_port=31000 userlist_enable=YES userlist_file=/etc/vsftpd.user_list userlist_deny=NO
Guarde el archivo y reinicie el servicio vsftpd para que los cambios surtan efecto:
Abrir el cortafuegos
Para abrir el puerto
21
(puerto de comando FTP), el puerto
20
(puerto de datos FTP) y
30000-31000
(rango de puertos pasivos), ejecute los siguientes comandos:
sudo ufw allow 20:21/tcp
sudo ufw allow 30000:31000/tcp
Para evitar quedar bloqueado, abra el puerto
22
:
sudo ufw allow OpenSSH
Vuelva a cargar las reglas de UFW deshabilitando y volviendo a habilitar UFW:
sudo ufw disable
sudo ufw enable
Para verificar los cambios ejecute:
sudo ufw status
Status: active To Action From -- ------ ---- 20:21/tcp ALLOW Anywhere 30000:31000/tcp ALLOW Anywhere OpenSSH ALLOW Anywhere 20:21/tcp (v6) ALLOW Anywhere (v6) 30000:31000/tcp (v6) ALLOW Anywhere (v6) OpenSSH (v6) ALLOW Anywhere (v6)
Crear usuario FTP
Para probar nuestro servidor FTP crearemos un nuevo usuario.
- Si ya tiene un usuario al que desea otorgar acceso FTP, omita el primer paso. Si configura
allow_writeable_chroot=YES
en su archivo de configuración, omita el tercer paso.
-
Cree un nuevo usuario llamado
newftpuser
:sudo adduser newftpuser
Agregue el usuario a la lista de usuarios FTP permitidos:
echo "newftpuser" | sudo tee -a /etc/vsftpd.user_list
Cree el árbol del directorio FTP y establezca los permisos correctos:
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
Como se discutió en la sección anterior, el usuario podrá subir sus archivos al directorio
ftp/upload
.
En este punto, su servidor FTP es completamente funcional y debería poder conectarse a su servidor utilizando cualquier cliente FTP que pueda configurarse para usar el cifrado TLS como FileZilla.
Deshabilitar el acceso a 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 que le indicará al usuario que su cuenta está limitada únicamente al acceso FTP.
Cree el shell
/bin/ftponly
ejecutable:
echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly
echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly
sudo chmod a+x /bin/ftponly
Agregue el nuevo shell a la lista de shells válidos en el
/etc/shells
:
echo "/bin/ftponly" | sudo tee -a /etc/shells
Cambie el shell del usuario a
/bin/ftponly
:
sudo usermod newftpuser -s /bin/ftponly
Use el mismo comando para cambiar el shell de todos los usuarios a los que desea dar solo acceso FTP.
Conclusión
En este tutorial, aprendió a instalar y configurar un servidor FTP seguro y rápido en su sistema Ubuntu 18.04.
ftp ubuntuCómo configurar y usar el servidor ftp en android
¿Desea transferir archivos desde su dispositivo Android a la PC sin cable USB? Pruebe el método del servidor FTP para compartir archivos entre Android y PC de forma inalámbrica.
Cómo configurar el servidor ftp con vsftpd en centos 7
En este tutorial instalaremos vsftpd. 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 personal y cifrar toda la transmisión con SSL / TLS.
Cómo configurar el servidor ftp con vsftpd en debian 9
En este tutorial instalaremos vsftpd. 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 personal y cifrar toda la transmisión con SSL / TLS.