Manual vsftpd (Servidor FTP)

ftp_activo_pasivo

1.- INTRODUCCIÓN A VSFTPD

Vsftpd (Very Secure FTP Daemon) es un equipamiento lógico utilizado para implementar servidores de archivos a través del protocolo FTP en sistemas Linux.

Un servidor FTP es un programa que atiende y procesa las conexiones de los clientes FTP y puede acceder al sistema de ficheros del equipo donde está instalado permitiendo la subida y bajada de estos.

FTP es un protocolo de la capa de aplicación diseñado para ofrecer un servicio estándar de transferencia de ficheros entre sistemas conectados a través de redes TCP/IP. El protocolo está descrito en la RFC 959.

Vsftpd se distingue principalmente porque sus valores predeterminados son muy seguros y por su sencillez en la configuración, comparado con otras alternativas como Pure-ftpd, ProFTPD y Wu-ftpd también para sistemas Linux.

También existen otros tipos de servidores para plataformas Linux como, el servidor FTP del IIS, Filezilla Server o Serv-U.

Actualmente se presume que vsftpd podría ser quizá el servidor FTP más seguro del mundo.

2.- INSTALACIÓN DE VSFTP

apt update && apt upgrade

apt install vsftpd

Se crea el usuario ftp dentro del fichero /etc/passwd, y el grupo ftp en /etc/group. Para comprobar que el servidor se ha iniciado:

ps –ef | grep vsftpd

nmap localhost // a mí personalmente me gusta esta opción más, pero hay que instalar nmap (apt install nmap)

3.- INICIAR, DETENER Y REINICIAR EL SERVICIO VSFTPD

Iniciar por primera vez el servicio vsftpd:

service vsftpd start

o bien

/etc/init.d/vsftpd start

Reiniciar el servicio vsftpd o bien hacer que los cambios hechos a la configuración surtan efecto:

service vsftpd restart

o bien

/etc/init.d/vsftpd restart

Detener el servicio vsftpd:

service vsftpd stop

o bien

/etc/init.d/vsftpd stop

Estado del servicio vsftpd:

service vsftpd status

o bien

/etc/init.d/vsftpd status

4.- ARCHIVOS DE CONFIGURACIÓN

Archivos y directorios que se crean en el sistema:

  • /etc/init.d/vsftpd
  • /usr/sbin/vsftpd
  • /srv/ftp

Propiedad de root y cuyo grupo es ftp, donde se alojarán los archivos para usuarios anónimos (accesos anónimos).

  • /etc/ftpusers
  • /etc/vsftpd.conf

Archivo de configuración de VSFTPD. Está muy bien explicado todos los parámetros, siempre que controlemos el inglés.

  • /etc/vsftpd.chroot_list

Contiene la lista de los usuarios locales a enjaular.

Este archivo no se instala, por lo cual hay que crearlo antes de comenzar a trabajar con la configuración.

touch /etc/vsftpd.chroot_list

  • /etc/vsftpd.user_list

Contiene la lista de los usuarios locales que pueden acceder al servidor.

Este archivo no se instala, por lo cual hay que crearlo antes de comenzar a trabajar con la configuración.

touch /etc/vsftpd.user_list

4.1.- ARCHIVO /ETC/VSFTPD.CONF – OPCIONES POR DEFECTO

Las siguientes opciones son las que vienen por defecto en el fichero de configuración vsftpd.conf, cabe destacar que hay muchas más pero como he comentado estas son las que vienen por defecto.

NOTA IMPORTANTE: ANTES DE EDITAR EL FICHERO REALIZAR UNA COPIA DE SEGURIDAD DEL MISMO

cp /etc/vsftpd.conf /etc/vsftpd.conf.backup

A continuación, analizaremos las opciones a modificar o añadir según se requiera para necesidades particulares.

Cabe destacar que las líneas que comiencen por # son líneas comentadas y por lo tanto no se tendrán en cuenta.

  • El archivo tiene la estructura: directiva=valor
  • directiva: propiedad u opción que se configura.
  • valor: valor que se le asigna a la directiva.
  • No debe haber espacios antes ni después del =
  • Valores: boolean (YES, NO), números, cadenas.
  • El archivo está dividido en diferentes secciones.

listen=YES

Si ponemos a YES es para que vsftpd se inicie con el sistema.

listen_ipv6=YES

Esta opción es para escuchar en un socket IPv6 en lugar de uno IPv4.

anonymous_enable=YES

Se utiliza para definir si se permitirán los accesos anónimos al servidor. Establezca como valor YES o NO de acuerdo a lo que se requiera.

Los usuarios anónimos acceden por defecto al directorio /srv/ftp

local_enable=YES

Establece si se van a permitir los accesos autenticados de los usuarios locales del sistema. Establezca como valor YES o NO de acuerdo a lo que se requiera.

write_enable=YES

Establece si se permite el mandato write (escritura) en el servidor, y no sólo descargar archivos, es decir, no se pueden subir archivos al servidor. Establezca como valor YES o NO de acuerdo a lo que se requiera.

local_umask = 022

Esta máscara hace que cada vez que subas un archivo, sus permisos sean 755. Es lo más típico en servidores FTP.

anon_upload_enable=YES

Específica si los usuarios anónimos tendrán permitido subir contenido al servidor. Por lo general no es una función deseada, por lo que se acostumbra desactivar ésta.

anon_mkdir_write_enable=YES

Específica si los usuarios anónimos tendrán permitido crear directorios en el servidor. Al igual que la anterior, por lo general no es una función deseada, por lo que se acostumbra desactivar ésta.

Mensajes de bienvenida al servidor

Las siguientes opciones van de la mano.

  • dirmessage_enable=YES

Esta opción es para activar los mensajes de bienvenida al servidor FTP que se le dan a los usuarios que se conectan.

  • ftpd_banner=Welcome to blah FTP service

Sirve para establecer el banderín de bienvenida que será mostrado cada vez que un usuario acceda al servidor. Puede establecerse cualquier frase breve que considere conveniente, pero sin signos de puntuación. Esta opción viene incluida en la configuración predeterminada.

ftpd_banner=Bienvenido al servidor FTP de Los Teatinos

banned_email_file=/etc/vsftpd.banned_emails

 

use_localtime=YES

Registro de actividad

xferlog_enable=YES

xferlog_file=/var/log/vsftpd.log

Ubicación del fichero

xferlog_std_format=YES

connect_from_port_20=YES

chown_uploads=YES

chown_username=whoever

idle_session_timeout=600

data_connection_timeout=120

nopriv_user=ftpsecure

async_abor_enable=YES

ascii_upload_enable=YES

ascii_download_enable=YES

deny_email_enable=YES

Acceso a usuarios locales

local_enable=YES // esta opción fue vista ya, no repetir línea de código

chroot_local_user=YES

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd.chroot_list

Estas 4 opciones vienen de la mano.

De modo predeterminado los usuarios del sistema que se autentiquen tendrán acceso a otros directorios del sistema fuera de su directorio personal puesto que la primera directiva está a YES, local_enable=YES

Si se desea limitar a los usuarios a sólo poder utilizar su propio directorio personal, puede hacerse fácilmente con la opción chroot_local_user que habilitará las opciones chroot_list_enable y chroot_list_file, para establecer el archivo con la lista de usuarios locales que se van a enjaular.

chroot_local_user=YES

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd.chroot_list

IMPORTANTE: Con lo anterior cada vez que un usuario local se autentique en el servidor FTP, sólo tendrá acceso a su propio directorio personal y lo que éste contenga. Por favor recuerde crear el archivo /etc/vsftpd.chroot_list debido a que de otro modo será imposible que funcione correctamente el servicio vsftpd.

ls_recurse_enable=YES

secure_chroot_dir=/var/run/vsftpd/empty

pam_service_name=vsftpd

rsa_cert_file=/etc/ssl/private/vsftpd.pem

 

4.2.- ARCHIVO /ETC/VSFTPD.CONF – OPCIONES ADICIONALES

NOTA IMPORTANTE: ANTES DE TOCAR EL FICHERO REALIZAR UNA COPIA DE SEGURIDAD

cp /etc/vsftpd.conf /etc/vsftpd.conf.backup

Las siguientes opciones ya no vienen por defecto incluidas en el archivo de configuración vsftpd.conf, por lo tanto hay, que crearlas. Es aconsejable añadirlas al final del fichero de configuración para tener un fichero más nítido y mejor controlado.

pasv_min_port y pasv_max_port

Permiten establecer el rango arbitrario de puertos utilizados para las conexiones pasivas. Puede elegirse cualquier rango de puertos entre 1024 y 65535, mismo que deberá ser habilitado en el muro cortafuegos del servidor. En el siguiente ejemplo se establece el rango de puertos para conexiones pasivas de 30300 a 30309:

pasv_min_port=30300

pasv_max_port=30309

 

Control del ancho de banda.

anon_max_rate

Se utiliza para limitar la tasa de transferencia, en bytes por segundo, para los usuarios anónimos, algo sumamente útil en servidores FTP de acceso público. En el siguiente ejemplo se limita la tasa de transferencia a 500 Kb por segundo para los usuarios anónimos:

anon_max_rate=524288

local_max_rate

Hace lo mismo que anon_max_rate, pero aplica para usuarios locales del servidor. En el siguiente ejemplo se limita la tasa de transferencia a 1 MB por segundo para los usuarios locales:

local_max_rate=1048576

 

max_clients

Establece el número máximo de clientes que podrán acceder simultáneamente hacia el servidor FTP. En el siguiente ejemplo se limitará el acceso a 20 clientes simultáneos.

max_clients=20

max_per_ip

Establece el número máximo de conexiones que se pueden realizar desde una misma dirección IP. Tome en cuenta que algunas redes acceden a través de un servidor intermediario (Proxy) o puerta de enlace y debido a ésto podrían quedar bloqueados innecesariamente algunos accesos. En el siguiente ejemplo se limita el número de conexiones por IP simultáneas a un máximo de 10.

max_per_ip=10

 

Subida de archivos para usuarios anónimos.

anon_upload_enable=YES

Mensajes de bienvenida personalizados para los diferentes

usuarios.message_file=.mensaje

Tiempos de conexión:

accept_timeout=60

data_connection_timeout=300

idle_session_timeout=300

 

Añada éstas al final del archivo de configuración.

5.- FICHEROS DE LOG

Por defecto es /var/log/vsftpd.log

Muy útil cuando tenemos errores y no se levanta el vsftpd

6.- ACCESOS AL SERVIDOR

VSFTPD permite 3 tipos de conexión al servidor.

6.1.- ACCESOS ANÓNIMOS

Si se activa el acceso anónimo el directorio por defecto se encuentra en:

/srv/ftp

Para actívalo hay que ir a /etc/vsftpd.conf

anonymous_enable=YES

Para acceder como usuario anónimo al servidor hay que poner:

  • Usuario: anonymous, ftp, o dejarlo en blanco.
  • Constraseña: en blanco.

Por defecto está configurado para que los usuarios anónimos sólo puedan descargarse ficheros de ese directorio. Además el usuario anónimo se encuentra “enjaulado”, es decir, no pueden salir del directorio por defecto /srv/ftp.

Como ejemplos de servidores anónimos tenemos:

Ejercicio:

Si queremos permitir que los usuarios anónimos puedan subir archivos al servidor tendremos que tener en cuenta que:

  • El usuario ftp no debe ser propietario del directorio dónde se suban los ficheros.
  • El usuario ftp no debe ser miembro del grupo propietario del directorio dónde se suban los ficheros.
  • El directorio anónimo debe tener los permisos de escritura correspondientes para OTROS.

# En Debian el directorio raíz por defecto del servidor FTP, está situado en:

/srv/ftp

# Y dispone de los siguientes permisos:

drwxr-xr-x 2 root ftp 4096 ene 25 03:45 ftp

anonymous_enable=YES // recordar habilitar acceso anónimo

# Si se desea configurar un directorio raíz diferente para el servidor anónimo se usa:

anon_root=/directorio

# Por lo tanto si queremos crear un directorio anónimo pa- ra escritura el TRUCO está en:

# crear una carpeta por ejemplo llamada pub dentro de

/srv/ftp porque si no saldrá el error 500.

mkdir /srv/ftp/pub

# Comprobar que propietario y grupo esté root por ejemplo

chown root:root /srv/ftp/pub

# Y que tenga permisos de RWX en otros para esa carpeta.

chmod 757 /srv/ftp/pub

# No es necesario modificar el anon_root ya que por defec- to está puesto a /srv/ftp

# Si queremos que los ficheros que subamos tengan unos permisos por defecto

# deberemos utilizar la opcion chown_upload_mode # Por defecto está puesta a: -rw (0600)

# Ejemplo:

chown_upload_mode=0666

 

Si tras realizar esto nos devuelve el error 500, consultar el punto 8. ERRORES COMUNES EN VSFTPS.

6.2.- USUARIOS LOCALES

Hay que tener en cuenta que los usuarios locales son todos lo que se encuentran en el fichero

/etc/passwd con el UID>=1000.

Hay dos posibles opciones de configuración:

  • Que no se le “enjaule” en su directorio home, es decir, puede acceder al resto del árbol de directorios.

Con la directiva local_enable=YES ya conseguimos el cometido.

  • Que se le “enjaule” en su directorio home, es decir, no tiene disponible el resto de sistema de archivos. Para ello tienen que estar activas la siguiente 4 directivas:

local_enable=YES

chroot_local_user=YES

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd.chroot_list

La opción chroot_local_user que habilitará las opciones chroot_list_enable y chroot_list_file, para establecer el archivo con la lista de usuarios locales que se van a enjaular.

IMPORTANTE: Con lo anterior cada vez que un usuario local se autentique en el servidor FTP, sólo tendrá acceso a su propio directorio personal y lo que éste contenga. Recuerda crear el archivo /etc/vsftpd.chroot_list, el cual no viene creado por defecto, debido a que de otro modo será imposible que funcione correctamente el servicio vsftpd.

————————— PRÓXIMAMENTE ——————

Para ampliar más acerca de este apartado leer, ENJAULAR A USUARIOS LOCALES EN VSFTPD

———————————————————————————————————–

6.3.- USUARIOS VIRTUALES

Es posible crear cuentas de usuarios virtuales que no existan como usuarios locales del sistema operativo, y por tanto no se nos llene el home con usuarios.

Las cuentas de usuario se almacenan en ficheros, bases de datos (MySQL, Berkeley) o servicios de directorio como LDAP.

Las cuentas virtuales se mapean en un usuario local del sistema.

 

7.- CONFIGURACIÓN DE UN SERVIDOR SFTP.

Previante hay que instalar el servicio ssh en el servidor.

apt install ssh

 

8.- ERRORES COMUNES EN VSFTPD

8.1.- 500 OOPS: vsftpd: refusing to run with writable root inside chroot()

Este error se da porque vsftpd no permite que los usuarios puedan escribir en su carpeta raíz. Hay 2 posibles soluciones:

  • Una solución es quitarle los permisos de escritura a esa carpeta. Esto hará que el usuario no pueda hacer nada en su propia carpeta, así que lo mejor es crearle otra dentro con permisos normales para que pueda utilizarla.

sudo chmod 555 /home/jesus/

sudo mkdir /home/jesus/ftp/

sudo chown jesus:ftp /home/jesus/ftp/

 

Reiniciar el servicio y funcionará.

Con todo esto ya deberías poder acceder al servidor FTP con el usuario jesus del sistema sin ningún problema.

Como comentamos anteriormente esto ocurre cuando el directorio del usuario donde se hace el chroot tiene permisos de escritura, pero no se establece en el archivo de configuración que se puede escribir en el directorio.

Por tanto, hay que agregar la siguiente línea en el archivo /etc/vsftpd.conf

allow_writeable_chroot=YES

Deja un comentario

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies ACEPTAR

Aviso de cookies