El Domingo, 22 de Enero de 2006 00:26, Victor Hugo dos Santos escribió:
el ftp, utiliza 2 puertos (20 y 21) uno para la conexcion (21) y otros para los datos (20)... y en esto esta el problema para los cortafuegos !!!!
* El problema para los cortafuegos es que usa otro par de ellos mas aleatorios.
yo tengo abierto, solamente los que mencione mas arriba.. y funciona.. el kernel, es lo bastante inteligente para manejar las conexciones que ya fueron estabelecidas !!!!
* El kernel no dispone de inteligencia que se sepa, los modulos de iptables para seguimiento de conexiones ftp estan cargados por defecto, tienes una politica por defecto accept y se pueden establecer conexiones a los puertos altos, que es lo que hace el modulo (una ñapa). * ftp hace lo siguiente: * El cliente inicia desde cualquier puerto (puerto X) una peticion hacia el puerto 21 del servidor. Una vez que está establecida la conexión, se envía el comando PORT al servidor, para especificar el número de puerto que debe utilizar el servidor para crear la conexión de datos (puerto Y). Para ciertas operaciones, es necesario realizar el envío de un fichero, por lo que se crea el canal de datos. Para ello el servidor crea una conexión física desde su puerto 20 hasta un número de puerto del cliente. Este número de puerto fue el que indicó el cliente a través del comando PORT (puerto Y). De este modo, el servidor establece el canal de datos por el que se transmite la información. * El anterior esquema es el modo activo, porque es el servidor el que activamente crea el canal de datos. * modo pasivo: * El cliente arranca e intenta conectarse contra el servidor. Para ello crea un canal de control estableciendo una conexión física a la dirección IP (o nombre de dominio) del servidor, y desde cualquier puerto del cliente (puerto X) hacia el puerto 21 del servidor. (este punto es igual que en el modo activo). * El cliente envía el comando PASV para activar el modo pasivo. Como respuesta a este comando, el servidor retorna un número de puerto que tenga disponible (puerto Z). * Para ciertas operaciones, es necesario realizar el envío de un fichero, por lo que se crea el canal de datos. Para ello el cliente crea una conexión física desde uno de sus puerto (puerto Y) hasta un número de puerto del servidor. * Este número de puerto fue el que indicó el servidor como respuesta del comando PASV (puerto Z). De este modo, el cliente establece el canal de datos por el que se transmite la información. * La principal diferencia es que en el modo pasivo es el cliente el que inicia las conexiones y nunca el servidor. * Supongamos que nuestra conexión a internet utiliza un cortafuegos. * El principal cometido del cortafuegos es cerrar los puertos para conexiones entrantes, es decir: que sobre ciertos puertos sea imposible realizar una conexión remota. * Si el cliente FTP utiliza un cortafuegos, y se utiliza el modo activo de conexión, tendremos muchas posibilidades de que no funcione correctamente, ya que cuando el servidor necesite abrir el canal de datos, se podría utilizar uno de los puertos que el cortafuegos del cliente mantiene cerrado. * Sin embargo, en el modo pasivo, un cortafuegos no supone ningún problema en el cliente, ya que las conexiónes siempre las inicia el cliente, y el servidor nunca intentará abrir una conexión con el cliente, traspasandose el problema de seguridad al servidor (o no poderse establecer la conexion) por que los puertos pedidos estan filtrados en el servidor. * Si a esto le añades que hay que definir modos de transmision (ascii o binario) estamos en un protocolo de otros tiempos, es preferible un servidor web para las descargas anonimas, si no se pretenden otras funcionalidades no hace falta poner apache, boa por ejemplo, hay servidores web minimos implementados hasta en bash.