Opciones de configuración vsftpd

Toda la configuración de vsftpd es manejada por su archivo de configuración, /etc/vsftpd/vsftpd.conf. Cada directriz está en su propia línea dentro del archivo y sigue el formato siguiente: <directive>=<value>

Se debe colocar el símbolo de almohadilla (#) antes de una línea en comentarios. El demonio ignorará cualquier línea en comentarios.

Opciones de demonios

listen — Cuando está activada, vsftpd se ejecuta en modo independiente. Red Hat Enterprise Linux configura este valor a YES. Esta directriz no se puede utilizar en conjunto con la directriz listen_ipv6.
listen_ipv6 — Cuando esta directriz está activada vsftpd se ejecuta en modo independiente, pero solamente escucha a los sockets IPv6. Esta directriz no se puede utilizar junto con la directriz listen.
session_support — Si está activada, vsftpd intentará mantener sesiones de conexión para cada usuario a través de Pluggable Authentication Modules (PAM). Para más información, consulte el Capítulo 16. Si no es necesario hacer sesiones de conexión, el desactivar esta opción hace que vsftpd se ejecute con menos procesos y privilegios más bajos.

Opciones de conexión y control de acceso

anonymous_enable — Al estar activada, se permite que los usuarios anónimos se conecten. Se aceptan los nombres de usuario anonymous y ftp.
banned_email_file — Si la directriz deny_email_enable tiene el valor de YES, entonces esta directriz especifica el archivo que contiene una lista de contraseñas de correo anónimas que no tienen permitido acceder al servidor.
banner_file — Especifica un archivo que contiene el texto que se mostrará cuando se establece una conexión con el servidor. Esta opción supersede cualquier texto especificado en la directriz ftpd_banner.
cmds_allowed — Especifica una lista delimitada por comas de los comandos FTP que permite el servidor. Se rechaza el resto de los comandos.
deny_email_enable — Si está activada, se le niega el acceso al servidor a cualquier usuario anónimo que utilice contraseñas de correo especificadas en /etc/vsftpd.banned_emails. Se puede especificar el nombre del archivo al que esta directriz hace referencia usando la directriz banned_email_file.
ftpd_banner — Si está activada, se muestra la cadena de caracteres especificada en esta directriz cuando se establece una conexión con el servidor. banner_file puede sobreescribir esta opción.
local_enable — Al estar activada, los usuarios locales pueden conectarse al sistema.
userlist_deny — Cuando se utiliza en combinación con la directriz userlist_enable y con el valor de NO, se les niega el acceso a todos los usuarios locales a menos que sus nombres esten listados en el archivo especificado por la directriz userlist_file. Puesto que se niega el acceso antes de que se le pida la contraseña al cliente, al configurar esta directriz a NO previene a los usuarios locales a proporcionar contraseñas sin encriptar sobre la red.
userlist_enable — Cuando está activada, se les niega el acceso a los usuarios listados en el archivo especificado por la directriz userlist_file. Puesto que se niega el acceso al cliente antes de solicitar la contraseña, se previene que los usuarios suministren contraseñas sin encriptar sobre la red.
userlist_file — Especifica el archivo al que vsftpd hace referencia cuando la directriz userlist_enable está activada. El valor predeterminado es /etc/vsftpd.user_list y es creado durante la instalación.
cmds_allowed — Especifica una lista separada por comas de los comandos FTP que permite el servidor. Cualquier otro comando es rechazado.

Opciones de usuario anónimo

Para utilizar estas opciones, la directriz anonymous_enable debe tener el valor de YES.

anon_mkdir_write_enable — Cuando se activa en combinación con la directriz write_enable, los usuarios anónimos pueden crear nuevos directorios dentro de un directorio que tiene permisos de escritura.
anon_root — Especifica el directorio al cual vsftpd cambia luego que el usuario anónimo se conecta.
anon_upload_enable — Cuando se usa con la directriz write_enable, los usuarios anónimos pueden cargar archivos al directorio padre que tiene permisos de escritura.
anon_world_readable_only — Si está activada, los usuarios anónimos solamente pueden descargar archivos legibles por todo el mundo.
ftp_username — Especifica la cuenta del usuario local (listada en /etc/passwd) utilizada por el usuario FTP anónimo. El directorio principal especificado en /etc/passwd para el usuario es el directorio raíz del usuario FTP anónimo.
no_anon_password — Cuando está activada, no se le pide una contraseña al usuario anónimo.
secure_email_list_enable — Cuando está activada, solamente se aceptan una lista de contraseñas especificadas para las conexiones anónimas. Esto es una forma conveniente de ofrecer seguridad limitada al contenido público sin la necesidad de usuarios virtuales.

Opciones del usuario local

Para utilizar estas opciones, la directriz local_enable debe estar a YES.

chmod_enable — Cuando está activada, se permite el comando FTP SITE CHMOD para los usuarios locales. Este comando permite que los usuarios cambien los permisos en los archivos.
chroot_list_enable — Cuando está activada, se coloca en una prisión de chroot a los usuarios locales listados en el archivo especificado en la directriz chroot_list_file. Si se utiliza en combinación con la directriz chroot_local_user, los usuarios locales listados en el archivo especificado en la directriz chroot_list_file, no se colocan en una prisión chroot luego de conectarse.
chroot_list_file — Especifica el archivo que contiene una lista de los usuarios locales a los que se hace referencia cuando la directriz chroot_list_enable está en YES. El valor por defecto es /etc/vsftpd.chroot_list.
chroot_local_user — Si está activada, a los usuarios locales se les cambia el directorio raíz (se hace un chroot) a su directorio principal luego de la conexión.
guest_enable — Al estar activada, todos los usuarios anónimos se conectan como guest, el cual es el usuario local especificado en la directriz guest_username.
guest_username — Especifica el nombre de usuario al cual guest está asignado. El valor por defecto es ftp.
local_root — Especifica el directorio al cual vsftpd se cambia después de que el usuario se conecta.
local_umask — Especifica el valor de umask para la creación de archivos. Observe que el valor por defecto está en forma octal (un sistema numérico con base ocho), que incluye un prefijo de "0". De lo contrario el valor es tratado como un valor entero de base 10. El valor por defecto 022.
passwd_chroot_enable — Cuando se activa junto con la directriz chroot_local_user, vsftpd cambia la raiz de los usuarios locales basado en la ocurrencia de /./ en el campo del directorio principal dentro de /etc/passwd.
user_config_dir — Especifica la ruta a un directorio que contiene los archivos de configuración con los nombres de los usuarios locales. Contiene información específica sobre ese usuario. Cualquier directriz en el archivo de configuración del usuario ignora aquellas encontradas en /etc/vsftpd/vsftpd.conf.

Opciones de directorio

dirlist_enable — Al estar activada, los usuarios pueden ver los listados de directorios.
dirmessage_enable — Al estar activada, cada vez que un usuario entra en un directorio con un archivo de mensaje. Este mensaje se encuentra dentro del directorio al que se entra. El nombre de este archivo se especifica en la directriz message_file y por defecto es .message.
force_dot_files — Al estar activada, se listan en los listados de directorios los mensajes que comienzan con un punto (.), a excepción de los archivos . y ...
hide_ids — Cuando está activada, todos los listados de directorios muestran ftp como el usuario y grupo para cada archivo.
message_file — Especifica el nombre del archivo de mensaje cuando se utiliza la directriz dirmessage_enable. El valor predeterminado es .message.
text_userdb_names — Cuando está activado, se utilizan los nombres de usuarios y grupos en lugar de sus entradas UID o GID. Al activar esta opción puede que reduzca el rendimiento del servidor.
use_localtime — Al estar activada, los listados de directorios revelan la hora local para el computador en vez de GMT.

Opciones de transferencia de archivos

download_enable — Cuando está activada, se permiten las descargas de archivos.
chown_uploads — Si está activada, todos los archivos cargados por los usuarios anónimos pertenecen al usuario especificado en la directriz chown_username.
chown_username — Especifica la propiedad de los archivos cargados anónimamente si está activada la directriz chown_uploads.
write_enable — Cuando está activada, se permiten los comandos FTP que pueden modificar el sistema de archivos, tales como DELE, RNFR y STOR.

Opciones de red

accept_timeout — Especifica la cantidad de tiempo para un cliente usando el modo pasivo para establecer una conexión. El valor por defecto 60.
anon_max_rate — Especifica la cantidad máxima de datos transmitidos por usuarios anónimos en bytes por segundo. El valor por defecto es 0, lo que no limita el ratio de transferencia.
connect_from_port_20 — Cuando está activada, vsftpd se ejecuta con privilegios suficientes para abrir el puerto 20 en el servidor durante las transferencias de datos en modo activo. Al desactivar esta opción, se permite que vsftpd se ejecute con menos privilegios, pero puede ser incompatible con algunos clientes FTP.
connect_timeout — Especifica la cantidad máxima de tiempo que un cliente usando el modo activo tiene para responder a una conexión de datos, en segundos. El valor por defecto 60.
data_connection_timeout — Especifica la cantidad máxima de tiempo que las conexiones se pueden aplazar en segundos. Una vez lanzado, se cierra la conexión con el cliente remoto. El valor predeterminado es 300.
ftp_data_port — Especifica el puerto utilizado por las conexiones de datos activas cuando connect_from_port_20 está configurado a YES. El valor predeterminado es 20.
idle_session_timeout — Especifica la cantidad máxima de tiempo entre comandos desde un cliente remoto. Una vez disparado, se cierra la conexión al cliente remoto. El valor predeterminado es 300.
listen_address — Especifica la dirección IP en la cual vsftpd escucha por las conexiones de red.
listen_port — Especifica el puerto en el cual vsftpd escucha por conexiones de red. El valor predeterminado es 21.
local_max_rate — Especifica el máximo ratio de transferencia de datos para los usuarios locales conectados en el servidor en bytes de segundo. El valor por defecto es 0, lo que no limita el ratio de transferencia.
max_clients — Especifica el número máximo de clientes simultáneos que tienen permitido conectarse al servidor cuando se ejecuta en modo independiente. Cualquier conexión adicional resultará en un mensaje de error. El valor predeterminado es 0, lo que no limita las conexiones.
max_per_ip — Especifica el máximo número de clientes que tienen permitido conectarse desde la misma dirección IP fuente. El valor predeterminado es 0, lo que no limita las conexiones.
pasv_address — Especifica la dirección IP para la IP del lado público del servidor para los servidores detrás de cortafuegos Network Address Translation (NAT). Esto permite que vsftpd entregue la dirección correcta de retorno para las conexiones pasivas.
pasv_enable — Cuando está activa, se permiten conexiones en modo pasivo. El valor por defecto es YES.
pasv_max_port — Especifica el puerto más alto posible enviado a los clientes FTP para las conexiones en modo pasivo. Esta configuración es utilizada para limitar el intervalo de puertos para que las reglas del cortafuegos sean más fáciles de crear. El valor predeterminado es 0, lo que no limita el rango de puertos pasivos más alto. El valor no puede exceder de 65535.
pasv_min_port — Especifica el puerto más bajo posible para los clientes FTP para las conexiones en modo pasivo. Esta configuración es utilizada para limitar el intervalo de puertos para que las reglas del cortafuego sean más fáciles de implementar. El valor predeterminado es 0, lo que no limita el intervalo de puertos pasivos más bajo. El valor no debe ser menor que 1024.
port_enable — Cuando está activada, se permiten las conexiones en modo activo.

Ejemplo configuración Servidor FTP (Vsftpd)

Una vez realizada la instalación configuraremos dicho servidor. El servidor vsftpd utiliza dos ficheros de configuración, al menos con la configuración que yo voy a realizar.
/etc/vsftpd.conf –> fichero de configuración del servidor vsftpd
/etc/vsftpd.chroot_list –> usuarios que se enjaulan en su directorio raíz.

# Para que se ejecute vsftpd en modo independiente.
listen=YES
# No permitimos que se conecten usuarios anónimos.
anonymous_enable=NO
# Permitimos que los usuario locales se puedan conectar.
local_enable=YES
# Permitimos poder hacer modificaciones.
write_enable=YES
# Muestra un mensaje cada vez que un usuario entra en un directorio.
dirmessage_enable=YES
# Registra las conexiones y la información de transferencia, por defecto en /var/log/vsftpd.log
xferlog_enable=YES
# Se permite que el servidor vsftpd abra el puerto 20, para ponerse a la escucha de peticiones.
connect_from_port_20=YES
# Mensaje de bienvenida al conectarse mediante un cliente ftp
ftpd_banner=Bienvenidos al ftp de Redes de Area Local.
# Permitimos a los usuarios locales que puedan salir de su directorio.
chroot_local_user=NO
# Los usuarios locales que se encuentren en el fichero indicado por chroot_list_file
# estarán enjaulados en su directorio.
chroot_list_enable=YES
# Especifica el fichero que contiene los usuarios a enjaular.
chroot_list_file=/etc/vsftpd.chroot_list
# Esta opcion especifica el nombre de un directorio vacio.
# El directorio no tiene que tener privilegios para el usuario de ftp.
# Es un directorio usado como una jaula segura chroot.
secure_chroot_dir=/var/run/vsftpd
# Especifica el nombre de PAM (Pluggable Authentication Modules) para vsftpd
pam_service_name=vsftpd
# Localización del certificado RSA para usar conexiones SSL. Esta opción viene por defecto.
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
# Esta opción especifica la localización de la clave privada para las conexiones SSL.
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

Reiniciar el servicio:
# invoke-rc.d vsftpd restart

El fichero /etc/vsftpd.chroot_list contiene el nombre del usuario que vamos a crear a continuación, para que cualquiera pueda conectarse a ese servidor, pero sólo teniendo acceso al directorio de ftp.

Creamos el usuario mediante el siguiente comando:
 # useradd amigo

Añadir este nombre al fichero; lo podemos hacer abriendo el fichero mediante cualquier editor o mediante el siguiente comando:
# echo amigo >> /etc/vsftpd.chroot_list