GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo configurar un servidor FTP con VSFTPD

¿Alguna vez olvidaste un documento importante en la computadora de tu casa y estás trabajando en la oficina? ¿O simplemente desea compartir un archivo con alguien que está sentado a su lado? Un servidor FTP como Very Secure FTP Daemon (VSFTPD) es la solución perfecta.

En este tutorial, aprenderá cómo instalar y configurar un servidor FPT usando VSFTPD en su servidor Linux para que pueda compartir archivos de forma segura entre computadoras.

¡Siga leyendo y no permita que sus archivos vuelvan a estar cautivos en la computadora de su hogar!

Requisitos

Este tutorial será una demostración práctica. Si desea seguirnos, asegúrese de tener lo siguiente.

  • Una máquina Linux:este tutorial usa Ubuntu 20.04 LTS, pero cualquier distribución de Linux funcionará.
  • Un usuario no root con privilegios sudo.

Instalación de VSFTPD en Ubuntu

VSFTPD es un servidor FTP para sistemas similares a Unix, pero no está instalado de forma predeterminada. Instalar VSFTPD en Ubuntu es similar a cómo instala otros paquetes. Inicie este tutorial actualizando su administrador de paquetes APT antes de instalar VSFTPD.

1. Ejecute el apt update comando para actualizar APT. Este comando recupera listas de paquetes de sus repositorios configurados y actualiza la caché de paquetes local.

sudo apt update -y

2. A continuación, ejecute el apt install Comando a continuación para instalar VSFTPD en su máquina. Este comando también extraerá todas las dependencias requeridas para el servicio FTP.

De forma predeterminada, el paquete VSFTPD está disponible en la mayoría de las distribuciones modernas basadas en Debian. Así que puede instalarlo sin repositorios de paquetes adicionales y dejar que APT se encargue del resto.

3. Finalmente, ejecuta el systemctl Comando a continuación para verificar que el servicio VSFTPD se está ejecutando y configurado correctamente.

sudo systemctl status vsftpd 

Verá un resultado similar al siguiente, que muestra que vsftpd.service está activo (en ejecución) y escuchando solicitudes.

Puertos abiertos para conexiones de clientes FTP

Ahora que tiene instalada la última versión de VSFTPD, ahora puede configurar su firewall. Utilizará UFW, la herramienta de configuración de firewall predeterminada para Ubuntu, para agregar reglas de firewall para abrir puertos para conexiones seguras de clientes FTP.

1. Ejecute el ufw status Comando para ver qué reglas de firewall están actualmente activas.

sudo ufw status

A continuación, puede ver que el cortafuegos está activo pero no tiene ninguna regla para permitir conexiones de forma predeterminada.

2. A continuación, ejecute el ufw allow Comando a continuación para permitir que los tres puertos atraviesen el cortafuegos. VSFTPD requiere conexiones FTP en los puertos 20 , 21 y 990 .

sudo ufw allow 20,21,990/tcp

3. Ejecute el ufw comando a continuación para abrir el 40000:50000 rango de puertos.

VSFTPD requiere que se abra el rango de puertos 40000:50000 para que los clientes FTP puedan realizar conexiones de datos al servidor en modo pasivo.

sudo ufw allow 40000:50000/tcp

4. Finalmente, ejecuta el ufw status verbose Comando a continuación para verificar que las reglas de su firewall estén activas y verifique si hay errores.

sudo ufw status verbose

Configuración del servidor VSFTDP

Ha permitido con éxito el tráfico a través del firewall, pero debe configurar su servidor VSFTPD antes de usarlo.

El /etc/vsftpd.conf El archivo es el archivo de configuración principal para VSFTPD. Pero también puedes configurar tu servidor FTP a través de otros comandos si prefieres hacer las cosas de forma dinámica. O si prefiere especificar reglas que no están disponibles en el archivo de configuración.

Durante la edición del archivo /etc/vsftpd.conf, elimine el comentario de cada directiva para habilitarlas eliminando el símbolo # delante de ellas.

1. Ejecute el sudo cp comando a continuación para hacer una copia de seguridad del archivo de configuración original (/etc/vsftpd.conf /etc/vsftpd.conf.bak ).

Siempre debe hacer una copia de seguridad de cualquier archivo de configuración crítico antes de perder el tiempo.

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak

2. A continuación, abra el /etc/vsftpd.conf archivo en su editor de texto favorito. Esta demostración usa nano para editar el archivo de configuración.

sudo nano /etc/vsftpd.conf

3. Busque y cambie el anonymous_enable valor de directiva a NO. Los usuarios anónimos se utilizan comúnmente para compartir archivos públicos. No quieres ese usuario anónimo en tu servidor. En cambio, querrá que su servidor FPT sea seguro.

Establezca el valor de la directiva local_enable en SÍ para permitir que las personas con cuentas en su servidor transfieran archivos a través de FTP. Con esta configuración, solo los usuarios autorizados pueden iniciar sesión en su servidor FTP.

4. Ahora, cambie write_enable directiva a para que sus usuarios puedan cargar y guardar archivos en su servidor FTP. Esta directiva es la más importante, ya que controla el acceso a la funcionalidad de carga.

5. Cambie el chroot_local_user directiva a ya que su usuario de FPT no debe ejecutarse como root. Crear un nuevo usuario, posiblemente privilegiado, para que lo use el servicio FTP es mucho más seguro (aprenderá cómo crear un usuario dedicado más adelante).

Si esta directiva no está habilitada, el usuario de FPT tendrá acceso a todo en el servidor, incluso al directorio raíz. Este comportamiento puede ser un GRAN problema de seguridad.

Con esta configuración, su usuario solo puede acceder a las carpetas que especifique (el directorio de inicio del usuario en la mayoría de los casos).

Pero cuando el valor de la directiva chroot_local_user se establece en SÍ, la directiva write_enable (paso cuatro) no funcionará porque la llamada al sistema chroot() niega el acceso de escritura (cuando está habilitada).

Como solución, agregue la siguiente directiva a su vsftpd.conf archivo, por lo que la directiva write_enable funcionará independientemente del valor de la directiva chroot_local_user.

allowed_writeable_chroot=YES

6. A continuación, agregue las siguientes directivas a su vsftpd.conf archivo para habilitar conexiones FTP pasivas.

VSFTPD puede usar cualquier puerto por encima de 1024 que no esté ocupado por otro servicio para la conexión FTP pasiva. Esta demostración utiliza el intervalo de puertos que configuró en la sección "Apertura de puertos para conexiones de clientes FTP" (paso tres).

pasv_min_port=35000
pasv_max_port=40000

7. Agregue las siguientes líneas en la parte inferior de vsftpd.conf para permitir que solo los usuarios autorizados inicien sesión en el servidor FTP.

userlist_enable=YES
# Add the user to the vsftpd.userlist to allow a specific user 
# to use the system login account to access your FTP service.
userlist_file=/etc/vsftpd.userlist
# NO - anyone can log in with an anonymous account.
# YES - the user will be denied to login when their name exists in this file. 
userlist_deny=NO

8. Finalmente, guarde y cierre el vsftpd.conf y ejecute el siguiente comando para restart tu vsftpd servidor para aplicar los cambios.

sudo service vsftpd restart

Creación de un usuario dedicado para usar el servicio FTP

Ya configuró su servidor VSFTPD, pero necesitará un usuario dedicado para usar el servicio FTP en lugar de un usuario root. Creará un directorio dentro del directorio de inicio del usuario para que se pueda acceder fácilmente al directorio.

1. Ejecute el adduser Comando a continuación para crear un nuevo usuario. Puede elegir cualquier nombre de usuario que prefiera, pero esta demostración crea un usuario llamado ata . Pero recuerde no duplicar al usuario en ningún otro lugar de su servidor.

sudo adduser ata

Proporcione una contraseña segura y tome nota de ella. Usarás esta contraseña para conectarte a tu servidor FTP.

También debe proporcionar algunos detalles para el nuevo usuario o mantener los detalles predeterminados presionando ENTER. Escriba Y y presione ENTER para confirmar la información del usuario.

2. A continuación, ejecute el siguiente comando para agregar el ata usuario al vsftpd.userlist expediente.

Como recordará, este archivo especifica qué usuarios pueden iniciar sesión a través de FTP cuando el valor de la directiva userlist_deny se establece en NO. En este punto, solo el usuario ata puede iniciar sesión en su servidor FTP y se negará el acceso a todos los demás usuarios anónimos.

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

3. Ejecute los siguientes comandos para establecer los permisos adecuados para el nuevo /home/ata/ftp directorio.

Los siguientes comandos aseguran que solo su usuario de FTP dedicado tenga acceso al directorio /home/ata/ftp, y permite que el usuario transfiera archivos a/desde él.

# Sets the owner of the /home/ata/ftp directory to be nobody.
sudo chown nobody:nogroup /home/ata/ftp
# Ensures that only the owner (your FTP user) 
# has write(w) access(a) to the /home/ata/ftp directory.
sudo chmod a-w /home/ata/ftp

4. Ahora, ejecuta el chown comando para establecer el propietario y el grupo del /home/ata/ftp/upload directorio a su usuario FTP (ata ). El comando también establece los permisos correctos para el /home/ata/ftp/upload directorio.

sudo chown ata:ata /home/ata/ftp/upload

5. Ejecute el echo Comando a continuación para crear un archivo de prueba básico llamado ata.txt .

El siguiente comando crea un nuevo archivo llamado ata.txt en su directorio FTP e incluye algo de texto (archivo de prueba vsftpd) en el archivo de texto.

echo "vsftpd test file" | sudo tee /home/ata/ftp/upload/ata.txt

En este punto, ha configurado completamente su servidor FPT y sus usuarios pueden conectarse a él.

Conexión al servidor FTP

Después de configurar un usuario FTP dedicado, finalmente es hora de conectarse a su servidor FTP. Pero primero intentará conectarse a su servidor FTP usando un usuario anónimo para probar si su servidor FTP es seguro.

1. Ejecute el ftp -p Comando a continuación para conectarse a su servidor FTP. Reemplazar your-server-ip con la dirección IP real de su servidor.

ftp -p your-server-ip

Intente iniciar sesión como usuario anónimo y verá el siguiente mensaje de error. Este resultado confirma que su servidor FTP es seguro ya que solo su usuario FTP dedicado puede acceder a su servidor.

2. Ejecute el bye comando para salir del cliente FTP.

bye

3. Vuelva a ejecutar el ftp comando a continuación como lo hizo en el paso uno. Pero esta vez, inicia sesión como tu usuario de FTP dedicado (ata).

ftp -p your-server-ip

Recibirá un mensaje 230 Inicio de sesión exitoso como se muestra a continuación, que confirma que su servidor FTP funciona según lo previsto.

4. Ahora, ejecute cada comando a continuación para confirmar el ata.txt el archivo existe en ftp/upload directorio.

El ata.txt El archivo es lo que creó anteriormente en la sección "Creación de un usuario dedicado para usar el servicio FTP" (paso cinco).

# Change to the ftp/upload directory as the working directory.
cd ftp/upload
# List all files in the working directory.
ls

5. Ejecute el get comando a continuación para descargar el archivo (ata.txt ) desde su servidor FTP y guárdelo en su máquina local.

 get ata.txt

A continuación, puede ver un mensaje de confirmación que dice Transferencia completa.

6. A continuación, ejecute el put comando a continuación para cargar el ata.txt archivo de su máquina local como un nuevo archivo llamado ata2.txt a su servidor FTP.

put ata.txt ata2.txt

7. Finalmente, vuelva a ejecutar el ls comando para listar todos los archivos en el directorio actual y verificar que ata2.txt ha sido cargado con éxito por su usuario.

ls

Si las transferencias de archivos anteriores (pasos siete a ocho) se realizaron correctamente, verá dos archivos de texto:uno llamado ata.txt y otro llamado ata2.txt, como se muestra a continuación.

Deshabilitar el acceso de shell

Cuando crea un nuevo usuario FTP, su servidor FTP permite automáticamente que ese usuario inicie sesión y ejecute el shell. Como resultado, además de cargar y descargar archivos, sus usuarios también pueden ejecutar comandos del sistema potencialmente peligrosos en su servidor FTP.

Cuando no esté utilizando el servidor FTP, puede deshabilitar el acceso de shell para evitar que los usuarios inicien sesión mediante SSH. Hacerlo es especialmente importante si tiene habilitado el inicio de sesión sin contraseña para su usuario de FTP dedicado.

1. Abra otra terminal en su servidor y ejecute el siguiente comando para ssh en el servidor FPT usando el usuario FTP dedicado (ata ).

ssh [email protected]

Como se muestra a continuación, puede iniciar sesión con éxito usando el nombre de usuario ata con la contraseña que creó anteriormente en la sección "Creación de un usuario dedicado para usar el servicio FTP".

Este comportamiento indica que el usuario de ata puede ejecutar cualquier comando en su servidor, incluso cambiar las configuraciones del servidor. Un usuario de FTP comprometido puede causar mucho más daño que uno anónimo.

2. A continuación, ejecute el siguiente comando para crear un nuevo script de shell llamado ftponly.sh en el /bin directorio de su servidor FPT. Este script deshabilita cualquier inicio de sesión FTP de su usuario FTP dedicado para su servidor FTP. El script luego imprime (echo ) un mensaje de advertencia en la pantalla que dice This account is limited to FTP access only .

 echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a  /bin/ftponly .sh 

3. Ejecute el siguiente chmod comando para establecer los permisos correctos en este nuevo script de shell (/bin/ftponly ). Este comando hace que el script sea ejecutable y permite que su usuario de FTP (ata) lo ejecute.

sudo chmod a+x /bin/ftponly

4. Ahora, ejecute el siguiente comando para agregar la ruta del nuevo script de shell (ftponly ) en tu /etc/shells expediente. Esta acción garantiza que cualquier inicio de sesión que intente con su usuario ata sea rechazado desde el /bin/ftponly el script se ejecutará en su lugar.

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

5. Ejecute el usermod comando a continuación para cambiar el shell actual de su usuario FTP (ata) a /bin/ftponly caparazón.

sudo usermod ata -s /bin/ftponly 

6. Finalmente, ejecute el siguiente comando para SSH a su servidor FPT usando su usuario FTP (ata ).

ssh [email protected]

Como se muestra a continuación, su usuario de FTP dedicado no puede usar SSH en su servidor FTP. Se espera este comportamiento ya que /bin/ftponly shell script imprime un mensaje de advertencia y cierra la conexión SSH (cerrada).

Conclusión

En este tutorial, ha aprendido a instalar y configurar un servidor FTP en Ubuntu Linux utilizando VSFTPD. También aprendió cómo configurar un usuario de FTP con acceso limitado y restringir el acceso al shell del usuario de FTP.

En este punto, debería tener un servidor FTP funcional con acceso restringido.

Con este nuevo conocimiento, ahora puede configurar su servidor FTP en AWS EC2, o puede comenzar a configurar un servidor FTP en su Raspberry Pi. ¿En cuál elegirías empezar a trabajar?


Linux
  1. Cómo instalar un servidor FTP en CentOS 7 con VSFTPD

  2. Cómo instalar un servidor FTP en Ubuntu con vsftpd

  3. Cómo configurar el servidor de archivos FTP vsftpd en Redhat 7 Linux

  4. Cómo instalar un servidor FTP en Rocky Linux 8 con VSFTPD

  5. Configuración de un servidor FTP con vsFTPd en Raspberry Pi

Cómo instalar y configurar el servidor FTP en CentOS

Cómo instalar el servidor FTP vsftpd con TLS en Debian 10

Cómo instalar el servidor VsFTPD con TLS en Ubuntu 18.04 LTS

Cómo instalar el servidor vsftpd en Debian 11

¿Cómo Instalar Un Servidor Ftp?

Cómo configurar un servidor FTP con ProFTPD en Ubuntu 18.04