SlideShare una empresa de Scribd logo
1 de 46
FTP
Ing. Fernando Solis
Definición
 FTP (File Transfer Protocol) es un protocolo de red para la
transferencia de archivos entre sistemas conectados a una
red TCP, basado en la arquitectura cliente-servidor. Desde un
equipo cliente se puede conectar a un servidor para
descargar archivos desde él o para enviarle archivos,
independientemente del sistema operativo utilizado en cada
equipo.
TCP/IP
 El Servicio FTP es ofrecido por
la capa de Aplicación del
modelo de capas de red
TCP/IP al usuario, utilizando
normalmente el puerto de red
20 y el 21. Un problema básico
de FTP es que está pensado
para ofrecer la máxima
velocidad en la conexión,
pero no la máxima seguridad,
ya que todo el intercambio de
información, desde el login y
password del usuario en el
servidor hasta la transferencia
de cualquier archivo, se
realiza en texto plano sin
ningún tipo de cifrado, con lo
que un posible atacante
puede capturar este tráfico,
acceder al servidor, o
apropiarse de los archivos
transferidos.
El Modelo FTP
 En el modelo, el intérprete de protocolo (PI) de usuario, inicia la conexión de
control en el puerto 21. Las órdenes FTP estándar las genera el PI de usuario y se
transmiten al proceso servidor a través de la conexión de control. Las respuestas
estándar se envían desde el PI del servidor al PI de usuario por la conexión de
control como respuesta a las órdenes.
 Estas órdenes FTP especifican parámetros para la conexión de datos (puerto de
datos, modo de transferencia, tipo de representación y estructura) y la naturaleza
de la operación sobre el sistema de archivos (almacenar, recuperar, añadir,
borrar, etc.). El proceso de transferencia de datos (DTP) de usuario u otro proceso
en su lugar, debe esperar a que el servidor inicie la conexión al puerto de datos
especificado (puerto 20 en modo activo o estándar) y transferir los datos en
función de los parámetros que se hayan especificado.
 Vemos también en el diagrama que la comunicación entre cliente y servidor es
independiente del sistema de archivos utilizado en cada computadora, de
manera que no importa que sus sistemas operativos sean distintos, porque las
entidades que se comunican entre sí son los PI y los DTP, que usan el mismo
protocolo estandarizado: el FTP.
 También hay que destacar que la conexión de datos es bidireccional, es decir, se
puede usar simultáneamente para enviar y para recibir, y no tiene por qué existir
todo el tiempo que dura la conexión FTP
El Modelo FTP
Servidor FTP
 Un servidor FTP es un programa especial que se ejecuta en
un equipo servidor normalmente conectado a Internet
(aunque puede estar conectado a otros tipos de redes, LAN,
MAN, etc.). Su función es permitir el intercambio de datos
entre diferentes servidores/computadoras.
 Por lo general, los programas servidores FTP no suelen
encontrarse en los computadoras personales, por lo que un
usuario normalmente utilizará el FTP para conectarse
remotamente a uno y así intercambiar información con él.
 Las aplicaciones más comunes de los servidores FTP suelen
ser el alojamiento web, en el que sus clientes utilizan el
servicio para subir sus páginas web y sus archivos
correspondientes; o como servidor de backup (copia de
seguridad) de los archivos importantes que pueda tener una
empresa. Para ello, existen protocolos de comunicación FTP
para que los datos se transmitan cifrados, como el SFTP
(Secure File Transfer Protocol).
Cliente FTP
 Cuando un navegador no está equipado con la función FTP, o si
se quiere cargar archivos en una computadoras remota, se
necesitará utilizar un programa cliente FTP. Un cliente FTP es un
programa que se instala en la computadora del usuario, y que
emplea el protocolo FTP para conectarse a un servidor FTP y
transferir archivos, ya sea para descargarlos o para subirlos.
 Para utilizar un cliente FTP, se necesita conocer el nombre del
archivo, la computadora en que reside (servidor, en el caso de
descarga de archivos), el ordenador al que se quiere transferir el
archivo (en caso de querer subirlo nosotros al servidor), y la
carpeta en la que se encuentra.
 Algunos clientes de FTP básicos en modo consola vienen
integrados en los sistemas operativos, incluyendo Windows, DOS,
Linux y Unix. Sin embargo, hay disponibles clientes con opciones
añadidas e interfaz gráfica. Aunque muchos navegadores
tienen ya integrado FTP, es más confiable a la hora de
conectarse con servidores FTP no anónimos utilizar un programa
cliente.
Modos de conexión del cliente FTP
 FTP admite dos modos de conexión del cliente. Estos modos
se denominan Activo (o Estándar, o PORT, debido a que el
cliente envía comandos tipo PORT al servidor por el canal de
control al establecer la conexión) y Pasivo (o PASV, porque
en este caso envía comandos tipo PASV). Tanto en el modo
Activo como en el modo Pasivo, el cliente establece una
conexión con el servidor mediante el puerto 21, que
establece el canal de control.
Modo Activo
En modo Activo, el servidor siempre crea el canal de
datos en su puerto 20, mientras que en el lado del cliente
el canal de datos se asocia a un puerto aleatorio mayor
que el 1024. Para ello, el cliente manda un comando
PORT al servidor por el canal de control indicándole ese
número de puerto, de manera que el servidor pueda
abrirle una conexión de datos por donde se transferirán
los archivos y los listados, en el puerto especificado.
Lo anterior tiene un grave problema de seguridad, y es
que la máquina cliente debe estar dispuesta a aceptar
cualquier conexión de entrada en un puerto superior al
1024, con los problemas que ello implica si tenemos el
equipo conectado a una red insegura como Internet. De
hecho, los cortafuegos que se instalen en el equipo para
evitar ataques seguramente rechazarán esas conexiones
aleatorias. Para solucionar esto se desarrolló el modo
Pasivo.
Modos de conexión del cliente FTP
 Modo Pasivo
 Cuando el cliente envía un
comando PASV sobre el canal de
control, el servidor FTP abre un
puerto efímero (cualquiera entre el
1024 y el 5000) e informa de ello al
cliente FTP para que, de esta
manera, sea el cliente quien
conecte con ese puerto del
servidor y así no sea necesario
aceptar conexiones aleatorias
inseguras para realizar la
transferencia de datos.
 Antes de cada nueva
transferencia, tanto en el modo
Activo como en el Pasivo, el cliente
debe enviar otra vez un comando
de control (PORT o PASV, según el
modo en el que haya conectado),
y el servidor recibirá esa conexión
de datos en un nuevo puerto
aleatorio (si está en modo pasivo) o
por el puerto 20 (si está en modo
activo).
Programas que funcionan como
servidor ftp
 AceFTP
 CoreFTP
 FileZilla
 SmartFTP
 WS_FTPLE
Servidores FTP
 Red Hat Enterprise Linux se entrega con dos
servidores FTP diferentes:
 Acelerador de Contenidos Red Hat — Un servidor Web
basado en el kernel que ofrece un servidor web y
servicios FTP de alto rendimiento. Puesto que la
velocidad es su objetivo principal de diseño, su
funcionalidad es limitada y solamente se ejecuta como
FTP anónimo. Para más información sobre la
configuración y administración del Acelerador de
Contenidos Red Hat, consulte la documentación
disponible en línea en
http://www.redhat.com/docs/manuals/tux/.
 vsftpd — un demonio FTP rápido y seguro, preferido para
Red Hat Enterprise Linux. El resto de este capítulo se
enfoca en vsftpd.
vsftpd
 El demonio FTP vsftpd (o Very Secure FTP Daemon) está diseñado
desde la base para ser rápido, estable y lo más importante,
seguro. Su habilidad para manejar grandes números de
conexiones de forma eficiente y segura es lo que hace que
vsftpd sea el único FTP independiente distribuido con Red Hat
Enterprise Linux.
 El modelo de seguridad utilizado por vsftpd tiene tres aspectos
principales:
 Clara separación de procesos privilegiados y sin
privilegios — Procesos separados manejan tareas
diferentes y cada uno de estos procesos se ejecuta con
los privilegios mínimos requeridos para la tarea.
 Las tareas que requieren altos privilegios son manejadas
por procesos con los mínimos privilegios necesarios —
Influenciando las compatibilidades encontradas en la
biblioteca libcap, las tareas que usualmente requieren
privilegios de superusuario se pueden ejecutar de forma
más segura desde un proceso menos privilegiado.
vsftpd
 La mayoría de los procesos se ejecutan enjaulados
en un ambiente chroot — Siempre que sea posible,
se cambia la raíz de los procesos al directorio
compartido; este directorio se considera luego
como la jaula chroot. Por ejemplo, si el directorio
/var/ftp/ es el directorio compartido principal,
vsftpd reasigna /var/ftp/ al nuevo directorio raíz,
conocido como /. Esto previene actividades
maliciosas de cualquier hacker potencial en algún
directorio que no están por debajo del nuevo
directorio root.
vsftpd
 El uso de estas prácticas de seguridad tiene el efecto
siguiente en cómo vsftpd trata con las peticiones:
 El proceso padre se ejecuta con el mínimo de privilegios
requerido — El proceso padre calcula dinámicamente el
nivel de privilegios requerido para minimizar el nivel de
riesgos. Los procesos hijo manejan la interacción directa
con los clientes FTP y se ejecutan casi sin ningún privilegio.
 Todas las operaciones que requieren altos privilegios son
manejadas por un pequeño proceso padre — Similar a
Servidor Apache HTTP, vsftpd lanza procesos hijos sin
privilegios para manejar las conexiones entrantes. Esto
permite al proceso padre privilegiado, ser tan pequeño
como sea posible y manejar relativamente pocas tareas.
 El proceso padre no confía en ninguna de las peticiones
desde procesos hijos sin privilegios — Las comunicaciones
con procesos hijos se reciben sobre un socket y la validez
de cualquier información desde un proceso hijo es
verificada antes de proceder.
vsftpd
 La mayor parte de la interacción con clientes FTP la
manejan procesos hijo sin privilegios en una jaula chroot. —
Debido a que estos procesos hijo no tienen privilegios y
solamente tienen acceso al directorio que está siendo
compartido, cualquier proceso fallido solamente permitira
al atacante acceder a los archivos compartidos. — El
proceso padre calcula dinámicamente el nivel de
privilegios requerido para minimizar el nivel de riesgos. Los
procesos hijo manejan la interacción directa con los clientes
FTP y se ejecutan casi sin ningún privilegio.
Instalando el Servidor ftp
 Para asegurarse que vsftpd esta instalado escribir el
siguiente comando en la terminal
# rpm -qa | grep vsftpd
o
# rpm -q vsftpd
De lo contrario
#yum install vsftpd
o
# rpm -Uvh latest_vsftpd.rpm
Archivos instalados con vsftpd
 El RPM vsftpd instala el demonio (/usr/sbin/vsftpd), su archivo
de configuración y otros archivos relacionados, así como
también directorios FTP en el sistema.
 /etc/rc.d/init.d/vsftpd — El script de inicialización (initscript)
utilizado por el comando /sbin/service para iniciar, detener o
volver a cargar vsftpd
 /etc/pam.d/vsftpd — El archivo de configuración de los
Pluggable Authentication Modules (PAM) para vsftpd. Este
archivo define los requerimientos que debe cumplir un usuario
para conectarse a un servidor FTP.
 /etc/vsftpd/vsftpd.conf — El archivo de configuración para
vsftpd
 /etc/vsftpd/ftpusers — Una lista de los usuarios que no tienen
permitido conectarse a vsftpd. Por defecto esta lista incluye a los
usuarios root, bin y daemon, entre otros.
Archivos instalados con vsftpd
 /etc/vsftpd/user_list — Este archivo se puede configurar para
negar o permitir el acceso a los usuarios listados,
dependiendo de si la directriz userlist_deny está configurada
a YES (por defecto) o a NO en /etc/vsftpd/vsftpd.conf. Si se
utiliza /etc/vsftpd.user_list para permitir acceso a los usuarios,
los nombres de usuarios listados no deben aparecer en
/etc/vsftpd.ftpusers.
 El directorio /var/ftp/ — El directorio que contiene los archivos
servidos por vsftpd. También contiene el directorio
/var/ftp/pub/ para los usuarios anónimos. Ambos directorios
están disponibles para la lectura de todos, pero sólo el
superusuario o root puede escribir en el.
Iniciar y detener vsftpd
 Para iniciar el servidor, escriba como usuario root, lo siguiente:
#/sbin/service vsftpd start
parar
#/sbin/service vsftpd stop
reiniciar
#/sbin/service vsftpd restart
La opción condrestart (reinicio condicional) solamente
arranca vsftpd si está ejecutándose en ese momento.
Esta opción es muy útil para scripts, puesto que no
arranca el demonio si este no se está ejecutando.
#/sbin/service vsftpd condrestart
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:
sintaxis
<directive>=<value>
Para cada directriz, reemplace <directive> con una directriz válida y <value>
con un valor válido.
Importante
No deben existir espacios entre la <directive>, el símbolo de igualdad y el
<value> en una directriz.
Se debe colocar el símbolo de almohadilla (#) antes de una línea en
comentarios. El demonio ignorará cualquier línea en comentarios.
Directivas de Opciones de
demonios
 La lista siguiente presenta las directrices que controlan el comportamiento general
del demonio vsftpd.
 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.
El valor predeterminado es NO.
 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.
El valor predeterminado es NO.
 session_support — Si está activada, vsftpd intentará mantener sesiones de
conexión para cada usuario a través de Pluggable Authentication Modules
(PAM). 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.
El valor por defecto es YES.
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.
El valor por defecto es YES.
 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.
El valor predeterminado es /etc/vsftpd.banned_emails.
 banner_file — Especifica un archivo que contiene el texto que se mostrará
cuando se establece una conexión con el servidor. Esta opción se sobrepone
cualquier texto especificado en la directriz ftpd_banner.
Esta directriz no tiene un valor predeterminado.
 cmds_allowed — Especifica una lista delimitada por comas de los comandos
FTP que permite el servidor. Se rechaza el resto de los comandos.
Esta directriz no tiene un valor predeterminado.
Opciones de conexión y control de
acceso
 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.
El valor predeterminado es NO.
 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.
Por defecto, vsftpd muestra su pancarta estándar.
 local_enable — Al estar activada, los usuarios locales pueden conectarse al
sistema. El valor por defecto es YES.
 pam_service_name — Especifica el nombre de servicio PAM para vsftpd.
El valor predeterminado es ftp, sin embargo, bajo Red Hat Enterprise Linux, el
valor es vsftpd.
 tcp_wrappers — Al estar activada, se utilizan TCP wrappers para otorgar
acceso al servidor. También, si el servidor FTP está configurado en múltiples
direcciones IP, la opción VSFTPD_LOAD_CONF se puede utilizar para cargar
diferentes archivos de configuración en la dirección IP solicitada por el cliente.
El valor predeterminado es YES
Opciones de conexión y control de
acceso
 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.
El valor por defecto es YES.
 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.
El valor predeterminado YES.
 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. Esta directriz no tiene un valor predeterminado.
Opciones del usuario local
 La siguiente es una lista de las directrices que caracterizan la
forma en que los usuarios locales acceden al servidor. 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.
El valor por defecto es YES.
 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.
El valor predeterminado es NO.
Opciones del usuario local
 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.
El valor predeterminado es NO.
Aviso: Al activar chroot_local_user se abren varios problemas de seguridad,
especialmente para los usuarios con privilegios para hacer cargas. Por este
motivo, no se recomienda su uso.
 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.
El valor predeterminado es NO.
 guest_username — Especifica el nombre de usuario al cual guest está asignado.
El valor por defecto es ftp
Opciones del usuario local
 local_root — Especifica el directorio al cual vsftpd se cambia después de
que el usuario se conecta.
Esta directriz no tiene un valor predeterminado.
 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.
El valor predeterminado es NO.
 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.
Esta directriz no tiene un valor predeterminado
Opciones de directorio
 La siguiente es una lista de directrices que afectan a los directorios.
 dirlist_enable — Al estar activada, los usuarios pueden ver los listados de
directorios.
El valor por defecto es YES.
 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.
El valor predeterminado es NO, sin embargo, bajo Red Hat Enterprise Linux
el valor está configurado a YES.
 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 ...
El valor predeterminado es NO.
 hide_ids — Cuando está activada, todos los listados de directorios
muestran ftp como el usuario y grupo para cada archivo.
El valor predeterminado es NO.
Opciones de directorio
 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.
El valor predeterminado es NO.
 use_localtime — Al estar activada, los listados de directorios
revelan la hora local para el computador en vez de GMT.
El valor predeterminado es NO
Opciones de transferencia de
archivos
 download_enable — Cuando está activada, se permiten las
descargas de archivos.
El valor por defecto es YES.
 chown_uploads — Si está activada, todos los archivos cargados
por los usuarios anónimos pertenecen al usuario especificado en
la directriz chown_username.
El valor predeterminado es NO.
 chown_username — Especifica la propiedad de los archivos
cargados anónimamente si está activada la directriz
chown_uploads.
El valor predeterminado es root.
 write_enable — Cuando está activada, se permiten los comandos
FTP que pueden modificar el sistema de archivos, tales como
DELE, RNFR y STOR.
El valor por defecto es YES.
Opciones de conexión
 A continuación se presenta una lista con las directrices que
afectan el comportamiento de conexión de vsftpd.
 dual_log_enable — Cuando se activa en conjunto con xferlog_enable,
vsftpd escribe simultáneamente dos archivos: un registro compatible con
wu-ftpd al archivo especificado en la directriz xferlog_file (por defecto
/var/log/xferlog) y un archivo de registro estándar vsftpd especificado en
la directriz vsftpd_log_file (por defecto /var/log/vsftpd.log).
El valor predeterminado es NO.
 log_ftp_protocol — Cuando está activado en conjunto con xferlog_enable
y con xferlog_std_format configurada a NO, se registran todos los
comandos y respuestas. Esta directriz es muy útil para propósitos de
depuración.
El valor predeterminado es NO.
 syslog_enable — Cuando se activa en conjunto con xferlog_enable, todos
los registros que normalmente se escriben al archivo estándar vsftpd
especificado en la directriz vsftpd_log_file, se envían al registro del sistema
bajo la facilidad FTPD.
El valor predeterminado es NO.
Opciones de conexión
 vsftpd_log_file — Especifica el archivo de registro de vsftpd. Para que
se utilice este archivo, xferlog_enable debe estar activado y
xferlog_std_format debe ser bien sea NO o, si está en YES, entonces
dual_log_enable debe estar activado. Es importante resaltar que si
syslog_enable está en YES, se utiliza el registro del sistema en lugar del
archivo especificado en esta directriz.
El valor por defecto es /var/log/vsftpd.log.
 xferlog_enable — Cuando se activa, vsftpd registra las conexiones
(solamente formato vsftpd) y la información de transferencia, al
archivo de registro especificado en la directriz vsftpd_log_file (por
defecto es /var/log/vsftpd.log). Si xferlog_std_format está
configurada a YES, se registra la información de transferencia de
archivo pero no las conexiones y en su lugar se utiliza el archivo de
registro especificado en xferlog_file (por defecto /var/log/xferlog). Es
importante observar que se utilizan ambos archivos y formatos de
registro si dual_log_enable tiene el valor de YES.
El valor predeterminado es NO, sin embargo, bajo Red Hat Enterprise
Linux el valor está configurado a YES.
Opciones de conexión
 xferlog_file — Especifica el archivo de registro compatible con wu-
ftpd. Para que se utilice este archivo, xferlog_enable debe estar
activado y xferlog_std_format debe tener el valor de YES. También
se utiliza si dual_log_enable tiene el valor de YES.
El valor por defecto es /var/log/xferlog.
 xferlog_std_format — Cuando se activa en combinación con
xferlog_enable, sólo se escribe un archivo de registro compatible
con wu-ftpd al archivo especificado en la directriz xferlog_file (por
defecto /var/log/xferlog). Es importante resaltar que este archivo
solamente registra transferencias de archivos y no las conexiones al
servidor.
El valor predeterminado es NO, sin embargo, bajo Red Hat
Enterprise Linux el valor está configurado a YES.
Opciones de red
 Lo siguiente lista las directrices que afectan cómo vsftpd interactua con la 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.
 El valor predeterminado es NO, sin embargo, bajo Red Hat Enterprise Linux el
valor está configurado a YES.
 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.
Opciones de red
 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.
Esta directriz no tiene un valor predeterminado
 listen_address6 — Especifica la dirección IPv6 en la cual vsftpd escucha por
conexiones de red cuando listen_ipv6 está configurada a YES.
Esta directriz no tiene un valor predeterminado.
Opciones 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 la máxima tasa 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 la tasade 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.
Opciones de red
 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.
Esta directriz no tiene un valor predeterminado.
 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.
Opciones de red
 pasv_promiscuous — Cuando está activada, las conexiones de
datos no son verificadas para asegurarse de que se originan
desde la misma dirección IP. Este valor solamente es útil para
ciertos tipos de tunneling.
 Atención no active esta opción a menos que sea absolutamente
necesario ya que desactiva una funcionalidad de seguridad muy
importante la cual verifica que las conexiones en modo pasivo
partan desde la misma dirección IP que la conexìón de control
que inicia la transferencia de datos.
El valor predeterminado es NO.
 port_enable — Cuando está activada, se permiten las conexiones
en modo activo.
El valor por defecto es YES.
Ejemplo:
 si tenemos montado un servidor Web para que los diseñadores y
webmasters puedan dejar allí sus creaciones sin molestar a los
administradores, nosotros. Con este objetivo, vamos a montar un
servidor ftp.
 Usuario: client1
Acceso a su directorio: /var/www/dominio1
Sin shell en el sistema y en un entorno chroot
Usuario: client2
Acceso a su directorio: /var/www/dominio2
Sin shell en el sistema y en un entorno chroot
Usuario: webmaster
Acceso a su directorio: /var/www
Sin shell en el sistema y en un entorno chroot
Ejemplo:
 Preparación del sistema
Antes de instalar el servidor ftp vamos a crear los usuarios y securizarlos para que
tengan los mínimos permisos y sólo puedan hacer lo que nosotros definamos.
Crearemos un grupo llamado ftp al cual asociaremos los usuarios.
# groupadd ftp
Creamos los usuarios con sus correspondientes características.
#useradd -g ftp -d /var/www/dominio1 -c " Cliente 1 " client1
#useradd -g ftp -d /var/www/dominio2 -c " Cliente 2 " client2
#useradd -g ftp -d /var/www -c " webmaster " webmaster
Les asignamos un password a los usuarios con el comando passwd. Si no tiene
password no funcionará.
Ahora creamos una shell fantasma en el directorio correspondiente.
#mkdir /bin/ftp
Ejemplo:
 Editamos el archivo/etc/shells y la añadimos en la ultima línea
/bin/ftp
 Editamos el archivo /etc/passwd y buscamos las líneas donde
están definidos los usuarios que hemos creado antes y les
añadimos el shell falso:
client1:x:501:50: Cliente 1 :/var/www/dominio1:/bin/ftp
client2:x:502:50: Cliente 2 :/var/www/dominio2:/bin/ftp
webmaster:x:503:50: webmaster :/var/www:/bin/ftp
Configuración del servidor
 El archivo de configuración del servidor se encuentra en
/etc/vsftpd/vsftpd.conf. Lo editamos para configurarlo a nuestro
gusto y objetivo. El contenido es algo parecido, buscamos las líneas
indicadas y las modificamos:
# Example config file /etc/vsftpd/vsftpd.conf
#Escuchando
listen=YES
#
................................................
# Desactivamos el acceso anónimo
anonymous_enable=NO
#
# Descomentamos la línea para que se puedan conectar
local_enable=YES
#
# Permitimos a usuarios locales escribir
write_enable=YES
#
Configuración del servidor
# APLICA CONFIGURACIÓN UMASK
local_umask=003
#Mensajes welcome
dirmessage_enable=YES
#
# Activate logging of uploads/downloads.
xferlog_enable=YES
#
# Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=YES
............................
#
# You may override where the log file goes if you like. The default is shown
# below.
xferlog_file=/var/log/vsftpd.log
#
# If you want, you can have your log file in standard ftpd xferlog format
xferlog_std_format=YES
Configuración del servidor
 # Se descomenta esto para crear una jaula
chroot_local_user=YES
# You may specify an explicit list of local users to chroot() to their
home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
#chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list
#
# Debian customization
# secure_chroot_dir=/var/run/vsftpd
# This string is the name of the PAM service vsftpd will use.
pam_service_name=vsftpd
# This option specifies the location of the RSA certificate to use for SSL
# encrypted connections.
#rsa_cert_file=/etc/ssl/certs/vsftpd.pem
userlist_enable=YES
tcp_wrappers=YES
userlist_deny=NO
Configuración del servidor
 A continuación creamos el archivo chroot_list el cual tendrá la lista de usuarios que no
tendrán acceso al servidor:
# touch /etc/vsftpd/chroot_list
asignamos los datos a este archivo desde etc/password con el comando.
# cat /etc/passwd | awk -F: '{ print $1 }' > /etc/vsftpd/chroot_list
Esto nos genera un archivo con los login de usuarios del sistema del cual quitamos los que si
queremos que tengan acceso y los ponemos en el archivo /etc/vsftpd/user_list.
Contenido de chroot_list
# usuarios con no acceso
root
daemon
bin
sys
sync
games
man
lp
mail
news
Configuración del servidor
 vsftpd.user_list
#usuarios con acceso
webmaster
client1
client2
Afinando aún más
Dentro del archivo de configuración (vsftpd.conf) algunas opciones
interesantes que también podemos controlar son las siguientes:
#opciones de transferencia
#ancho banda por usuario anónimo 5kb
anon_max_rate=5100
#ancho de banda por usuario local 5kb
local_max_rate=5100
#número máximo clientes simultáneos
max_clients=5
#máximo conexiones por ip
max_per_ip=2
#envía al sistema
syslog_enable=YES
session_support=YES

Más contenido relacionado

La actualidad más candente

Session initiation-protocol
Session initiation-protocolSession initiation-protocol
Session initiation-protocol
Santhosh Somu
 
Transport mode virtual private network(vpn)
Transport mode virtual private network(vpn)Transport mode virtual private network(vpn)
Transport mode virtual private network(vpn)
Murniana Shazwen
 

La actualidad más candente (20)

Cuadro comparativo Sistemas operativos I
Cuadro comparativo Sistemas operativos ICuadro comparativo Sistemas operativos I
Cuadro comparativo Sistemas operativos I
 
Systeme de chiffrement et signature avec RSA en java
Systeme de chiffrement et signature avec RSA en javaSysteme de chiffrement et signature avec RSA en java
Systeme de chiffrement et signature avec RSA en java
 
Supervision informatique
Supervision informatiqueSupervision informatique
Supervision informatique
 
L\'authentification forte : Concept et Technologies
L\'authentification forte : Concept et TechnologiesL\'authentification forte : Concept et Technologies
L\'authentification forte : Concept et Technologies
 
Introduction au reseau informatique
 Introduction au reseau informatique Introduction au reseau informatique
Introduction au reseau informatique
 
Virtualisation.pptx
Virtualisation.pptxVirtualisation.pptx
Virtualisation.pptx
 
Session initiation-protocol
Session initiation-protocolSession initiation-protocol
Session initiation-protocol
 
Multitarea e hilos en java con ejemplos
Multitarea e hilos en java con ejemplosMultitarea e hilos en java con ejemplos
Multitarea e hilos en java con ejemplos
 
Voz sobre IP
Voz sobre IPVoz sobre IP
Voz sobre IP
 
mis en place dun vpn site à site
mis en place dun vpn site à site mis en place dun vpn site à site
mis en place dun vpn site à site
 
Seguridad en redes
Seguridad en redesSeguridad en redes
Seguridad en redes
 
Sip
SipSip
Sip
 
SERVICES RESEAUX AVANCES
SERVICES RESEAUX AVANCESSERVICES RESEAUX AVANCES
SERVICES RESEAUX AVANCES
 
Presentation Zabbix en Français du 6 Juin 2013
Presentation Zabbix en Français du 6 Juin 2013Presentation Zabbix en Français du 6 Juin 2013
Presentation Zabbix en Français du 6 Juin 2013
 
Introducción a los sistemas distribuidos
Introducción a los sistemas distribuidosIntroducción a los sistemas distribuidos
Introducción a los sistemas distribuidos
 
Distributed system notes unit I
Distributed system notes unit IDistributed system notes unit I
Distributed system notes unit I
 
Asterisk WebRTC frontier: realize client SIP Phone with sipML5 and Janus Gateway
Asterisk WebRTC frontier: realize client SIP Phone with sipML5 and Janus GatewayAsterisk WebRTC frontier: realize client SIP Phone with sipML5 and Janus Gateway
Asterisk WebRTC frontier: realize client SIP Phone with sipML5 and Janus Gateway
 
Transport mode virtual private network(vpn)
Transport mode virtual private network(vpn)Transport mode virtual private network(vpn)
Transport mode virtual private network(vpn)
 
Herramientas IDE - CASE
Herramientas IDE - CASEHerramientas IDE - CASE
Herramientas IDE - CASE
 
Modelos de sistemas distribuidos
Modelos de sistemas distribuidosModelos de sistemas distribuidos
Modelos de sistemas distribuidos
 

Similar a 2.13 ftp (20)

Servidor FTP
Servidor FTPServidor FTP
Servidor FTP
 
Servidor HTTP
Servidor HTTPServidor HTTP
Servidor HTTP
 
Archivo pdf
Archivo pdfArchivo pdf
Archivo pdf
 
Protocolo ftp
Protocolo ftpProtocolo ftp
Protocolo ftp
 
Dn12 u3 a8_dzlm
Dn12 u3 a8_dzlmDn12 u3 a8_dzlm
Dn12 u3 a8_dzlm
 
Yenny rocio mantilla villamizar ftp
Yenny rocio mantilla villamizar ftpYenny rocio mantilla villamizar ftp
Yenny rocio mantilla villamizar ftp
 
Concepción anaya aguilar
Concepción anaya  aguilarConcepción anaya  aguilar
Concepción anaya aguilar
 
PROTOCOLO FTP
PROTOCOLO FTPPROTOCOLO FTP
PROTOCOLO FTP
 
RUBY MORENO GARRIDO . INFORMATICA PARA NEGOCIOS . RAYMUNDO MUÑOZ ISLAS
RUBY MORENO GARRIDO . INFORMATICA PARA NEGOCIOS . RAYMUNDO MUÑOZ ISLAS RUBY MORENO GARRIDO . INFORMATICA PARA NEGOCIOS . RAYMUNDO MUÑOZ ISLAS
RUBY MORENO GARRIDO . INFORMATICA PARA NEGOCIOS . RAYMUNDO MUÑOZ ISLAS
 
Manual ftp
Manual ftpManual ftp
Manual ftp
 
Protocolo de Transferencia de Archivos
Protocolo de Transferencia de ArchivosProtocolo de Transferencia de Archivos
Protocolo de Transferencia de Archivos
 
Protocolo FTP -marcela
Protocolo FTP -marcelaProtocolo FTP -marcela
Protocolo FTP -marcela
 
Ftp
FtpFtp
Ftp
 
File transfer protocol
File transfer protocolFile transfer protocol
File transfer protocol
 
File zilla y cliente ftp
File zilla y cliente ftpFile zilla y cliente ftp
File zilla y cliente ftp
 
FTP
FTPFTP
FTP
 
IRVING TERRAZAS :)
IRVING TERRAZAS :)IRVING TERRAZAS :)
IRVING TERRAZAS :)
 
Transmision ftp
Transmision ftpTransmision ftp
Transmision ftp
 
Presentacion ftp
Presentacion ftpPresentacion ftp
Presentacion ftp
 
Servicio ftp
Servicio ftpServicio ftp
Servicio ftp
 

Más de Fernando Solis

Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Fernando Solis
 
Introducción a Tipos de Datos Abstractos (TDA)
Introducción a Tipos de Datos Abstractos (TDA)Introducción a Tipos de Datos Abstractos (TDA)
Introducción a Tipos de Datos Abstractos (TDA)
Fernando Solis
 

Más de Fernando Solis (20)

Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
 
AULA INVERTIDA.pdf
AULA INVERTIDA.pdfAULA INVERTIDA.pdf
AULA INVERTIDA.pdf
 
Subcadenas-en-C
Subcadenas-en-CSubcadenas-en-C
Subcadenas-en-C
 
BÚSQUEDA DE SUBCADENAS EN C
BÚSQUEDA DE SUBCADENAS EN CBÚSQUEDA DE SUBCADENAS EN C
BÚSQUEDA DE SUBCADENAS EN C
 
Almacenamiento de informacion en una estructura
Almacenamiento de informacion en una estructuraAlmacenamiento de informacion en una estructura
Almacenamiento de informacion en una estructura
 
Entrada y salida de datos
Entrada y salida de datosEntrada y salida de datos
Entrada y salida de datos
 
Longitud y Concatenacion
Longitud y ConcatenacionLongitud y Concatenacion
Longitud y Concatenacion
 
Lectura de datos de cadena
Lectura de datos de cadenaLectura de datos de cadena
Lectura de datos de cadena
 
Introducción a Tipos de Datos Abstractos (TDA)
Introducción a Tipos de Datos Abstractos (TDA)Introducción a Tipos de Datos Abstractos (TDA)
Introducción a Tipos de Datos Abstractos (TDA)
 
Archivos Binarios vs Archivos de Texto
Archivos Binarios vs Archivos de TextoArchivos Binarios vs Archivos de Texto
Archivos Binarios vs Archivos de Texto
 
DEFINICION DE CADENAS O STRINGS
DEFINICION DE CADENAS O STRINGSDEFINICION DE CADENAS O STRINGS
DEFINICION DE CADENAS O STRINGS
 
Declaración e inicialización de variables de tipo cadena
Declaración e inicialización de variables de tipo cadenaDeclaración e inicialización de variables de tipo cadena
Declaración e inicialización de variables de tipo cadena
 
Conversion de Strings
Conversion de StringsConversion de Strings
Conversion de Strings
 
Comparacion de arreglos Strings
Comparacion de arreglos StringsComparacion de arreglos Strings
Comparacion de arreglos Strings
 
Cadenas y/o strings
Cadenas y/o stringsCadenas y/o strings
Cadenas y/o strings
 
Asignacion
AsignacionAsignacion
Asignacion
 
Acceso en tipos de datos abstractos
Acceso en tipos de datos abstractosAcceso en tipos de datos abstractos
Acceso en tipos de datos abstractos
 
Arreglo Orden Seleccion
Arreglo  Orden SeleccionArreglo  Orden Seleccion
Arreglo Orden Seleccion
 
Algoritmos de Busqueda
Algoritmos de BusquedaAlgoritmos de Busqueda
Algoritmos de Busqueda
 
Quick Sort
Quick SortQuick Sort
Quick Sort
 

2.13 ftp

  • 2. Definición  FTP (File Transfer Protocol) es un protocolo de red para la transferencia de archivos entre sistemas conectados a una red TCP, basado en la arquitectura cliente-servidor. Desde un equipo cliente se puede conectar a un servidor para descargar archivos desde él o para enviarle archivos, independientemente del sistema operativo utilizado en cada equipo.
  • 3. TCP/IP  El Servicio FTP es ofrecido por la capa de Aplicación del modelo de capas de red TCP/IP al usuario, utilizando normalmente el puerto de red 20 y el 21. Un problema básico de FTP es que está pensado para ofrecer la máxima velocidad en la conexión, pero no la máxima seguridad, ya que todo el intercambio de información, desde el login y password del usuario en el servidor hasta la transferencia de cualquier archivo, se realiza en texto plano sin ningún tipo de cifrado, con lo que un posible atacante puede capturar este tráfico, acceder al servidor, o apropiarse de los archivos transferidos.
  • 4. El Modelo FTP  En el modelo, el intérprete de protocolo (PI) de usuario, inicia la conexión de control en el puerto 21. Las órdenes FTP estándar las genera el PI de usuario y se transmiten al proceso servidor a través de la conexión de control. Las respuestas estándar se envían desde el PI del servidor al PI de usuario por la conexión de control como respuesta a las órdenes.  Estas órdenes FTP especifican parámetros para la conexión de datos (puerto de datos, modo de transferencia, tipo de representación y estructura) y la naturaleza de la operación sobre el sistema de archivos (almacenar, recuperar, añadir, borrar, etc.). El proceso de transferencia de datos (DTP) de usuario u otro proceso en su lugar, debe esperar a que el servidor inicie la conexión al puerto de datos especificado (puerto 20 en modo activo o estándar) y transferir los datos en función de los parámetros que se hayan especificado.  Vemos también en el diagrama que la comunicación entre cliente y servidor es independiente del sistema de archivos utilizado en cada computadora, de manera que no importa que sus sistemas operativos sean distintos, porque las entidades que se comunican entre sí son los PI y los DTP, que usan el mismo protocolo estandarizado: el FTP.  También hay que destacar que la conexión de datos es bidireccional, es decir, se puede usar simultáneamente para enviar y para recibir, y no tiene por qué existir todo el tiempo que dura la conexión FTP
  • 6. Servidor FTP  Un servidor FTP es un programa especial que se ejecuta en un equipo servidor normalmente conectado a Internet (aunque puede estar conectado a otros tipos de redes, LAN, MAN, etc.). Su función es permitir el intercambio de datos entre diferentes servidores/computadoras.  Por lo general, los programas servidores FTP no suelen encontrarse en los computadoras personales, por lo que un usuario normalmente utilizará el FTP para conectarse remotamente a uno y así intercambiar información con él.  Las aplicaciones más comunes de los servidores FTP suelen ser el alojamiento web, en el que sus clientes utilizan el servicio para subir sus páginas web y sus archivos correspondientes; o como servidor de backup (copia de seguridad) de los archivos importantes que pueda tener una empresa. Para ello, existen protocolos de comunicación FTP para que los datos se transmitan cifrados, como el SFTP (Secure File Transfer Protocol).
  • 7. Cliente FTP  Cuando un navegador no está equipado con la función FTP, o si se quiere cargar archivos en una computadoras remota, se necesitará utilizar un programa cliente FTP. Un cliente FTP es un programa que se instala en la computadora del usuario, y que emplea el protocolo FTP para conectarse a un servidor FTP y transferir archivos, ya sea para descargarlos o para subirlos.  Para utilizar un cliente FTP, se necesita conocer el nombre del archivo, la computadora en que reside (servidor, en el caso de descarga de archivos), el ordenador al que se quiere transferir el archivo (en caso de querer subirlo nosotros al servidor), y la carpeta en la que se encuentra.  Algunos clientes de FTP básicos en modo consola vienen integrados en los sistemas operativos, incluyendo Windows, DOS, Linux y Unix. Sin embargo, hay disponibles clientes con opciones añadidas e interfaz gráfica. Aunque muchos navegadores tienen ya integrado FTP, es más confiable a la hora de conectarse con servidores FTP no anónimos utilizar un programa cliente.
  • 8. Modos de conexión del cliente FTP  FTP admite dos modos de conexión del cliente. Estos modos se denominan Activo (o Estándar, o PORT, debido a que el cliente envía comandos tipo PORT al servidor por el canal de control al establecer la conexión) y Pasivo (o PASV, porque en este caso envía comandos tipo PASV). Tanto en el modo Activo como en el modo Pasivo, el cliente establece una conexión con el servidor mediante el puerto 21, que establece el canal de control. Modo Activo En modo Activo, el servidor siempre crea el canal de datos en su puerto 20, mientras que en el lado del cliente el canal de datos se asocia a un puerto aleatorio mayor que el 1024. Para ello, el cliente manda un comando PORT al servidor por el canal de control indicándole ese número de puerto, de manera que el servidor pueda abrirle una conexión de datos por donde se transferirán los archivos y los listados, en el puerto especificado. Lo anterior tiene un grave problema de seguridad, y es que la máquina cliente debe estar dispuesta a aceptar cualquier conexión de entrada en un puerto superior al 1024, con los problemas que ello implica si tenemos el equipo conectado a una red insegura como Internet. De hecho, los cortafuegos que se instalen en el equipo para evitar ataques seguramente rechazarán esas conexiones aleatorias. Para solucionar esto se desarrolló el modo Pasivo.
  • 9. Modos de conexión del cliente FTP  Modo Pasivo  Cuando el cliente envía un comando PASV sobre el canal de control, el servidor FTP abre un puerto efímero (cualquiera entre el 1024 y el 5000) e informa de ello al cliente FTP para que, de esta manera, sea el cliente quien conecte con ese puerto del servidor y así no sea necesario aceptar conexiones aleatorias inseguras para realizar la transferencia de datos.  Antes de cada nueva transferencia, tanto en el modo Activo como en el Pasivo, el cliente debe enviar otra vez un comando de control (PORT o PASV, según el modo en el que haya conectado), y el servidor recibirá esa conexión de datos en un nuevo puerto aleatorio (si está en modo pasivo) o por el puerto 20 (si está en modo activo).
  • 10. Programas que funcionan como servidor ftp  AceFTP  CoreFTP  FileZilla  SmartFTP  WS_FTPLE
  • 11. Servidores FTP  Red Hat Enterprise Linux se entrega con dos servidores FTP diferentes:  Acelerador de Contenidos Red Hat — Un servidor Web basado en el kernel que ofrece un servidor web y servicios FTP de alto rendimiento. Puesto que la velocidad es su objetivo principal de diseño, su funcionalidad es limitada y solamente se ejecuta como FTP anónimo. Para más información sobre la configuración y administración del Acelerador de Contenidos Red Hat, consulte la documentación disponible en línea en http://www.redhat.com/docs/manuals/tux/.  vsftpd — un demonio FTP rápido y seguro, preferido para Red Hat Enterprise Linux. El resto de este capítulo se enfoca en vsftpd.
  • 12. vsftpd  El demonio FTP vsftpd (o Very Secure FTP Daemon) está diseñado desde la base para ser rápido, estable y lo más importante, seguro. Su habilidad para manejar grandes números de conexiones de forma eficiente y segura es lo que hace que vsftpd sea el único FTP independiente distribuido con Red Hat Enterprise Linux.  El modelo de seguridad utilizado por vsftpd tiene tres aspectos principales:  Clara separación de procesos privilegiados y sin privilegios — Procesos separados manejan tareas diferentes y cada uno de estos procesos se ejecuta con los privilegios mínimos requeridos para la tarea.  Las tareas que requieren altos privilegios son manejadas por procesos con los mínimos privilegios necesarios — Influenciando las compatibilidades encontradas en la biblioteca libcap, las tareas que usualmente requieren privilegios de superusuario se pueden ejecutar de forma más segura desde un proceso menos privilegiado.
  • 13. vsftpd  La mayoría de los procesos se ejecutan enjaulados en un ambiente chroot — Siempre que sea posible, se cambia la raíz de los procesos al directorio compartido; este directorio se considera luego como la jaula chroot. Por ejemplo, si el directorio /var/ftp/ es el directorio compartido principal, vsftpd reasigna /var/ftp/ al nuevo directorio raíz, conocido como /. Esto previene actividades maliciosas de cualquier hacker potencial en algún directorio que no están por debajo del nuevo directorio root.
  • 14. vsftpd  El uso de estas prácticas de seguridad tiene el efecto siguiente en cómo vsftpd trata con las peticiones:  El proceso padre se ejecuta con el mínimo de privilegios requerido — El proceso padre calcula dinámicamente el nivel de privilegios requerido para minimizar el nivel de riesgos. Los procesos hijo manejan la interacción directa con los clientes FTP y se ejecutan casi sin ningún privilegio.  Todas las operaciones que requieren altos privilegios son manejadas por un pequeño proceso padre — Similar a Servidor Apache HTTP, vsftpd lanza procesos hijos sin privilegios para manejar las conexiones entrantes. Esto permite al proceso padre privilegiado, ser tan pequeño como sea posible y manejar relativamente pocas tareas.  El proceso padre no confía en ninguna de las peticiones desde procesos hijos sin privilegios — Las comunicaciones con procesos hijos se reciben sobre un socket y la validez de cualquier información desde un proceso hijo es verificada antes de proceder.
  • 15. vsftpd  La mayor parte de la interacción con clientes FTP la manejan procesos hijo sin privilegios en una jaula chroot. — Debido a que estos procesos hijo no tienen privilegios y solamente tienen acceso al directorio que está siendo compartido, cualquier proceso fallido solamente permitira al atacante acceder a los archivos compartidos. — El proceso padre calcula dinámicamente el nivel de privilegios requerido para minimizar el nivel de riesgos. Los procesos hijo manejan la interacción directa con los clientes FTP y se ejecutan casi sin ningún privilegio.
  • 16. Instalando el Servidor ftp  Para asegurarse que vsftpd esta instalado escribir el siguiente comando en la terminal # rpm -qa | grep vsftpd o # rpm -q vsftpd De lo contrario #yum install vsftpd o # rpm -Uvh latest_vsftpd.rpm
  • 17. Archivos instalados con vsftpd  El RPM vsftpd instala el demonio (/usr/sbin/vsftpd), su archivo de configuración y otros archivos relacionados, así como también directorios FTP en el sistema.  /etc/rc.d/init.d/vsftpd — El script de inicialización (initscript) utilizado por el comando /sbin/service para iniciar, detener o volver a cargar vsftpd  /etc/pam.d/vsftpd — El archivo de configuración de los Pluggable Authentication Modules (PAM) para vsftpd. Este archivo define los requerimientos que debe cumplir un usuario para conectarse a un servidor FTP.  /etc/vsftpd/vsftpd.conf — El archivo de configuración para vsftpd  /etc/vsftpd/ftpusers — Una lista de los usuarios que no tienen permitido conectarse a vsftpd. Por defecto esta lista incluye a los usuarios root, bin y daemon, entre otros.
  • 18. Archivos instalados con vsftpd  /etc/vsftpd/user_list — Este archivo se puede configurar para negar o permitir el acceso a los usuarios listados, dependiendo de si la directriz userlist_deny está configurada a YES (por defecto) o a NO en /etc/vsftpd/vsftpd.conf. Si se utiliza /etc/vsftpd.user_list para permitir acceso a los usuarios, los nombres de usuarios listados no deben aparecer en /etc/vsftpd.ftpusers.  El directorio /var/ftp/ — El directorio que contiene los archivos servidos por vsftpd. También contiene el directorio /var/ftp/pub/ para los usuarios anónimos. Ambos directorios están disponibles para la lectura de todos, pero sólo el superusuario o root puede escribir en el.
  • 19. Iniciar y detener vsftpd  Para iniciar el servidor, escriba como usuario root, lo siguiente: #/sbin/service vsftpd start parar #/sbin/service vsftpd stop reiniciar #/sbin/service vsftpd restart La opción condrestart (reinicio condicional) solamente arranca vsftpd si está ejecutándose en ese momento. Esta opción es muy útil para scripts, puesto que no arranca el demonio si este no se está ejecutando. #/sbin/service vsftpd condrestart
  • 20. 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: sintaxis <directive>=<value> Para cada directriz, reemplace <directive> con una directriz válida y <value> con un valor válido. Importante No deben existir espacios entre la <directive>, el símbolo de igualdad y el <value> en una directriz. Se debe colocar el símbolo de almohadilla (#) antes de una línea en comentarios. El demonio ignorará cualquier línea en comentarios.
  • 21. Directivas de Opciones de demonios  La lista siguiente presenta las directrices que controlan el comportamiento general del demonio vsftpd.  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. El valor predeterminado es NO.  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. El valor predeterminado es NO.  session_support — Si está activada, vsftpd intentará mantener sesiones de conexión para cada usuario a través de Pluggable Authentication Modules (PAM). 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. El valor por defecto es YES.
  • 22. 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. El valor por defecto es YES.  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. El valor predeterminado es /etc/vsftpd.banned_emails.  banner_file — Especifica un archivo que contiene el texto que se mostrará cuando se establece una conexión con el servidor. Esta opción se sobrepone cualquier texto especificado en la directriz ftpd_banner. Esta directriz no tiene un valor predeterminado.  cmds_allowed — Especifica una lista delimitada por comas de los comandos FTP que permite el servidor. Se rechaza el resto de los comandos. Esta directriz no tiene un valor predeterminado.
  • 23. Opciones de conexión y control de acceso  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. El valor predeterminado es NO.  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. Por defecto, vsftpd muestra su pancarta estándar.  local_enable — Al estar activada, los usuarios locales pueden conectarse al sistema. El valor por defecto es YES.  pam_service_name — Especifica el nombre de servicio PAM para vsftpd. El valor predeterminado es ftp, sin embargo, bajo Red Hat Enterprise Linux, el valor es vsftpd.  tcp_wrappers — Al estar activada, se utilizan TCP wrappers para otorgar acceso al servidor. También, si el servidor FTP está configurado en múltiples direcciones IP, la opción VSFTPD_LOAD_CONF se puede utilizar para cargar diferentes archivos de configuración en la dirección IP solicitada por el cliente. El valor predeterminado es YES
  • 24. Opciones de conexión y control de acceso  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. El valor por defecto es YES.  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. El valor predeterminado YES.  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. Esta directriz no tiene un valor predeterminado.
  • 25. Opciones del usuario local  La siguiente es una lista de las directrices que caracterizan la forma en que los usuarios locales acceden al servidor. 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. El valor por defecto es YES.  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. El valor predeterminado es NO.
  • 26. Opciones del usuario local  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. El valor predeterminado es NO. Aviso: Al activar chroot_local_user se abren varios problemas de seguridad, especialmente para los usuarios con privilegios para hacer cargas. Por este motivo, no se recomienda su uso.  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. El valor predeterminado es NO.  guest_username — Especifica el nombre de usuario al cual guest está asignado. El valor por defecto es ftp
  • 27. Opciones del usuario local  local_root — Especifica el directorio al cual vsftpd se cambia después de que el usuario se conecta. Esta directriz no tiene un valor predeterminado.  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. El valor predeterminado es NO.  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. Esta directriz no tiene un valor predeterminado
  • 28. Opciones de directorio  La siguiente es una lista de directrices que afectan a los directorios.  dirlist_enable — Al estar activada, los usuarios pueden ver los listados de directorios. El valor por defecto es YES.  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. El valor predeterminado es NO, sin embargo, bajo Red Hat Enterprise Linux el valor está configurado a YES.  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 ... El valor predeterminado es NO.  hide_ids — Cuando está activada, todos los listados de directorios muestran ftp como el usuario y grupo para cada archivo. El valor predeterminado es NO.
  • 29. Opciones de directorio  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. El valor predeterminado es NO.  use_localtime — Al estar activada, los listados de directorios revelan la hora local para el computador en vez de GMT. El valor predeterminado es NO
  • 30. Opciones de transferencia de archivos  download_enable — Cuando está activada, se permiten las descargas de archivos. El valor por defecto es YES.  chown_uploads — Si está activada, todos los archivos cargados por los usuarios anónimos pertenecen al usuario especificado en la directriz chown_username. El valor predeterminado es NO.  chown_username — Especifica la propiedad de los archivos cargados anónimamente si está activada la directriz chown_uploads. El valor predeterminado es root.  write_enable — Cuando está activada, se permiten los comandos FTP que pueden modificar el sistema de archivos, tales como DELE, RNFR y STOR. El valor por defecto es YES.
  • 31. Opciones de conexión  A continuación se presenta una lista con las directrices que afectan el comportamiento de conexión de vsftpd.  dual_log_enable — Cuando se activa en conjunto con xferlog_enable, vsftpd escribe simultáneamente dos archivos: un registro compatible con wu-ftpd al archivo especificado en la directriz xferlog_file (por defecto /var/log/xferlog) y un archivo de registro estándar vsftpd especificado en la directriz vsftpd_log_file (por defecto /var/log/vsftpd.log). El valor predeterminado es NO.  log_ftp_protocol — Cuando está activado en conjunto con xferlog_enable y con xferlog_std_format configurada a NO, se registran todos los comandos y respuestas. Esta directriz es muy útil para propósitos de depuración. El valor predeterminado es NO.  syslog_enable — Cuando se activa en conjunto con xferlog_enable, todos los registros que normalmente se escriben al archivo estándar vsftpd especificado en la directriz vsftpd_log_file, se envían al registro del sistema bajo la facilidad FTPD. El valor predeterminado es NO.
  • 32. Opciones de conexión  vsftpd_log_file — Especifica el archivo de registro de vsftpd. Para que se utilice este archivo, xferlog_enable debe estar activado y xferlog_std_format debe ser bien sea NO o, si está en YES, entonces dual_log_enable debe estar activado. Es importante resaltar que si syslog_enable está en YES, se utiliza el registro del sistema en lugar del archivo especificado en esta directriz. El valor por defecto es /var/log/vsftpd.log.  xferlog_enable — Cuando se activa, vsftpd registra las conexiones (solamente formato vsftpd) y la información de transferencia, al archivo de registro especificado en la directriz vsftpd_log_file (por defecto es /var/log/vsftpd.log). Si xferlog_std_format está configurada a YES, se registra la información de transferencia de archivo pero no las conexiones y en su lugar se utiliza el archivo de registro especificado en xferlog_file (por defecto /var/log/xferlog). Es importante observar que se utilizan ambos archivos y formatos de registro si dual_log_enable tiene el valor de YES. El valor predeterminado es NO, sin embargo, bajo Red Hat Enterprise Linux el valor está configurado a YES.
  • 33. Opciones de conexión  xferlog_file — Especifica el archivo de registro compatible con wu- ftpd. Para que se utilice este archivo, xferlog_enable debe estar activado y xferlog_std_format debe tener el valor de YES. También se utiliza si dual_log_enable tiene el valor de YES. El valor por defecto es /var/log/xferlog.  xferlog_std_format — Cuando se activa en combinación con xferlog_enable, sólo se escribe un archivo de registro compatible con wu-ftpd al archivo especificado en la directriz xferlog_file (por defecto /var/log/xferlog). Es importante resaltar que este archivo solamente registra transferencias de archivos y no las conexiones al servidor. El valor predeterminado es NO, sin embargo, bajo Red Hat Enterprise Linux el valor está configurado a YES.
  • 34. Opciones de red  Lo siguiente lista las directrices que afectan cómo vsftpd interactua con la 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.  El valor predeterminado es NO, sin embargo, bajo Red Hat Enterprise Linux el valor está configurado a YES.  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.
  • 35. Opciones de red  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. Esta directriz no tiene un valor predeterminado  listen_address6 — Especifica la dirección IPv6 en la cual vsftpd escucha por conexiones de red cuando listen_ipv6 está configurada a YES. Esta directriz no tiene un valor predeterminado.
  • 36. Opciones 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 la máxima tasa 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 la tasade 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.
  • 37. Opciones de red  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. Esta directriz no tiene un valor predeterminado.  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.
  • 38. Opciones de red  pasv_promiscuous — Cuando está activada, las conexiones de datos no son verificadas para asegurarse de que se originan desde la misma dirección IP. Este valor solamente es útil para ciertos tipos de tunneling.  Atención no active esta opción a menos que sea absolutamente necesario ya que desactiva una funcionalidad de seguridad muy importante la cual verifica que las conexiones en modo pasivo partan desde la misma dirección IP que la conexìón de control que inicia la transferencia de datos. El valor predeterminado es NO.  port_enable — Cuando está activada, se permiten las conexiones en modo activo. El valor por defecto es YES.
  • 39. Ejemplo:  si tenemos montado un servidor Web para que los diseñadores y webmasters puedan dejar allí sus creaciones sin molestar a los administradores, nosotros. Con este objetivo, vamos a montar un servidor ftp.  Usuario: client1 Acceso a su directorio: /var/www/dominio1 Sin shell en el sistema y en un entorno chroot Usuario: client2 Acceso a su directorio: /var/www/dominio2 Sin shell en el sistema y en un entorno chroot Usuario: webmaster Acceso a su directorio: /var/www Sin shell en el sistema y en un entorno chroot
  • 40. Ejemplo:  Preparación del sistema Antes de instalar el servidor ftp vamos a crear los usuarios y securizarlos para que tengan los mínimos permisos y sólo puedan hacer lo que nosotros definamos. Crearemos un grupo llamado ftp al cual asociaremos los usuarios. # groupadd ftp Creamos los usuarios con sus correspondientes características. #useradd -g ftp -d /var/www/dominio1 -c " Cliente 1 " client1 #useradd -g ftp -d /var/www/dominio2 -c " Cliente 2 " client2 #useradd -g ftp -d /var/www -c " webmaster " webmaster Les asignamos un password a los usuarios con el comando passwd. Si no tiene password no funcionará. Ahora creamos una shell fantasma en el directorio correspondiente. #mkdir /bin/ftp
  • 41. Ejemplo:  Editamos el archivo/etc/shells y la añadimos en la ultima línea /bin/ftp  Editamos el archivo /etc/passwd y buscamos las líneas donde están definidos los usuarios que hemos creado antes y les añadimos el shell falso: client1:x:501:50: Cliente 1 :/var/www/dominio1:/bin/ftp client2:x:502:50: Cliente 2 :/var/www/dominio2:/bin/ftp webmaster:x:503:50: webmaster :/var/www:/bin/ftp
  • 42. Configuración del servidor  El archivo de configuración del servidor se encuentra en /etc/vsftpd/vsftpd.conf. Lo editamos para configurarlo a nuestro gusto y objetivo. El contenido es algo parecido, buscamos las líneas indicadas y las modificamos: # Example config file /etc/vsftpd/vsftpd.conf #Escuchando listen=YES # ................................................ # Desactivamos el acceso anónimo anonymous_enable=NO # # Descomentamos la línea para que se puedan conectar local_enable=YES # # Permitimos a usuarios locales escribir write_enable=YES #
  • 43. Configuración del servidor # APLICA CONFIGURACIÓN UMASK local_umask=003 #Mensajes welcome dirmessage_enable=YES # # Activate logging of uploads/downloads. xferlog_enable=YES # # Make sure PORT transfer connections originate from port 20 (ftp-data). connect_from_port_20=YES ............................ # # You may override where the log file goes if you like. The default is shown # below. xferlog_file=/var/log/vsftpd.log # # If you want, you can have your log file in standard ftpd xferlog format xferlog_std_format=YES
  • 44. Configuración del servidor  # Se descomenta esto para crear una jaula chroot_local_user=YES # You may specify an explicit list of local users to chroot() to their home # directory. If chroot_local_user is YES, then this list becomes a list of # users to NOT chroot(). #chroot_list_enable=YES # (default follows) chroot_list_file=/etc/vsftpd/chroot_list # # Debian customization # secure_chroot_dir=/var/run/vsftpd # This string is the name of the PAM service vsftpd will use. pam_service_name=vsftpd # This option specifies the location of the RSA certificate to use for SSL # encrypted connections. #rsa_cert_file=/etc/ssl/certs/vsftpd.pem userlist_enable=YES tcp_wrappers=YES userlist_deny=NO
  • 45. Configuración del servidor  A continuación creamos el archivo chroot_list el cual tendrá la lista de usuarios que no tendrán acceso al servidor: # touch /etc/vsftpd/chroot_list asignamos los datos a este archivo desde etc/password con el comando. # cat /etc/passwd | awk -F: '{ print $1 }' > /etc/vsftpd/chroot_list Esto nos genera un archivo con los login de usuarios del sistema del cual quitamos los que si queremos que tengan acceso y los ponemos en el archivo /etc/vsftpd/user_list. Contenido de chroot_list # usuarios con no acceso root daemon bin sys sync games man lp mail news
  • 46. Configuración del servidor  vsftpd.user_list #usuarios con acceso webmaster client1 client2 Afinando aún más Dentro del archivo de configuración (vsftpd.conf) algunas opciones interesantes que también podemos controlar son las siguientes: #opciones de transferencia #ancho banda por usuario anónimo 5kb anon_max_rate=5100 #ancho de banda por usuario local 5kb local_max_rate=5100 #número máximo clientes simultáneos max_clients=5 #máximo conexiones por ip max_per_ip=2 #envía al sistema syslog_enable=YES session_support=YES