¿Cómo configurar un servidor FTP anónimo?

Aprender Certificado Fundación Linux en España contenido Técnicos desde Cero en CiberED

FTP (File Transfer Protocol) es uno de los protocolos más antiguos para transferir archivos entre sistemas. Utiliza un modelo cliente-servidor y funciona sobre TCP.

19.1. Introducción al protocolo FTP

Aunque hoy en día, se considera inseguro para conexiones públicas por enviar credenciales en texto claro, sigue siendo utilizado en entornos controlados, redes internas y para compartir archivos de forma anónima.

En el examen LFCS se espera que seas capaz de instalar y configurar un servidor FTP que permita acceso anónimo (sin credenciales de usuario) de forma segura y controlada.

Los dos servidores más comunes en Linux son vsftpd (Very Secure FTP Daemon) y ProFTPD. En este capítulo nos centraremos principalmente en vsftpd por su simplicidad, seguridad y amplia adopción, aunque también veremos nociones de ProFTPD.

19.1.1. Modos de funcionamiento: activo y pasivo

FTP tiene dos modos de transferencia:

  • Activo: el servidor abre una conexión de datos desde el puerto 20 hacia un puerto aleatorio del cliente. Suele fallar con cortafuegos/NAT del cliente.
  • Pasivo: el cliente abre la conexión de datos hacia un puerto aleatorio del servidor (configurable). Es el más usado hoy porque atraviesa mejor los cortafuegos.

Para un servidor FTP con acceso anónimo, es esencial configurar correctamente el modo pasivo y el rango de puertos.

19.2. Instalación de vsftpd

19.2.1. En Debian/Ubuntu

sudo apt update
sudo apt install vsftpd

19.2.2. En RHEL/CentOS/Fedora

sudo yum install vsftpd   # o dnf install vsftpd

Tras la instalación, el servicio se gestiona con systemd:

sudo systemctl enable --now vsftpd
sudo systemctl status vsftpd

El archivo de configuración principal es /etc/vsftpd.conf (o /etc/vsftpd/vsftpd.conf en algunas versiones).

19.3. Configuración básica para acceso anónimo

El acceso anónimo se refiere a la posibilidad de conectarse usando el usuario anonymous o ftp, sin contraseña (o con una contraseña genérica, típicamente el correo electrónico). Los archivos servidos suelen ubicarse en un directorio raíz designado (por ejemplo, /srv/ftp o /var/ftp).

19.3.1. Directorio y permisos

Crear el directorio raíz para FTP anónimo:

sudo mkdir -p /srv/ftp
sudo chown ftp:ftp /srv/ftp   # o root:root según la distribución
sudo chmod 755 /srv/ftp

En Debian/Ubuntu, el usuario por defecto de vsftpd es ftp; en RHEL/CentOS suele ser root para la raíz del FTP anónimo, pero es mejor usar un usuario dedicado. Por seguridad, el directorio raíz no debe ser escribible por el usuario anónimo a menos que se permita la carga.

19.3.2. Editar /etc/vsftpd.conf

Abrir con sudo nano /etc/vsftpd.conf y configurar las siguientes directivas:

# Habilitar acceso anónimo
anonymous_enable=YES

# Desactivar acceso de usuarios locales (solo anónimo, por seguridad)
local_enable=NO

# Permitir subir archivos (opcional, solo si se desea)
# anon_upload_enable=YES

# Permitir crear directorios (opcional)
# anon_mkdir_write_enable=YES

# Permitir otras operaciones de escritura (renombrar, borrar)
# anon_other_write_enable=YES

# Directorio raíz para usuarios anónimos
anon_root=/srv/ftp

# Usuario con el que se ejecuta el servidor
nopriv_user=ftp

# Permitir solo anónimos (no locales)
chroot_local_user=YES
allow_writeable_chroot=YES

Algunas opciones importantes:

  • anonymous_enable=YES: permite el acceso anónimo.
  • local_enable=NO: desactiva el acceso de usuarios locales (recomendado para un servidor solo anónimo). Si se quiere permitir ambos, poner YES y gestionar con userlist.
  • anon_upload_enable=YES: permite a anónimos subir archivos (si el directorio tiene permisos de escritura para el usuario ftp).
  • anon_mkdir_write_enable=YES: permite crear carpetas.
  • anon_other_write_enable=YES: permite renombrar/borrar.
  • anon_root: establece el directorio raíz para los anónimos (por defecto /var/ftp).
  • no_anon_password=YES: opcional, no pide contraseña (ni siquiera el correo).
  • hide_ids=YES: oculta UIDs/GIDs en listados.
  • dirmessage_enable=YES: muestra mensaje .message en directorios.

Después de editar, reiniciar el servicio:

sudo systemctl restart vsftpd

19.3.3. Comprobación rápida

ftp localhost

Introduce anonymous como usuario y pulsa Enter (o correo). Si todo está bien, aparecerá el prompt ftp> y podrás usar ls, get, etc.

19.4. Configuración de puertos y modo pasivo

Para que FTP pasivo funcione correctamente, debes especificar un rango de puertos y, opcionalmente, la IP pública o el hostname.

En /etc/vsftpd.conf:

pasv_enable=YES
pasv_min_port=30000
pasv_max_port=30099
pasv_address=192.168.1.100   # IP del servidor (opcional si es la misma que la interfaz)

El cortafuegos debe permitir:

  • Puerto 21 (control).
  • Rango definido (30000-30099) para datos pasivos.

19.4.1. Configurar firewall

Con firewalld:

sudo firewall-cmd --add-service=ftp --permanent
sudo firewall-cmd --add-port=30000-30099/tcp --permanent
sudo firewall-cmd --reload

Con ufw (Ubuntu):

sudo ufw allow 21/tcp
sudo ufw allow 30000:30099/tcp

19.5. Seguridad en el servidor FTP anónimo

Aunque el acceso anónimo es inherentemente inseguro, se pueden aplicar medidas:

  • Aislamiento de directorios: chroot_local_user=YES y allow_writeable_chroot=YES confinan a los usuarios en su directorio raíz.
  • No permitir escritura: por defecto, no habilitar anon_upload_enable ni anon_mkdir_write_enable a menos que sea necesario.
  • Ocultar IDs: hide_ids=YES.
  • Limitar ancho de banda: anon_max_rate=102400 (en bytes/s).
  • Limitar número de conexiones: max_clients=10, max_per_ip=2.
  • Registrar actividad: xferlog_enable=YES, xferlog_file=/var/log/vsftpd.log.

Ejemplo de configuración endurecida:

anonymous_enable=YES
local_enable=NO
anon_root=/srv/ftp
no_anon_password=YES
hide_ids=YES
chroot_local_user=YES
allow_writeable_chroot=YES
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=30099
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
max_clients=10
max_per_ip=2
anon_max_rate=102400

19.6. ProFTPD (alternativa)

ProFTPD es otro servidor FTP muy configurable, con sintaxis similar a Apache. Para instalarlo:

sudo apt install proftpd   # Debian/Ubuntu
sudo yum install proftpd   # RHEL (EPEL)

Archivo de configuración: /etc/proftpd/proftpd.conf.

Configuración anónima básica:

<Anonymous /srv/ftp>
   User ftp
   Group ftp
   UserAlias anonymous ftp
   RequireValidShell off
   <Limit WRITE>
      DenyAll
   </Limit>
</Anonymous>

Reiniciar con sudo systemctl restart proftpd.

Aunque es menos probable que aparezca en el examen, es bueno conocer su existencia y sintaxis básica.

19.7. Comandos FTP del cliente

Para probar el servidor, se puede usar el cliente FTP de línea de comandos o herramientas como lftp, curl, o navegadores web (solo lectura).

19.7.1. Cliente ftp básico

ftp servidor
ftp> ls
ftp> cd pub
ftp> get archivo.txt
ftp> put archivo_local.txt   # si la carga está permitida
ftp> quit

19.7.2. lftp (más potente)

lftp servidor
lftp :~> ls
lftp :~> get archivo

lftp soporta opciones como -u anonymous,password.

19.7.3. curl

curl ftp://servidor/
curl -T archivo.txt ftp://servidor/upload/   # subir archivo

19.8. Solución de problemas

ProblemaPosible causaSolución
“Connection refused”Servicio no arrancado o puerto bloqueadoVerificar systemctl status vsftpd, firewall
“530 Login incorrect”Acceso anónimo deshabilitado o credenciales incorrectasRevisar anonymous_enable=YES, probar con ftp/anonymous
“500 Illegal PORT command”Modo pasivo mal configuradoActivar pasv_enable=YES y rango de puertos, abrir firewall
“550 Permission denied” al subirEl directorio de destino no tiene permisos de escritura para el usuario ftpAjustar permisos con chown ftp:ftp y chmod 775 en el directorio de subida
Listado vacíoEl directorio raíz no es accesibleComprobar permisos y que anon_root apunta correctamente
Tiempo de espera en modo pasivoPuertos del rango no abiertos en firewallAñadir rango pasv_min_portpasv_max_port al firewall

Además, revisar logs en /var/log/vsftpd.log o journalctl -u vsftpd.

19.9. Ejercicios prácticos

  1. Instalación y acceso básico:

    • Instala vsftpd. Crea el directorio /srv/ftp/publico con un archivo bienvenido.txt.
    • Configura el acceso anónimo de solo lectura. Conéctate con ftp localhost y descarga el archivo.
  2. Habilitar carga anónima:

    • Crea un subdirectorio /srv/ftp/upload con propietario ftp y permisos 775.
    • Activa anon_upload_enable=YES y anon_mkdir_write_enable=YES. Reinicia.
    • Sube un archivo desde el cliente y verifica que aparece en el servidor.
  3. Modo pasivo y firewall:

Configura un rango de puertos pasivos (40000-40100). Abre el rango y el puerto 21 en el firewall.

  • Prueba la conexión desde otro equipo (o usando curl -P - para forzar pasivo).
  1. Limitaciones y seguridad:

Establece max_clients=5, max_per_ip=1 y anon_max_rate=50000 y verifica el límite de velocidad descargando un archivo grande y observando la tasa de transferencia.

  1. Logs:

Configura xferlog_enable=YES y xferlog_file=/var/log/vsftpd.log. Realiza descargas y subidas. Examina el log.

  1. ProFTPD (opcional):

Instala ProFTPD y configura una sección <Anonymous> con solo lectura. Verifica que funciona de manera similar.

19.10. Resumen y consejos para LFCS

  • El servidor FTP anónimo más común en el examen es vsftpd. Domina su archivo de configuración y las directivas clave (anonymous_enable, anon_root, anon_upload_enable, pasv_enable, etc.).
  • Asegúrate de que el firewall permita el puerto 21 y el rango pasivo; es una fuente frecuente de fallos.
  • El acceso anónimo implica riesgos de seguridad; aplica restricciones de escritura, límites de conexión y logs.
  • Practica la transferencia de archivos con clientes de línea de comandos (ftp, lftp, curl).
  • En el examen, puede que se te pida configurar un FTP que permita solo descargas anónimas en un directorio concreto. El flujo sería: instalar vsftpd, crear directorio, configurar /etc/vsftpd.conf con anonymous_enable=YES, local_enable=NO, anon_root=..., reiniciar y probar.

Con esto has aprendido a desplegar un servidor FTP anónimo seguro y funcional. En el siguiente capítulo nos adentraremos en la configuración de un servidor DNS de caché recursivo, un componente esencial para la resolución de nombres en cualquier infraestructura.

Vistas: 0

Descubre más desde CIBERED

Suscríbete y recibe las últimas entradas en tu correo electrónico.

Scroll al inicio