Cómo configurar VSFTPD en Debian
- 567
- 5
- Mario Gollum
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
Requisitos y convenciones de software utilizados
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 SÍ
:
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 SÍ
. 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 SÍ
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 SÍ
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 SÍ
, 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 SÍ
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 SÍ
: 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