SERVIDOR FTP TEMAS Introducción y Uso 1. Que es el ftp 2. FTP Activo y Pasivo
3. Clientes FTP 4. Comandos FTP cliente Configuraciones del servidor 5. Diferencias entre ftp anonimo y por usuarios 6. Consideraciones de seguridad
Qué es el Ftp? Ftp es uno de los diversos protocolos de la red Internet, concretamente significa File ransfer Protocol (Protocolo de Transferencia de Archivos) y es el ideal para transferir grandes bloques de datos por la red. Se precisa de un Servidor de Ftp y un cliente Ftp, puede darse el caso de que los servidores sean de libre acceso para todo el mundo y entonces estamos hablando de login anónimo o Ftp anónimo.La mayoría de las páginas web a nivel mundial son subidas a los respectivos servidores mediante este protocolo. Por defecto utiliza los puertos 20 y 21. El puerto 20 es el utilizado para el flujo de datos entre el cliente y el servidor y el puerto 21 para el flujo de control, es decir, para enviar las órdenes del cliente al servidor. Mientras se transfieren datos a través del flujo de datos, el flujo de control permanece en espera. Esto puede causar problemas en el caso de transferencias de datos muy grandes realizadas a través de cortafuegos que interrumpan sesiones después de periodos largos en espera. El fichero puede que se haya transferido con éxito, pero el cortafuegos puede desconectar la sesión de control, por lo que se genera un error. (Ver FTP en modo activo y modo pasivo)
Servidor FTP
1
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. 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.
Servidor FTP
2
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). Qué es un cliente Ftp? Un cliente FTP emplea el protocolo Ftp para conectarse a un servidor Ftp para transferir archivos. Algunos clientes de Ftp básicos vienen integrados en los sistemas operativos, incluyendo Windows, DOS, Linux y Unix. Debido a la gran necesidad, existen muchos clientes ftp. Por nombrar algunos de estos tantos, está el: FileZilla, CuteFtp, WS Ftp, Coffe Cup, CoreFtp, WorldWide Ftp, Ftp Now, Shuttle Ftp Suite, y muchos más…
Guía de comandos FTP COMANDO Y ARGUMENTOS open servidor close o disconnect
ACCIÓN QUE REALIZA
Inicia una conexión con un servidor FTP Finaliza una conexión FTP sin cerrar el programa cliente Finaliza una conexión FTP y la sesión de trabajo con el programa bye o quit cliente cd directorio Cambia el directorio de trabajo en el servidor delete archivo Borra un fichero en el servidor mdelete patrón Borra múltiples archivos en base a un patrón que se aplica al nombre dir Muestra el contenido del directorio en el que estamos en el servidor get archivo Obtiene un archivo Activa la impresión de caracteres # a medida que se transfieren hash ficheros, a modo de barra de progreso lcd directorio Cambia el directorio de trabajo local ls Muestra el contenido del directorio en el servidor Activa/desactiva la confirmación por parte del usuario de la ejecución prompt de comandos. Por ejemplo al borrar múltiples archivos put archivo Envía un archivo al directorio activo del servidor mput archivos Envía múltiples archivos pwd Muestra el directorio activo en el servidor rename archivo Cambia el nombre a un archivo en el servidor rmdir directorio Elimina un directorio en el servidor si ese directorio esta vacío status Muestra el estado actual de la conexión bin o binary Activa el modo de transferencia binario ascii Activa el modo de transferencia en modo texto ASCII Permite salir a MS-DOS temporalmente sin cortar la conexión. Para ! volver, teclear exit en la línea de comandos ? nombre de comando Muestra la información relativa al comando ? o help Muestra una lista de los comandos disponibles append nombre de Continua una descarga que se ha cortado previamente fichero Activa/desactiva la reproducción de un sonido cuando ha terminado bell cualquier proceso de transferencia de ficheros glob Activa/desactiva la visualización de nombres largos de nuestro PC
Servidor FTP
3
lcd directorio literal mkdir quote send nombre de fichero
Cambia el directorio activo de nuestro disco duro. Aquí se descargarán los ficheros elegidos del servidor Con esta orden se pueden ejecutar comandos del servidor de forma remota. Para saber los disponibles se utiliza: literal help Crea el directorio indicado de forma remota Hace la misma función que literal Envía el fichero indicado al directorio activo del servidor Para cambiar nuestro nombre de usuario y contraseña sin necesidad de salir de la sesión ftp
user
CONFIGURACION DE SERVIDORES Procedimientos Generales. Utilice un editor de texto y modifique el fichero /etc/vsftpd/vsftpd.conf. A continuación analizaremos los parámetros a modificar o añadir, según ser equiera para necesidades particulares. Parámetro anonymous_enable. Se utiliza para definir si se permitirán los accesos anónimos al servidor. Establezca como valor YES o NO de acuerdo a lo que se requiera. anonymous_enable=YES Parámetro local_enable. Es particularmente interesante si se combina con la función de jaula (chroot). Establece si se van a permitir los accesos autenticados de los usuarios locales del sistema. Establezca como valor YES o NO de acuerdo a lo que se requiera.
Servidor FTP
4
local_enable=YES Parámetro write_enable. Establece si se permite el mandato write (escritura) en el servidor. Establezca como valor YES o NO de acuerdo a lo que se requiera. write_enable=YES Parámetro ftpd_banner. Este parámetro sirve para establecer el banderín de bienvenida que será mostrado cada vez que un usuario acceda al servidor. Puede establecerse cualquier frase breve que considere conveniente. ftpd_banner=Bienvenido al servidor FTP de nuestra empresa. Estableciendo jaulas para los usuarios: parámetros chroot_local_user y chroot_list_file. De modo predeterminado los usuarios del sistema que se autentiquen tendrán acceso a otros directorios del sistema fuera de su directorio personal. Si se desea recluir a los usuarios a solo poder utilizar su propio directorio personal, puede hacerse fácilmente con el parámetro chroot_local_user que habilitará la función de chroot() y los parámetros chroot_list_enable y chroot_list_file para establecer el fichero con la lista de usuarios que quedarán excluidos de la función chroot(). chroot_local_user=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd/vsftpd.chroot_list Con lo anterior, cada vez que un usuario local se autentique en el servidor FTP, solo tendrá acceso a su propio directorio personal y lo que este contenga. No olvide crear el fichero /etc/vsftpd/vsftpd.chroot_list, ya que de otro modo no arrancará el servicio vsftpd. touch /etc/vsftpd/vsftpd.chroot_list Control del ancho de banda. Parámetro anon_max_rate. Se utiliza para limitar la tasa de transferencia en bytes por segundo para los usuarios anónimos, algo sumamente útil en servidores FTP de acceso público. En el siguiente ejemplo se limita la tasa de transferencia a 5 Kb por segundo para los usuarios anónimos: anon_max_rate=5120
Servidor FTP
5
Parámetro local_max_rate. Hace lo mismo que anon_max_rate, pero aplica para usuarios locales del servidor. En el siguiente ejemplo se limita la tasa de transferencia a 5 Kb por segundo para los usuarios locales: local_max_rate=5120 Parámetro max_clients. Establece el número máximo de clientes que podrán acceder simultáneamente hacia el servidor FTP. En el siguiente ejemplo se limitará el acceso a 5 clientes simultáneos. max_clients=5 Parámetro max_per_ip. Establece el número máximo de conexiones que se pueden realizar desde una misma dirección IP. Tome en cuenta que algunas redes acceden a través de un servidor proxy o puerta de enlace y debido a esto podrían quedar bloqueados innecesariamente algunos accesos. en el siguiente ejemplo se limita el número de conexiones por IP simultáneas a 5. max_per_ip=5
Seguridad En general, los problemas con el ftp incluyen: • • • • • • •
Autentificación en texto claro, nombre de usuario y contraseña. Texto en claro en todos los comandos. Ataques de adivinación de contraseñas. Configuración inadecuada del servidor y el consiguiente abuso de servidores. Todavía existen varios desagradables ataques de Negación de Servicio en algunos servidores de ftp. Las versiones más antiguas de WU-FTPD y sus derivados tienen ataques de root. No recomendaría el uso del WU-FTPD
Servidor FTP
6