GNU/Linux >> Tutoriales Linux >  >> Debian

Cómo configurar vsftpd en Debian

Vsftpd es el acrónimo de Very Secure FTP Daemon:es uno de los servidores ftp más utilizados en Linux y otros sistemas operativos similares a Unix. Es de código abierto y se publica bajo la licencia GPL, y admite usuarios virtuales y SSL para el cifrado de datos. 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 de software y convenciones utilizadas

Instalación

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

$ sudo apt-get update && sudo apt-get install vsftpd

Unos segundos y el paquete se instalará en nuestro sistema Debian. Los scripts de instalación incluidos en el paquete también se encargarán de iniciar el vsftpd service automáticamente pero debemos recordar reiniciar o recargar el servicio cada vez que cambiemos el archivo de configuración. Para poder utilizar los usuarios virtuales característica provista por 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 instalados 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.conf . Si lo abrimos podremos ver las distintas directivas que ya contiene. Veamos cuáles son las más relevantes para los casos más habituales.

Habilitar inicio de sesión anónimo

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

anonymous_enable=YES

Otra directiva que podemos querer cambiar es la que nos permite establecer un directorio en el 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 por defecto, escribiríamos:

anon_root=/srv/ftp

Todos los inicios de sesión anónimos se asignan internamente a un usuario designado, que, de forma predeterminada, es ftp . Para cambiar este mapeo tenemos que usar el ftp_username y configúrelo con el nombre del usuario al que queremos asignar usuarios anónimos.

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

# Uncomment this to enable any form of FTP write command.
write_enable=YES

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

# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
anon_upload_enable=YES

anon_mkdir_write_enable directiva, en cambio, cuando se establece en YES 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:

# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
anon_mkdir_write_enable=YES

Una vez más, dado que la variable ya está establecida en YES , para que sea relevante, todo lo que tenemos que hacer es eliminar el comentario.

Para permitir que los usuarios anónimos realicen también otro tipo de operaciones de escritura, como por ejemplo renombrar o borrando un directorio, debemos usar otra directiva que no está presente en el archivo de configuración, anon_other_write_enable y configúrelo en YES si el anterior es nuestro comportamiento deseado:

anon_other_write_enable=YES

Inicios de sesión autenticados

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

# Uncomment this to allow local users to log in.
local_enable=YES

De forma predeterminada, cuando un usuario local se autentica con éxito, tendrá su propio directorio de inicio como raíz. 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 usarla. Para configurar /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 chroot cada usuario autenticado en su propio directorio de inicio. Para realizar esta tarea debemos usar el chroot_local_user directiva:

chroot_local_user=YES

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

chroot_list_enable=YES
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 la lista de exclusión . El archivo debe crearse si aún no existe; de ​​lo contrario, el inicio de sesión fallará.

Como medida de seguridad, cuando un usuario está chroot, 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: refusing to run with writable root inside chroot()

Este problema se puede resolver básicamente de dos maneras. Este primero obviamente consiste en arreglar los permisos , negando al usuario acceso de escritura al directorio de nivel superior del chroot y permitiéndole escribir solo en subdirectorios.
La segunda forma de resolver el problema, si no le importan las posibles implicaciones de seguridad, es omitir esta restricción , usando la siguiente directiva:

allow_writeable_chroot=YES

Hablando de permisos, es importante tener en cuenta que el umask predeterminado para el usuario local se establece en 077 . Si esta configuración se considera demasiado restrictiva, es posible cambiarla usando local_umask directiva. Esta directiva se comenta en la línea 35 del archivo de configuración:

# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
#local_umask=022

Iniciar sesión con usuarios virtuales

Una buena característica que ofrece vsftpd es la posibilidad de iniciar sesión con usuarios virtuales . Un usuario virtual es un usuario que realmente no existe en el sistema, sino solo en el contexto de la aplicación sftpd. Para habilitar esta característica tenemos que usar la siguiente directiva:

guest_enable=YES

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

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

$ openssl passwd -1
Password:
Verifying - Password:
$1$pfwh3Jou$DQBiNjw8bBtDqys7ezTpr.

La contraseña comando de openssl se utiliza para generar contraseñas hash (md5). En el ejemplo anterior, se nos solicitó el hash de la contraseña y su confirmación. Finalmente, la contraseña cifrada se genera y se muestra en pantalla.

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

username:hashed_password

Entonces, suponiendo que nuestro usuario virtual se llame “linuxconfig”, escribiríamos:

linuxconfig:$1$pfwh3Jou$DQBiNjw8bBtDqys7ezTpr.

La operación debe repetirse para cada usuario virtual que queramos 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    required pam_pwdfile.so pwdfile /etc/vsftpd/virtual_users.pwd
account required pam_permit.so

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 tenemos que hacer, ahora, es instruir a vsftpd para 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 podemos iniciar sesión con el usuario virtual que acabamos de crear.

Habilitar la compatibilidad con SSL para el cifrado de datos

De forma predeterminada, la compatibilidad con SSL está deshabilitada en vsftpd, por lo que los datos transferidos no se cifrarán. Para habilitar el soporte SSL debemos usar las siguientes directivas, ubicadas en las líneas 149 a 151 del archivo de configuración:

# This option specifies the location of the RSA certificate to use for SSL
# encrypted connections.
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=YES

La primera directiva, rsa_cert_file se utiliza para indicar la ruta del certificado RSA que se utilizará 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 directiva se utiliza para permitir el uso de cifrado SSL.

El ejemplo usa /etc/ssl/certs/ssl-cert-snakeoil.pem y /etc/ssl/private/ssl-cert-snakeoil.key archivos, pero es casi seguro que desea utilizar uno dedicado.

Especificación del rango de puertos para el modo pasivo

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

# Set to NO if you want to disallow the PASV method of obtaining a data connection
# (passive mode). Default: YES
pasv_enable=YES

Cuando el servidor opera en modo pasivo , envía al cliente una dirección IP y un puerto que debe escuchar para la conexión. Estos puertos se seleccionan aleatoriamente de forma predeterminada, sin embargo, dado que debemos usar un firewall en nuestro servidor, debemos saber qué puertos debemos permitir el tráfico. El rango de puertos a usar se puede especificar con pasv_min_port y pasv_max_port directivas, por ejemplo:

# The minimum port to allocate for PASV style data connections. Can be used to
# specify a narrow port range to assist firewalling.
pasv_min_port=10090

# The maximum port to allocate for PASV style data connections. Can be used to
# specify a narrow port range to assist firewalling. Default: 0 (use any port)
pasv_max_port=10100

Con la siguiente configuración el servidor utilizará un rango de puertos que va desde 10090 a 10100 .

Configuración del cortafuegos

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 de ufw administrador de cortafuegos (cortafuegos sin complicaciones).

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

$ sudo ufw allow in 21/tcp

En segundo lugar, debemos permitir el tráfico entrante a través del rango de puertos especificado que configuramos en la sección anterior. Para especificar un rango de puertos podemos ejecutar:

$ sudo ufw allow in 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 los usuarios virtuales característica proporcionada por el servicio. Dado que FTP no proporciona cifrado de datos, vimos cómo habilitar la compatibilidad con 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, consulte vsftpd.conf página de manual (VSFTPD.CONF(5)). ¿Quiere saber cómo trabajar mediante programación con un servidor FTP? Eche un vistazo a nuestro artículo sobre cómo conectarse a un servidor FTP usando python.


Debian
  1. Cómo instalar R en Debian 9

  2. Cómo configurar un servidor FTP con VSFTPD en Debian 9

  3. Cómo instalar R en Debian 10

  4. Cómo configurar el servidor Rsyslog en Debian 11

  5. ¿Cómo configurar VSFTPD en CentOS 7.x?

Cómo instalar el servidor vsftpd en Debian 11

Cómo configurar el cortafuegos UFW en Debian 10

Cómo instalar Go en Debian 10

Cómo configurar el cortafuegos UFW en Debian 11

Cómo configurar el servidor OpenLDAP en Debian 10

Cómo instalar Go en Debian

    Requisitos de software y convenciones de la 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 de root, ya sea directamente como usuario root o mediante el uso de sudo comando
    $:requiere que los comandos de Linux dados se ejecuten como un usuario normal sin privilegios