Cómo configurar VSFTPD en Debian

Cómo configurar VSFTPD en Debian

VSFTPD es el acrónimo de Daemon FTP muy seguro: es uno de los servidores FTP más utilizados en Linux y otros sistemas operativos similares a UNIX. Es de código abierto y lanzado bajo la licencia GPL, y admite usuarios virtuales y SSL para datos
encriptación. En este tutorial veremos cómo instalarlo y configurarlo en Linux.

En este tutorial aprenderás:

  • Cómo instalar VSFTPD en Debian 10
  • Cómo configurar VSFTPD
  • Cómo configurar el uso anónimo
  • Cómo configurar el inicio de sesión con usuarios locales
  • Cómo configurar usuarios virtuales
  • Cómo configurar UFW para permitir el tráfico entrante
Cómo configurar VSFTPD en Debian

Requisitos y convenciones de software utilizados

Requisitos de software y convenciones de línea de comandos de Linux
Categoría Requisitos, convenciones o versión de software utilizada
Sistema Debian 10 (Buster)
Software VSFTPD, OpenSSL, Libpam-PwdFile
Otro Permisos de raíz para instalar y configurar VSFTPD
Convenciones # - requiere que los comandos de Linux dados se ejecuten con privilegios raíz directamente como un usuario raíz o mediante el uso de sudo dominio
$-Requiere que los comandos de Linux dados se ejecuten como un usuario regular no privilegiado

Instalación

VSFTPD está disponible en los repositorios oficiales de Debian, por lo tanto, para instalarlo, podemos usar nuestro administrador de paquetes favorito; Es solo una cuestión de sincronizar los repositorios e instalar el paquete. Ambas cosas se pueden lograr por
Ejecutando los siguientes comandos:

$ sudo apt-get actualización && sudo apt-get install vsftpd 


Pocos segundos y el paquete se instalará en nuestro sistema Debian. Los scripts de instalación incluidos en el paquete también tendrán cuidado de comenzar el VSFTPD servicio automáticamente, pero debemos recordar reiniciar o recargar el servicio cada vez que cambiamos el archivo de configuración. Para poder usar el usuarios virtuales característica proporcionada por el VSFTPD También necesitamos instalar otro paquete:

$ sudo apt-get install libpam-pwdfile 

Veremos su uso en la sección dedicada de este tutorial.

Una vez que se instalen los paquetes necesarios, podemos continuar y configurar VSFTPD: veremos cómo hacerlo en la siguiente sección de este tutorial.

Configuración de VSFTPD

El archivo de configuración de VSFTPD es /etc/vsftpd.confusión. Si lo abrimos, podemos ver las diversas directivas ya contenidas en él. Veamos cuáles son los más relevantes para los casos más comunes.

Habilitar el inicio de sesión anónimo

El acceso no autenticado al servidor, como usuarios anónimos, está deshabilitado de forma predeterminada. Para habilitarlo, debemos usar el Anónimo_enable Directiva, que en el archivo de configuración se coloca en línea 25. Todo lo que tenemos que hacer es configurarlo :
debe cambiar la instrucción a:

Anónimo_enable = sí 

Otra directiva que queremos cambiar es la que nos permite establecer un directorio en lo que VSFTPD intentará navegar después de un acceso anónimo. La directiva que nos permite controlar esta configuración es anon_root. Digamos que queremos que un usuario anónimo acceda al /srv/ftp Directorio de forma predeterminada, escribiríamos:

anon_root =/srv/ftp 

Todo el inicio de sesión anónimo se asigna internamente a un usuario diseñado, que, por defecto, es ftp. Para cambiar este mapeo tenemos que usar el ftp_username opción y establecerlo en el nombre del usuario que queremos asignar a los usuarios anónimos a.

Por defecto, un usuario anónimo no podrá escribir nada en el servidor, por razones de seguridad obvias. Si desea cambiar este comportamiento (no recomendado), hay pocas opciones que deben cambiarse. En primer lugar el general Write_enable la directiva debe establecerse en . Esta directiva se comenta en línea 31 del archivo de configuración, por lo que todo lo que tiene que hacer es eliminar el comentario.

# Descommento esto para habilitar cualquier forma de comando FTP Write. write_enable = sí 


Una vez que esta directiva está habilitada, todo lo que tenemos que hacer es trabajar en otras dos opciones: anon_upload_enable y anon_mkdir_write_enable. Cuando el primero está listo para un usuario anónimo podrá subir archivos, pero solo si el usuario en el que se asigna (como dijimos, FTP, por defecto) tiene permisos de escritura en el directorio de destino. Para activar esta opción, todo lo que tenemos que hacer es eliminar el comentario de la línea 40 del archivo de configuración:

# Descommento esto para permitir que el usuario de FTP anónimo cargue archivos. Este único # tiene un efecto si se activa la habilitación de escritura global anterior. Además, obviamente necesitará crear un directorio que use el usuario de FTP. anon_upload_enable = sí 

El anon_mkdir_write_enable directiva, en cambio, cuando se establece en Permite a los usuarios anónimos crear nuevos directorios en el servidor, en las mismas condiciones que vimos anteriormente (el usuario subyacente en el servidor debe tener permisos de escritura en el directorio principal). La directiva se encuentra en la línea 44 del archivo de configuración:

# Descomment esto si desea que el usuario de FTP anónimo pueda crear # nuevos directorios. anon_mkdir_write_enable = sí 

Una vez más, dado que la variable ya está configurada en , Para que sea relevante, todo lo que tenemos que hacer es eliminar el comentario de él.

Para permitir que los usuarios anónimos realicen otro tipo de operaciones de escritura, como por ejemplo renombrar o eliminación un directorio, debemos usar otra directiva que no esté presente en el archivo de configuración, anon_other_write_enable y establecerlo en Si el anterior es nuestro comportamiento deseado:

anon_other_write_enable = sí 

Inicios de sesión autenticado

Para permitir que los usuarios del sistema local accedan al servidor FTP con la contraseña de su sistema, el Local_enable la directiva debe establecerse en : Este es el valor predeterminado en el sistema Debian. La directiva se puede encontrar en línea 28 del demonio
archivo de configuración:

# Descomment esto para permitir a los usuarios locales iniciar sesión. local_enable = sí 

Por defecto, cuando un usuario local se autentica con éxito, él/ella tendrá su propio directorio de inicio como root. Sin embargo, es posible especificar un punto de partida alternativo utilizando el local_root directiva. Esta directiva no está presente en el archivo de configuración, por lo que debemos agregarla si queremos usar. Para establecer el /srv/ftp Directorio como raíz local, por ejemplo, escribiríamos:

local_root =/srv/ftp 

Usuarios locales de chroot

Como medida de seguridad es posible croote Cada usuario autenticado en su propio directorio de inicio. Para lograr esta tarea debemos usar el chroot_local_user directiva:

chroot_local_user = sí 

Cuando esta característica está habilitada, es posible especificar una lista de exclusiones (una lista de usuarios que no deben ser crootados) utilizando las siguientes directivas:

chroot_list_enable = sí chroot_list_file =/etc/vsftpd.chroot_list 


La primera directiva es necesaria para activar la función, la otra para especificar la ubicación del archivo que contiene el Lista de exclusion. El archivo debe ser creado si ya no existe, de lo contrario, el inicio de sesión fallará.

Como medida de seguridad, cuando un usuario es chroadado, no debería poder escribir en el directorio de nivel superior del chroot. Si es el caso, en las versiones más recientes de VSFTPD, un usuario no podrá iniciar sesión y el servidor responderá con el siguiente mensaje:

500 OOPS: VSFTPD: Negarse a ejecutar con raíz de escritura dentro de Chroot () 

Este problema se puede resolver básicamente de dos maneras. Este primero es obviamente consiste en arreglando los permisos, Negar el acceso de escritura del usuario al directorio de nivel superior del chroot y dejar que escriban solo en subdirectorios.
La segunda forma de resolver el problema, si no le importan las posibles implicaciones de seguridad, es evitar esta restricción, Usando la siguiente directiva:

tOmod_writable_chroot = sí 

Hablando sobre permisos, es importante tener en cuenta que el ultama predeterminado para el usuario local está configurado para 077. Si esta configuración se considera demasiado restrictiva, es posible cambiarla usando el Local_umask directiva. Esta directiva se comenta en línea 35 del archivo de configuración:

# Umask predeterminado para usuarios locales es 077. Es posible que desee cambiar esto a 022, # si sus usuarios esperan que (022 sea utilizado por la mayoría de los otros FTPD) # local_umask = 022 

Iniciar sesión con usuarios virtuales

Una buena característica ofrecida por VSFTPD es la posibilidad de iniciar sesión usando usuarios virtuales. Un usuario virtual es un usuario que realmente no existe en el sistema, pero solo en el contexto de la aplicación SFTPD. Para habilitar esta función tenemos que usar la siguiente directiva:

invitada_enable = sí 

Cuando la función está activa, todos los inicios de sesión no anónimos (por lo que incluso usuarios reales/locales) se asignan al usuario especificado con el invitado_Username Directiva, que por defecto, como ya vimos es ftp.

El siguiente paso es crear un archivo que contenga los nombres de usuario y las contraseñas de los usuarios virtuales. Para generar una contraseña hash, podemos usar openssl y emita el siguiente comando:

$ OpenSSL PASSWD -1 Contraseña: Verificación - Contraseña: $ 1 $ PFWH3Jou $ DQBinJW8BBTDQYS7EZTPR. 

El pasada comando de openssl se usa para generar contraseñas de hash (MD5). En el ejemplo anterior, se nos pidió que la contraseña se haya hash y su confirmación. Finalmente, la contraseña de hash se genera y se muestra en la pantalla.

El nombre de usuario, junto con la contraseña, debe ponerse en un archivo, digamos que es /etc/virtual_users.pwd, En el siguiente formato:

nombre de usuario: hashed_password 

Suponiendo que nuestro usuario virtual se llama "LinuxConfig" que escribiríamos:

LinuxConfig: $ 1 $ PFWH3Jou $ DQBinJW8BBTDQYS7EZTPR. 

La operación debe repetirse para cada usuario virtual que queremos configurar.

Ahora tenemos que crear el pam Servicio que será utilizado por VSFTPD para autenticar a los usuarios virtuales. Nombraremos el archivo vsftpd_virtual y colóquelo en el /etc/pam.d directorio. Su contenido será el siguiente:

#%PAM-1.0 Auth requerido PAM_PWDFILE.Entonces pwdfile/etc/vsftpd/virtual_users.Cuenta PWD requerida Pam_Permit.entonces 

Como puede ver, especificamos la ruta del archivo que contiene el nombre de usuario y las contraseñas de los usuarios virtuales en la primera línea. Todo lo que necesitamos hacer, ahora, es instruir a VSFTPD que use este "servicio" de PAM. Podemos hacerlo con el pam_service_name directiva:

pam_service_name = vsftpd_virtual 

En este punto podemos guardar el archivo de configuración, reiniciar el demonio y verificar que podamos iniciar sesión con el usuario virtual que acabamos de crear.

Habilitar el soporte SSL para el cifrado de datos

Por defecto, el soporte SSL está deshabilitado en VSFTPD, por lo que los datos transferidos no estarán encriptados. Para habilitar el soporte de SSL, debemos usar las siguientes directivas, ubicadas en las líneas 149 a 151 del archivo de configuración:

# Esta opción especifica la ubicación del certificado RSA que se utilizará para SSL # Conexiones cifradas. rsa_cert_file =/etc/ssl/certs/ssl-cert-snakeOil.PEM RSA_PRIVATE_KEY_FILE =/ETC/SSL/PRIVEST/SSL-CERT-SNAKEOIL.clave ssl_enable = sí 


La primera directiva, rsa_cert_file se usa para indicar la ruta del certificado RSA para usar para las conexiones cifradas SSL. El segundo, rsa_private_key, en su lugar, se utiliza para especificar la ubicación de la clave privada RSA. Finalmente, el ssl_enable La directiva se utiliza para habilitar el uso de cifrado SSL.

El ejemplo usa el /etc/ssl/certs/ssl-cert-snakeOil.pem y /etc/ssl/private/ssl-cert-snakeOil.llave archivos, pero seguramente quieres usar uno dedicado.

Especificar el rango de puertos para el modo pasivo

El modo pasivo FTP es el valor predeterminado en una nueva instalación de VSFTPD, pero si queremos habilitarlo explícitamente, podemos usar la siguiente directiva:

# Establecer en no si desea no permitir el método PASV para obtener un # de conexión de datos (modo pasivo). Valor predeterminado: Sí Pasv_enable = Sí 

Cuando el servidor funciona en Modo pasivo, Envía al cliente una dirección IP y un puerto que debe escuchar para la conexión. Sin embargo, estos puertos se seleccionan de forma predeterminada al azar, ya que debemos usar un firewall en nuestro servidor, debemos saber qué puertos debemos permitir que el tráfico sea minucioso. El rango de puertos a usar se puede especificar con el pasv_min_port y pasv_max_port Directivas, por ejemplo:

# El puerto mínimo para asignar conexiones de datos de estilo Pasv. Se puede utilizar para especificar un rango de puerto estrecho para ayudar a firewalling. pasv_min_port = 10090 # El puerto máximo para asignar las conexiones de datos de estilo Pasv. Se puede utilizar para especificar un rango de puerto estrecho para ayudar a firewalling. Valor predeterminado: 0 (use cualquier puerto) pasv_max_port = 10100 

Con la siguiente configuración, el servidor utilizará una gama de puertos que va desde 10090 a 10100.

Configuración de firewall

Para que nuestro servidor VSFTPD funcione correctamente, debemos permitir el tráfico a través de los puertos necesarios, algunos debemos configurar las reglas apropiadas para nuestro firewall. En este tutorial asumiré el uso del UFW Gerente de Firewall (firewall sin complicaciones).

El primer puerto que queremos permitir el tráfico es el puerto 21, que es el puerto estándar utilizado por el protocolo FTP:

$ sudo UFW Permitir en 21/TCP 


Como segunda cosa, debemos permitir el tráfico entrante a través del rango de puerto especificado que configuramos en la sección anterior. Para especificar una gama de puertos podemos ejecutar:

$ sudo UFW Permitir en 10090: 10100/TCP 

Conclusiones

En este artículo vimos cómo instalar y configurar VSFTPD en Debian 10 Buster. Vimos cómo configurar el uso anónimo y el uso de usuarios locales, y cómo podemos aprovechar el usuarios virtuales característica proporcionada por el servicio. Dado que FTP no proporciona cifrado de datos, vimos cómo habilitar el soporte de SSL y, finalmente, cómo configurar el firewall para permitir el tráfico entrante a través de los puertos necesarios. Para obtener una lista completa de las posibles directivas que se pueden usar en el archivo de configuración de VSFTPD, eche un vistazo a VSFTPD.confusión ManPage (VSFTPD.Conf (5)). Quiere saber cómo trabajar programáticamente con un servidor FTP? Eche un vistazo a nuestro artículo sobre cómo conectarse a un servidor FTP usando Python.

Tutoriales de Linux relacionados:

  • Configurar servidor FTP en Linux
  • Cosas para instalar en Ubuntu 20.04
  • Cómo configurar el servidor FTP/SFTP y el cliente en Almalinux
  • Una introducción a la automatización, herramientas y técnicas de Linux
  • Lista e instalación de clientes FTP en Ubuntu 22.04 Linux ..
  • Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
  • Cómo conectarse a un servidor FTP usando Python
  • Ubuntu 20.04 trucos y cosas que quizás no sepas
  • Lista e instalación de clientes FTP en Ubuntu 20.04 Linux ..
  • Ubuntu 20.04: WordPress con instalación de Nginx