vsftpd

El servicio FTP permite subir y descargar archivos entre máquinas, trabajando en un modelo cliente/servidor. El acceso al servidor FTP puede manejarse de dos maneras:

  • Anónimamente
  • De forma autenticada

En el modo anónimo, los clientes remotos acceden al servidor FTP usando un usuario por defecto, llamado "anonymous" (interesante nombre :)) o "ftp" y enviado una dirección de email como contraseña. En el modo autenticado un usuario debe tener una cuenta y una contraseña.

El acceso que el usuario tiene a los directorios del servidor FTP depende de los permisos de la cuenta empleada en el inicio de sesión. Como regla general, el servidor FTP mostrará a cada usuario su directorio "home" como directorio raíz, ocultándole el resto del sistema.

Instalación de vsfptd

Para instalar vsftpd en un sistema basado en Debian, haremos lo siguiente:

sudo apt-get install vsftpd

Configuración de FTP anónimo

Por defecto vsftpd está configurado para no permitir la conexión anónima. Durante la instalación se crea un nuevo usuario "ftp" cuyo directorio home es /srv/ftp (puedes comprobarlo en /etc/passwd).

Para configurar el acceso anónimo, debemos editar el archivo de configuración de vsftpd, en /etc/vsftpd.conf, modificando la línea anonymous_enable:

anonymous_enable=YES

Ante cualquier cambio, debemos reiniciar el servicio (o recargar la configuración):

sudo /etc/init.d/vsftpd restart

Como prueba de conexión FTP, sigue los siguientes pasos:

  1. En el servidor ftp, accede al directorio /srv/ftp/ y allí ejecuta el los siguientes comandos, para crear algunos archivos de muestra:
  2. sudo touch muestra1.txt sudo touch muestra2.txt sudo touch muestra3.txt
  3. En el lado de la máquina cliente, utiliza un cliente ftp (ya sea gráfico o basado en texto), empleando el usuario "ftp" o "anonymous" y la contraseña "anonymous".

Configuración autenticada de FTP

Para configurar vsftpd para que autentique a los usuarios del sistema, editamos el archivo /etc/vsftpd.conf, y nos aseguramos de que los parámetros local_enable y write_enable tengan los valores siguientes:

local_enable=YES write_enable=YES

Después debemos reiniciar vsftpd (o bien recargar la configuración

También existe una opción, anon_upload_enable, que permite a los usuarios anónimos subir archivos. Evidentemente esto supone un riesgo de seguridad importante.

Para tener más información sobre todos los parámetros de vsftpd, podemos utilizar el siguiente comando: man 5 vsftpd.conf

Asegurar FTP

Si dejamos la configuración como está hasta ahora, un usuario (no anónimo) podría pasearse por el sistema, viendo sus archivos y los que no son suyos. Si queremos enjaular a los usuarios en sus directorios "home", podemos cambiar el valor del parámetros chroot_local_user:

chroot_local_user=YES

También se puede enjaular solo a un subconjunto de usuarios, empleando los parámetros chroot_list_enable y chroot_list_file

vsftpd permite también trabajar con FTPS (es decir, FTP sobre SSL). Lo veremos más adelante.

Ejemplo

Al crear un usuario para FTP, debemos asegurarnos que cuenta con un directorio "home", y con una contraseña. Por ejemplo, vamos a crear un usuario llamado "usr1":

useradd -d /home/usr1 -m usr1 passwd usr1

Actividad 1. Combina lo que has aprendido de vsftpd con lo que has aprendido del servidor Apache, para crear un servicio de hosting, donde cuentes con los sitios web siguientes:

  • www.ametsis.com
    • ruta del sitio: /var/www/www.ametsis.com
    • usuario: ametsiscom
    • contraseña: vqn13A!
  • www.seragul.es
    • ruta del sitio: /var/www/www.seragul.es
    • usuario: seragules
    • contraseña: yasd52!

Saludos.