Guía Básica de FTP para Principiantes
Guía Básica de FTP para Principiantes
Aviso
Ftp
lo primero será una simple lección para que sepan como hacer un FTP sin problemas, para los
que no les de el cerebro para entender como usar bien los comandos,
yo preferiría que utilicen comandos porque ya tendrán que hacerlo
mas a menudo, o casi siempre ;).
A pesar de la inseguridad del tema, hay métodos para evitar este espionaje, esto se puede
realizar utilizando software servidor y cliente que utiliza criptografía asimétrica para
establecer y llevar a cabo la comunicación, verán esto muy a fondo en la lección 11 sobre
criptografía, mientras tanto solo sabrán que existe un método seguro, si desean saber mas al
respecto busquen “SFTP” (Secure FTP) en su buscador favorito ;).
Ahora que ya sabemos que es muy inseguro... Vamos a ver lo métodos que disponemos para
ingresar a un servidor FTP, y estas dependen de la configuración del mismo...
Al intentar ingresar a un Server FTP, este siempre nos pedirá autentificación, (usuario y
contraseña), dependerá de que tipo de servicio FTP ofrece, de la configuración y de la
incapacidad de los administradores si podremos...
Cuando entramos a un sitio FTP como anónimo (usuario: anonymous), el sitio no necesitará
contraseña porque estará configurado para que tu puedas hacerlo, pero si nos pedirá una,
que en realidad no es mas que poner cualquier cosa, les recomiendo poner el mail suyo como
gentileza en los servidores anónimos y así poder estar en una nueva lista de SPAM :P, a
menos que sea que entraste porque el administrador es un idiota (puedes saltar en una
pata ya que podrás hacer lo que quieras, pero no te entusiasmes, el único sitio que vi que
hackearan así fue www.elmonomario.com hace 2 años, y es el único caso que verifiqué
personalmente aunque se de muchos mas, bueno retomando la charla les contaba que a
menos que suceda esto, nuestra función dentro del servidor estará restringida a leer y copiar
a nuestro disco los archivos que tengamos permitidos.
En la segunda parte de la lección les explicaré como es el tema de los permisos, acceso
limitado, etc...
Siguiendo con el tema, como usuario anónimo de un sitio FTP podremos navegar entre sus
archivos como si fuese un disco mas de nuestra unidad (para que entiendan mas fácil), pero
sus funciones se verán restringidas a las de un usuario anónimo, según fueron definidas en el
server.
Cuando nos referimos a un usuario registrado supongo que estamos conectándonos al FTP de
algún servidor nuestro o que tenemos una cuenta con una pagina Web o solo contratado
El servidor nos preguntará usuario y password que verificará para iniciar la sesión, en este
modo de conexión, (a menos que el administrador sea un idiota....blah, blah..), tendremos
acceso a borrar, escribir, leer, copiar, editar y restringir acceso a los archivos dentro de
nuestro sub-directorio dentro del servidor, generalmente /home/usuario (/home es el
directorio base donde entran todos los subdirectorios de los usuarios como Uds.), no siempre
veremos nuestro directorio de esa forma, tipo “/home/usuario” sino que simplemente
veremos que estamos en el directiorio raiz ( / ) porque el servidor se encarga de esto
configurando accesos y permisos, digamos que lo que sucede es que nos vemos encerrados
dentro de una “jaula”.
Entrar a ftp
Bueno, esta parte es la mas bonita, porque cuando uno entra como administrador a un
servidor, puede hacer lo que se le de la gana, puede acceder a todos los archivos, cualquiera
sea el usuario
propietarios de los mismos, se tiene acceso como un “super usuario”, podrás cambiar la
configuración del servidor, administrar los accesos, otorgar los permisos, borrar, escribir,
editar, leer, copiar y mover cualquier archivo de un lado a otro así también como cambiar sus
propiedades, restringirlos a solo lectura, lectura y escritura, y todos esos parámetros que se
le atribuyen a un archivo que lo caracterizan.
Obviamente también tendrás acceso a cambiar las contraseñas de cualquier usuario, generar
usuarios, borrar usuarios, en fin, tendrás omnipotencia en tu servidor, pero ojo, si eres uno
de esos administradores “despistados” apenas pongas en marcha tu servidor y lo vea algún
otro alumno, te echarán de la empresa por no saber configurarlo :P.
Como ya verán a lo largo del curso no soy una de esas personas que se caracterizan por
recomendar programas a menos que sea completamente necesario para seguir adelante con
el tema...
Para empezar les contaré que existen miles de clientes de FTP, o sea, miles de programas
que abrimos, instalamos y luego ejecutamos y nos pide, usuario, dirección remota, password,
puerto, (21 es puerto predeterminado), y nos abrirá una especie de explorador donde
veremos en un lado nuestro disco, y por el otro el disco remoto, (sitio al cual hemos
accedido), donde también al lado de cada archivo aparecerán los parámetros
correspondientes al mismo, como “solo escritura”, “solo lectura”, etc... pero ojo, no aparecen
de este modo, sino que con unas letras al costado ejemplo:
archivo.xxx -rwxrw–r--
Esto nos indica en orden periódico las restricciones a cada tipo de usuarios, el primer
carácter que acá vemos con una – puede variar entre “d” (directorio), “l” (accesos directos
de carpetas o archivos), “- ” (archivo).
Los demás son repetitivos, primero va las autorizaciones del usuario (definidas por el mismo),
luego las de los usuarios de la red (definidas por el usuario dueño del espacio), luego de
todos los
usuarios que no pertenezcan a la red (definidas también por el usuario dueño del espacio),
todas estas definiciones están sujetas a cambios por parte del root, o sea que es root
(superusuario, aunque sin capa roja) puede cambiar lo que quiera siempre.
En caso que aparezca “-” es que no esta autorizado, depende donde se encuentra sabremos
quien no esta autorizado a que cosa, en realidad el “-” establece que el campo esta vacío, y
de esa forma no autoriza al usuario a efectuar la operación que le corresponde al espacio
donde esta el “-”.
Bueno, yo no les enseñaré a utilizar estos programas porque cada uno tiene un toque
diferente, suponiendo que todos Uds. Utilizan Windows, les enseñaré a hacer FTP de un modo
muy sencillo, si utilizan Linux hacen lo mismo en el Mozilla ;).
Primero abren una ventana de Internet Explorer, en la barra de direcciones deben escribir de
la siguiente manera:
1) FTP://usuario:password@servidor:puerto/carpeta
Con este sistema le decimos al servidor todos los datos entonces entrará directamente a
nuestro usuario y a nuestra carpeta sin hacer preguntas ni nada, y veremos un contenido
como si estuviésemos explorando nuestro disco duro.
2) FTP://servidor:puerto
De esta manera nos preguntará usuario y password (a menos que sea FTP público que son
esos que nos dejan entrar de forma anónima) y luego entraremos a la raíz, debemos clickear
en la carpeta que queremos abrir o nos quedamos en la que estamos .. por mi es lo mismo :P.
Pueden usar cualquiera de los dos métodos, el primero trae un problemita y es que
cualquiera que tenga acceso al PC podrá ver el usuario y el password que quedará en el
Historial como parte de la dirección, por lo tanto lo mejor sería...
FTP://usuario@servidor:puerto/carpeta
De este modo el servidor les pedirá el password y quedarán dentro, lo malo de este sistema
utilizando el Internet Explorer es que muchas veces quedan conexiones “colgadas” dado a
Siguiendo con nuestro tema... para copiar archivos, (solo si son usuarios autorizados), tan
solo deben arrastrarlo como si se tratara de una carpeta mas en su PC (explorer mayor al 4..
tomenlo en cuenta si no funciona), lo mismo debemos hacer con todas las cosas que
deseemos hacer... como si fuera nuestra PC :).
Para cambiar las propiedades del archivo, (ejem. -rwxw-x-rw-), debemos clickear sobre el
archivo o carpeta con el botón secundario del ratón y ahí tenemos un cuadro de diálogo que
nos permite realizar estas modificaciones, si es que estamos autorizados a tal cosa.
Es imprescindible que conozcas el tipo de fichero del que se trata al momento de bajar algo
de un FTP, si no fuera así, puede que el fichero obtenido contenga errores que sea inutilizable,
lo obvio de cualquier sistema.
Podemos distinguir dos tipos de ficheros básicos ASCII (texto estándar) y binarios.
En un fichero ASCII la información está escrita en código ASCII (letras, números, signos)
mientras que un fichero binario puede contener programas ejecutables, imágenes gráficas,
ficheros de sonido, etc.
Para poder obtener bien un archivo según su tipo deberán cambiar el modo al obtenerlo para
que no de conflictos, esto lo veremos mas adelante y no es complicado :).
Los sitios que ofrecen el servicio de FTP anónimo, pueden atender a un número limitado de
usuarios al mismo tiempo, por lo que muchas veces no puede realizarse la conexión
apareciendo el correspondiente
mensaje del sistema remoto, en ese caso, vuelve a intentarlo más tarde o prueba en otro
lado.
Una de las alternativas más importantes que nos permite Internet es la transferencia de
archivos de un ordenador a otro desde cualquier parte del mundo. Para ello utilizamos el
protocolo de transferencia de archivos o "FTP" (file transfer protocol).
Si a través de Telnet podemos tener acceso a archivos distantes de nosotros, mediante FTP
podemos compartir (recibir y enviar) nuestros ficheros con otros ordenadores, siempre que el
administrador de estos nos lo permita.
Imaginemos una empresa tiene sucursales en varios lugares y quiere que todas ellas posean
determinados archivos que se actualizan cada cierto tiempo desde su sede central. A su vez,
también las sucursales que generan sus propios documentos quieren enviarlos a la sede
central de la empresa.
Esto se consigue, montando un ordenador en la sede central con los archivos que quieran
distribuirse y conectándolo a Internet, ofreciendo la posibilidad de efectuar la transferencia
de esos ficheros mediante FTP. A su vez, las sucursales se pondrán en contacto con la sede
central de la empresa utilizando la herramienta FTP de su ordenador.
La forma de conexión con la central es muy similar a la utilizada en Telnet, al contactar con
la central, su ordenador pedirá la el usuario y password, tras lo cual, ya se podrá transferir
Aula virtual Servidet 8 / 30
Romero Fernández, Víctor
Recalco la inseguridad de estos sistemas, por lo que si desean implementar algo similar para
sus empresas lo mejor sería hacerlo mediante SFTP.
Comenzando el FTP
Para iniciar un FTP desde UNIX, Linux o DOS, hay que escribir en la línea de comandos “FTP”
y listo, nos aparecerá donde había el usuario o en DOS el ftp> como unidad, de ahora en mas
lo llamaremos “prompt” como es debido.
Para ver los comandos disponibles en la versión que tenemos de FTP escriban “?” y nos
aparecerán en forma de lista distribuida por columnas cada una. NO se asusten mucho,
porque hay varias maneras de utilizarlos, en DOS son la mitad de los de Linux o UNIX, pero
esta bien de todos modos.
Para saber que es cada comando, escriban “? Comando”, donde “comando” es el comando
que quieren averiguar.
Yo les enseñaré a usar el FTP desde Linux y UNIX, Uds. verán los comandos que pueden usar
o no, en caso de que estén en DOS, la mayoría de estos estarán así que no se deben hacer
problema, sobre todo porque los ejemplos estarán en DOS.
La mayoría de los servidores de ficheros trabajan en UNIX,Por eso, los ficheros y los
directorios tienen nombres con la convención UNIX pero al transferirlos a un PC adoptan
automáticamente el formato del sistema operativo que posea el mismo ya que el sistema de
archivos y nombres no es siempre el mismo.
El nombre del servidor que comunica se con FTP puede ser especificado en la línea de
comandos al tiempo que llamamos al programa, cuando lo hacemos de este modo el
programa abre inmediatamente una conexión con el mismo, de lo contrario, FTP espera las
instrucciones del usuario, por ejemplo...
En ese caso se abriría una conexión en el puerto 21 con el host ftp que especificamos.
Si deseamos especificar un puerto sería por ejemplo... ftp> open host puerto
Como ya les dije, el protocolo FTP soporta los tipos de archivos ASCII y binario, ASCII es el
tipo FTP por defecto.
Una consulta se puede realizar de dos formas, una con los comandos y argumentos
! esto lo que hace es salir del modo FTP sin desconectarse para poder usar un shell,
volvemos saliendo de este con “exit”, ejemplo...
ftp> !
Microsoft Windows 2000 [Versión 5.00.2195] (C) Copyright 1985-2000 Microsoft Corp.
C:>exit
ftp>
ascii transfiere los archivos en modo ASCII, este es el valor por defecto, cuando queremos
transferir uno binario debemos cambiar al modo con “bin”, ya lo veremos...
ftp> ascii
ftp>
bell hace el sonido de una campana después de completarse cada transferencia de archivo,
veamos....
ftp> bell
ftp> bell
ftp>
binary transfiere los archivos en modo binario. Imágenes, Ejecutables, etc, veamos...
ftp> binary
ftp>
bye cierra la conexión con el servidor, también con bye y queda mas lindo :P, ejemplito...
mejor no :P, sino tengo que abrir otra sesión, pruébelo Uds. jeje.
cd se introduce dentro del "directorio remoto" del servidor, también sirve para bajar de
directorio...
ftp> cd ..
ftp> cd html
ftp>
Cdup retrocede al directorio padre del directorio de trabajo actual dentro del servidor.
Pero como vemos no funciona?¿... esto es porque no esta en el programa ftp de Windows,
para usarlo utilizamos como intermediario el comando “literal” que sirve para mandar
consultas literales al server, entonces veamos...
ftp> cdup
Comando no válido.
ftp>
close termina la conexión con el servidor, el comando close no sale del cliente FTP, el
comando bye o quit si lo hace.
delete elimina un archivo remoto, el archivo remoto puede ser un directorio vacío, veamos...
ftp>
dir imprime en pantalla un listado del directorio remoto u opcionalmente podemos hacer que
lo haga en un archivo local... si no especificamos ni el archivo local ni el directorio remoto, se
lista el directorio de trabajo actual, veamos dos ejemplos...
ftp> dir
get copia el archivo remoto a un archivo local, si el archivo local no se especifica, FTP utiliza
el nombre del archivo remoto especificado como el nombre de archivo local, veamos...
hash conmuta imprimiendo un signo de fragmentación (#) cada 2048 bits transferidos,
veamos...
ftp> hash
150 Opening BINARY mode data connection for logo.gif (9218 bytes).
####
226 Transfer complete.
ftp>
ftp> lcd
ftp>
ls escribe un listado del directorio remoto en el archivo local, funciona igual que “dir” a
diferencia que el listado incluye solamente una lista con los nombres de archivos, y que le
podemos pasar ciertos parámetros para obtener otros resultados, por ejemplo, con “ls –l”
obtenemos lo mismo que con “dir”, si le agregamos el parámetro “–a” nos mostrará archivos
ocultos del sistema.... uhhh... justo ahora me acuerdo de esto... para ocultar un archivo en
UNIX debemos escribirlo con un punto adelante, por ejemplo “.archivo” es un archivo oculto,
para verlo tendremos que usar “ls –a”. Tal como lo hace el comando “dir” podemos
especificar un archivo local para que se imprima en él el resultado de la consulta.
mdelete logo.gif? y
mdelete menu.gif? y
mdelete banner.gif? y
ftp>
mdir escribe un listado de los archivos remotos en el archivo local, uso idéntico a “dir”.
mget copia los archivos remotos en el sistema local, de a muchos, uso similar a “mdelete”.
ftp>
mput copia los archivos del sistema local al sistema remoto, veamos...
mput hola.txt? y
open establece una conexión al servidor, utilizando el número del puerto (si se especifica),
veamos...
Conectado a alumnoz.com.
220 ProFTPD FTP Server ready.
Usuario (alumnoz.com:(none)): darkhis#alumnoz.com 331 Password required for
darkhis#alumnoz.com. Contrase±a:
230 User darkhis#alumnoz.com logged in.
ftp>
150 Opening ASCII mode data connection for index2.html. 226 Transfer complete.
ftp: 529 bytes enviados en 0,01Segundos 0,49KB/s.
ftp>
ftp> pwd
ftp>
reget reget suele actuar como get, excepto que si existe un archivo local y es más pequeño
que el archivo remoto, el archivo local es supuesto como copia parcialmente transferida del
archivo remoto y la transferencia continua desde el punto aparente de fallo; este comando es
útil cuando se transfieren archivos muy grandes en redes que tienden a interrumpir
conexiones.
rename renombra desde remoto, que puede ser un archivo o un directorio, a remoto,
veamos...
350 File or directory exists, ready for destination name. 250 rename successful.
ftp>
ftp>
size muestra el tamaño del archivo remoto, debemos usarlo con el comando literal si
queremos que funcione correctamente.
ftp> status
Conectado a alumnoz.com.
Tipo: binary; Detallado: Activo ; Campana: Desactivado ; Solicitando: Activo ; Global: Activo
Bueno, con esos comandos, nos manejaremos sin drama dentro de cualquier servidor, suerte
;).
Al conectarnos por FTP, nos encontramos con el problema de disponer un user y password,
esto como suponen se debe a protección que da el servidor a la información que posee para
mantenerla fuera del alcance de intrusos.
La comunicación por FTP anónimo es una forma de ofrecer archivos que se encuentran en
Internet sin necesidad de poseer este par de datos tan importantes.
Existen muchos servidores públicos que admiten conexiones FTP anónimas, estos servidores
se dedican a distribuir software de dominio público y shareware para cualquier tipo de
ordenador o sistema operativo existente, aunque no todos tienen buenos fines, por la web,
IRC y otro tipo de medios podemos encontrar servidores FTP que brindan software ilegal,
llamado WAREZ, mp3, software libre, etc...
Ftp de ratio
Eventualmente, en alguna parte de su existencia, sobre todo si andan por el mal camino... se
van a encontrar con ftp anónimos, donde podemos ver que el mensaje de bienvenida dice
una cosa como “RATIO = 1:3”... Qué quiere decir esto?¿... Que la gente del servidor no da
nada grati$, tampoco te cobran pero están dispuestos a dejarte bajar 3 bytes por cada uno
que subas... Entonces queda que si subís un archivo de 15mb te va a dejar bajar 45mb.
Esta supo ser una política muy noble y caballeresca, y fue respetada al pie de la letra por
muchos años. Hoy dia ya todos conocemos a los programas P2P como el Kazaa, Swapoo,
eDonkey, no se.. ustedes pónganle el nombre.
Si queremos algo que esté en un servidor FTP con ratio, no debemos buscar en otros lados,
sino subirle algo a esa gente y bajar el que buscamos, y eventualmente otros archivos.
A pesar de las calenturas que nos agarremos porque el archivo no termina de llegar, de bajar,
o que no nos deje conectar, sentimos como que estamos haciendo algo por la vida, acá
sentados frente a nuestras máquinas .. bueno ... todo pasa por ese gran libro llamado “ética
no escrita”.
Para poder realizar conexiones FTP como las que hemos mencionado necesitamos disponer
de soporte TCP/IP, o estar conectado a un servidor que nos ofrezca FTP.
Para usuarios que no tenían buenas conexiones, existía el FTPmail, el cual, permitía acceder
mediante mensajes de correo electrónico a servidores FTP.
Para hacer un FTP vía e-mail se tenía que tener la dirección del servidor y procederíamos de
la siguiente forma...
Primero hay que conocer el nombre del fichero a capturar y la dirección del Server que lo
sirve, usando, o buscándolo mediante algún Robot como... FTP-search en la WWW, hoy en día
trabajo de www.alltheweb.com.
Una vez conocidos estos datos, solo hay que hacer lo siguiente...
-Enviamos un mail a la dirección que debemos hacerlo, (según el servidor hay que
averiguar).
-Dejamos el campo subject: vacio.
-En el cuerpo del mail ponemos la línea de comando, por ejemplo para obtener un archivo
que ya ubicamos escribimos lo siguiente...
Y dependiendo del trabajo que tengan pendiente, en unas horas tendremos nuestro fichero
en la casilla, sin ningún trabajo extra.
De todos modos esto ya es obsoleto, al menos para el uso cotidiano que le puedan dar.
Los servidores de FTP anónimo están sometidos a abusos de entre los que destacan
principalmente tres:
Fallo de seguridad en el servidor debida a una mala configuración del servidor de FTP.
Los archivos anónimos se pueden conseguir de muchas formas. La mayoría de las veces es a
través de servidores FTP anónimos. Algunos servidores permiten la existencia de zonas con
permisos de escritura (directorios incoming) para que los usuarios puedan dejar ahí sus
archivos.
Pero si los usuarios anónimos tienen permiso para leer de ese directorio la probabilidad de
abuso por parte de dichos usuarios aumenta.
Ciertos usuarios consiguen y distribuyen listas de warez que enumeran sitios con
vulnerabilidad y la información que contienen.
Éstas listas suelen incluir los nombres de directorios con permisos de escritura y la
localización de software pirata, así como archivos de passwords u otra información
potencialmente interesante para cualquier lector.
Estos usuarios se aprovechan de la poca importancia que dan los administradores a que este
tipo de abuso exista, o bien de la confianza que tienen dichos administradores en la
configuración de su servidor .
También es importante conocer el tema de seguridad a la hora de que los usuarios accedan a
nuestro server, es muy fácil bloquear un servidor si no esta bien configurado, por ejemplo
admitir varias conexiones simultaneas desde una misma IP, ya es muy mala idea dado a que
basta con que el usuario mal intencionado se conecte tantas veces como pueda sin
necesidad de ingresar usuario y password, solamente pidiendo la conexión y llegará un
momento en el que todas las conexiones posibles, previamente configuradas en el server
sean tomadas, para que el FTP ya no acepte peticiones. Entonces tenemos un usuario, con
20 conexiones abiertas y 600 segundos para que se desconecte por time out (en el caso de
que hayamos configurado esto), y posiblemente vuelva a conectarse cuando se le
desconecte, en fin, muy malo!!!.
Este es el ataque mas común a este tipo de servicios, se le llama Denial of Service y lo
veremos mucho mejor en la semana 7 del curso.
En los prácticos de la semana no6 veremos como hacer un ataque utilizando la técnica de
Spoofing a un servidor FTP, el ataque onsistirá en lo anteriormente dicho, solamente que
ningún firewall podrá detenerlo por tener la característica de ser emitido desde cientos de
direcciones IP falsas por segundo.
No puedo darles mas detalles dado a que no lo entenderían pero llegado el momento, espero
que se diviertan ;).
Pasos a seguir por un administrador para asegurarse que la seguridad del sistema no está
siendo comprometida...
Asegurarse que el servidor de FTP no tiene el comando SITE EXEC haciendo Telnet al puerto
21 y tecleando SITE EXEC, o conectándose normalmente y enviando SITE EXEC mediante
LITERAL.
Si lo tuviera asegurarse que es la versión más moderna (es decir Wu- FTP 2.4 o superior), en
antiguas versiones esto permitía ganar a cualquiera una shell a través de ese puerto, Wu-FTP
es un servidor de FTP para UNIX o LINUX demasiado bizarro y, como ya ven, con
vulnerabilidades, generalmente buffer overflows, como todos los programas escritos en C, su
gran debilidad, entenderán lo que es un buffer overflow a medida que vayan avanzando en el
curso.
En definitiva, podemos añadir otra etiqueta de OBSOLETO a este sistema ya que hoy día, los
servidores en estos sistemas utilizan el ProFTPD que es casi un estándar.
Asegurarse que el directorio principal no esta poseído por FTP, si lo estuviera un intruso
podría ejecutar SITE CHMOD 777 en el directorio principal y luego en los archivos para
obtener acceso. El comando SITE CHMOD debería ser eliminado porque usuarios anónimos no
necesitan ningún privilegio extra, ejecutando este comando el intruso obtendría permisos de
administrador para manejar todos los archivos del directorio.
Se debe evitar que los archivos propios del sistema FTP estén fuera del alcance de los
usuarios ya que sino estos pueden ser reemplazados por otros binarios que al reiniciar el
sistema, serían ejecutados y por lo tanto la máquina quedaría infectada con el virus, troyano
o programa que el lammer haya metido :P.
omando PORT
Como todos no saben, o no deberían saber, el protocolo FTP se maneja de una forma
bastante diferente al común de los protocolos de conexión “cliente/servidor” TCP/IP, esto se
debe a que la conexión se establece por un puerto cualquiera en el cliente (generalmente
mayor a 1024), y otro puerto en el servidor, (generalmente el 21), si no entienden ya esto de
los puertos esperen a tener todo el detalle sobre conexiones y puertos en la lección no6.
Veamos como un ejemplo sencillo que cada vez que entramos a una página web, en nuestra
PC se abre un puerto XXXX para conectarse al servidor Web en un puerto determinado
(siendo el puerto 80 el puerto de las paginas web por defecto), por ejemplo...
http://www.alumnoz.com:80
http://www.alumnoz.com
http://www.alumnoz.com:81
Con esto quiero dejar claro que cuando nos conectamos a una página web, es al puerto 80.
Veamos que cuando navegamos por una pagina web, en la que generalmente hay imágenes
u otro tipo de datos, al momento de pedirla estableceremos una conexión, en esta será
pasado el código de la página y luego para cada elemento que esta contenga se abrirá una
nueva conexión al mismo puerto 80. Veamos en un ejemplo se trata de entrar a la web...
Entramos a: http://www.alumnoz.com/fcc.htm
Como ven primero nos envia mediante una conexión la pagina llamada “fcc.htm” y luego las
imágenes que utiliza, para el caso “fcc2.gif” es la imagen del menú mientras que “fcc.gif” es
el fondo.
Es importante apreciar que el puerto utilizado en el servidor siempre es el 80, mientras que
nuestra PC el “CLIENTE” utiliza uno cualquiera.
Para que explico todo esto?¿, es para que vean que normalmente en una conexión
cliente/servidor, las conexiones son directas y a un único puerto del servidor, uno y solo uno,
en el ejemplo se trata del 80, ya que hablamos de páginas web.
Sigamos con FTP, el tema es que en estas conexiones sucede todo “casi del mismo modo”,
ya que el cliente se conecta al puerto 21, (si es que no se ha cambiado el puerto por defecto
del servidor) y comienza a hacer uso del servicio ofrecido.
El “problema” con esto es que este protocolo esta diseñado para trabajar en forma
“dinámica”, si prestan atención en clientes como cuteFTP o cualquier otro de entorno gráfico
que no sea el IExplorer, Uds. podrán bajar archivos en forma simultánea, así como continuar
mirando el contenido del servidor sin problemas, cosa que ni en el Explorador (en algunos si),
ni en línea de comandos (en ninguna), se puede.
Esto se debe a que en una conexión FTP se trabaja de dos formas, modo PASIVO y modo
ACTIVO, a continuación intentaré explicarlo...
MODO ACTIVO:
El modo activo es la parte de la conexión que se encarga de pasar los comandos, cada vez
que tecleamos algo y damos ENTER, este comando será enviado al servidor ftp directamente
en modo ASCII, esta conexión se realiza cuando nos conectamos y se termina cuando
finalizamos la conexión, la misma se establece (a modo de ejemplo), de la siguiente forma...
Luego, al ejecutar algún comando sucede algo como lo siguiente... CLIENTE:2689 ---------
COMANDO ---------> SERVIDOR-FTP:21
Momento en el cual debemos separar... en el caso de que el comando sea un comando “de
movimiento” o “confirmación de estado”, el servidor le contestará al cliente por la conexión
ACTIVA del siguiente modo...
Con un “comando de movimiento” me refiero a "cd public_html", "del archivo.xxx", "cd ..",
mientras que uno de estado sería "pwd". Estos comandos se diferencian del resto por el
hecho de que trasmiten y reciben texto plano, mandan un mensaje de texto y reciben otro de
las mismas características, sin necesidad a una trasmisión de archivos o listados especiales.
“cd public_html” y “cd ..” lo único que hacen es posicionarnos en otro directorio dentro del
servidor, por lo que su respuesta será un “OK”, o no “COMANDO INVÁLIDO porque...”, nada
especial.
“del archivo.xxx” se utiliza para eliminar un archivo llamado “archivo.xxx” del servidor en el
directorio en el que nos encontramos, por lo que la respuesta será un “OK”, o no “DEJÁ DE
MANDAR CUALQUIER COSA QUE NO FUNCIONA”, nada especial :P.
“pwd” nos indica en que directorio nos encontramos dentro del servidor, la respuesta será un
simple texto, NADA ESPECIAL!!!!.
MODO PASIVO:
El modo pasivo es la parte de la conexión que se encarga de enviar y recibir los archivos así
como los listados de directorios o las demás órdenes FTP que requieran de su uso, de modo
que al hacer "get", "send", "put", "dir", "ls", etc... siempre estaremos utilizando una conexión
PASIVA.
El modo pasivo, se maneja estableciendo una conexión diferente y en paralelo con el servidor
FTP, por la cual será llevada a cabo la transferencia en cuestión, por ejemplo si pedimos un
archivo pasará lo siguiente en nuestras conexiones...
Entonces está claro que primero se le pasa el comando al servidor por medio de la conexión
ACTIVA lo que da lugar al comienzo de la transferencia por otro puerto distinto en modo
PASIVO, dándonos la libertad de seguir interactuando con el servidor por el modo ACTIVO.
Deduciendo que como dice su nombre, el modo PASIVO se utilizará para llevar a cabo los
intercambios negociados que no requieren de nuestra actividad, sino que son propias del
protocolo.
Esto se debe a que cuando estamos en un servidor FTP sería ilógico que por pedir un archivo
tengamos que esperar a que este baje por completo para continuar realizando otras tareas,
razón por la cual protocolo se expande y se abre a esta posibilidad.
En definitiva el modo PASIVO y ACTIVO son dos grandes amigos, que trabajan en modo
paralelo permitiéndonos usar FTP para navegar, bajar y subir de forma simultanea archivos y
listados... pero como es que se logra esto?¿, acaso es automático?¿, noo!!!!!, justamente es
aquí donde entra el tema del comando PORT, este comando se utiliza en modo ACTIVO, para
especificarle al servidor que abra un nueva conexión con nosotros en un puerto determinado
para comenzar un modo PASIVO, para el caso en cuestión y contrariamente a lo que sucede
cuando nos conectamos, en donde nosotros pedimos al servidor la conexión, luego de
enviado el comando PORT con los parámetros adecuados, el servidor FTP establecerá una
conexión con nosotros mediante su puerto PASIVO (en el ejemplo y por defecto es el 20),
teniendo como destino puerto que le hayamos especificado mediante el comando PORT.
Si hasta acá si no huelen por donde viene la mano, es momento de releer todo antes de
continuar, si es la quinta vez que te encontrás con este mensaje podés seguir leyendo :P...
Ahora veamos el uso básico del comando PORT para llegar a la tan preciada conclusión...
cuando nosotros hacemos uso de alguno de los comandos "de transferencia", sin que
nosotros lo veamos (al menos no hasta que reciban el CD2 con los capturadotes de
paquetes), el cliente le envía al servidor los datos necesarios para abrir la nueva conexión
mediante el comando PORT, que se conforma de la siguiente forma...
PORT h1,h2,h3,h4,p1,p2
p2 = segundo multiplicador
p1 y p2 se utilizarán para comunicar cual será el puerto al que se debe conectar el servidor a
nuestra PC (cliente), para iniciar la transferencia en modo PASIVO, el puerto es el producto
del siguiente cálculo...
Al recibir este comando, el servidor calcula el puerto (27 x 256 + 58 = 6970) y establece una
conexión en modo pasivo con nosotros. En resumen y para este caso se conectará a la ip
“207.46.130.108” (nosotros), al puerto “6970” (el puerto indicado en el comando PORT).
Como supongo que ya está todo bastante entendido, vamos a ver el problema, aunque
Aula virtual Servidet 23 / 30
Romero Fernández, Víctor
espero que todos ya hayan captado, supongo que ninguno tiene idea, así que por las dudas y
antes de seguir vuelvan a leer todo otra vez :P.
Cuando nos encontramos “detrás” de un router, o en una LAN usando un algún “GATEWAY” o
“NAT”, al pedir una página web (según el primer ejemplo) funcionaría de la siguiente forma...
Como ven no hay problema, todo funciona como debe ya que en ningún momento
necesitamos que se realice una conexión en sentido contrario... veamos ahora que pasa en
FTP al intentar hacer una transferencia...
Tomando en cuenta que la línea de comandos de Windows/Linux o la que sea no sabe cuando
tienen un router/gateway de por medio, por el simple hecho de que no son inteligentes y
obviamente los desarrolladores no profundizaron en la automatización de este chequeo,
nuestro cliente solo conoce la IP interna de nuestra PC, ya que la externa es del router y no
nuestra.
Para el caso del ejemplo, cuando enviamos por medio de la conexión activa al servidor el
comando “PORT 192,168,100,8,11,213”, este intentará conectarse con la IP “192.168.100.8",
para quienes no lo saben esto es una dirección IP de red privada (red interna), sabiendo que
la IP de quien esta conectado es “207.46.130.108” (la IP del Router) dará un error ya que
considerará que tratamos de engañarlo o en el mejor de los casas intentará establecer la
conexión a la IP “192.168.100.8” que por “axioma de redes” tiene que estar en su propia LAN,
consiguiendo de uno u otro modo UN ERROR.
Repasemos los nodos de la conexión para que quede mas claro... 192.168.100.8:3029 <------>
207.46.130.108:5689 <------> alumnoz.com:54321
Queda claro que el comando "PORT 192,168,100,8,11,213" es inválido y que el error se debe
a que el cliente FTP no detecta que tienen un router/gateway de intermediario.
Sería lógico y no muy difícil que el cliente verificara si el servidor al que esta conectado tiene
una IP de LAN, en caso afirmativo se deduce que el mismo se encuentra en su propia LAN y
por lo que este comando sería válido. En caso contrario que reconozca su condición.
Pero que sucede si se da cuenta?¿, hay alguna solución?¿... podemos pensar que en tal caso
el “comando correcto” sería enviar "PORT 207,46,130,108,22,58", ya que le estamos dando
una IP correcta, que es la del router con el puerto disponible para una conexión en modo
PASIVO, pero veamos que el router solo se encarga de redirigir el tráfico desde dentro para
afuera, por lo que al intentar recibir una conexión desde afuera al puerto 5690 (en este
caso), simplemente la rechazaría por no saber de que se trata.
Entonces... como hacemos para usar FTP si estamos en una LAN!?!!??!!?, acaso es
imposible?!?!?, ya les mostraré.... pero en definitiva, el resultado de enviar un comando PORT
no válido es "ILEGAL PORT COMMAND" o "INVALID PORT COMMAND", siendo esto que vimos
hasta ahora es la causa de sus pesadillas.
Ahora,... como lo solucionamos???, y... la verdad que es una solución muy simple y sencilla,
el problema es que en el cliente de línea de comandos así como algunos exploradores, por
problemas mentales de los programadores no tiene incluida la función correspondiente.
La solución es tan sencilla como sencilla y consiste primero en enviar el comando “PASV” al
servidor, quien indicará al mismo que nosotros seremos quienes nos conectaremos al
servidor para realizar las conexiones pasivas (y no el a nosotros), y luego enviar un comando
PORT “inverso”, cambiando de ese modo el modo de transferencia a que nosotros seremos
como clientes quienes nos conectaremos al servidor en otro puerto. Los clientes como
cuteFTP detectan este problema y lo hacen automáticamente, razón por la cual SI nos
podemos conectar usando estos y NO por la línea de comandos.
A grandes rasgos la conexión usando este comando PASV junto a PORT correspondiente sería
del siguiente modo...
Como ven ahora previo al comando PORT enviamos el PASV para luego pasarle el puerto al
que nos conectaremos, siendo finalmente nosotros los que avisamos y nos conectamos,
resultando:
Supongo y estoy seguro de que lo entendieron, las razones están detalladas :), si sienten que
el nivel técnico del apartado los sobrepasa, esperen a recibir la Semana no6 y no tendrán
ningún problema al releerlo.
Para finalizar, pueden ver el error en vivo y en directo simplemente haciendo “inicio >
ftp> debug
Para buscar servidores FTP anónimos es bueno recurrir a servidores Archie para que efectúen
nuestra búsqueda, siempre y cuando estemos en la década anterior, pero como ahora
estamos en esta, debemos ingresar a: http://www.filewatcher.com, por motivos legales, cada
día las búsquedas arrojan menos resultados ya que muchos sitios públicos son censurados
por falta de control en su contenido.
Un sitio interesante para conocer servidores FTP ordenados por países es:
http://www.ftp-sites.org.
Terminado esto les comunico, que para subir un sitio Web utilizaremos FTP, pero eso lo
aprenderemos en la lección 3 prácticos.
Abrimos este archivo antes mencionado en cualquier carpeta que queramos .. para no hacer
las cosas confusas, podemos abrirlo en c:ftp .
Lo primero que nos pide cuando lo abrimos, es crear un usuario, que seria eventualmente el
que usemos nosotros, o puede ser el primero de una larga lista de usuarios, o bien un usuario
anónimo. Luego nos habla de la carpeta home del usuario. Lo que yo hice fue crear un
directorio en c:ftphome y de ahí ir creando directorios. Si se desea, se puede crear un
directorio para cada usuario, sabiendo que el usuario no puede salir de ahí. Si quisieramos un
ftp “comunitario” hacemos la carpeta c:ftphome y creamos carpetas tales como pub, uploads,
admin (esta ultima es solo para hacer pinta en realidad).
Con unos pocos Siguientazos mas, vamos a ingresar a la pantalla principal de nuestro
servidor FTP. La flecha verde arriba a la izquierda nos indica que el servidor NO esta activo.
Para activarlo deben presionar esa flecha y se ilumina entonces el cuadradito rojo.
Me gustaría en este punto detallar algo: Ustedes deben haber visto en algun momento, que
el FTP les sería de gran utilidad a la hora de subir una página web a algún sitio. Esto es la
pura verdad, pero a la hora de instalar un servidor web, no tienen que buscar uno que traiga
incorporado un servidor FTP. Les comento porque me topé con muchos especímenes a lo
largo de mi vida (“a lo corto” está mal dicho, asi que hablemos como si mi vida hubiese sido
larga =P), quienes eran engañados por su capacidad de razonamiento y me preguntaban
donde podían conseguir tales mutaciones como un servidor web con ftp. No dudo que pueda
llegar a existir alguno, pero estoy seguro que no cumpliría con los estándares de uno y otro,
y tendría problemas de seguridad, y ya verán en el futuro, que los programas “combo” no
funcionan tan bien como uno espera.
Para una correcta interacción de un servidor web con un servidor FTP, tenemos que hacer
que el servidor web saque su información (las páginas y todo eso, claro está) de la misma
carpeta donde el servidor FTP (el que instalamos recién) le permite al usuario subir sus
archivos. De esta forma queda integrado el servicio FTP con el WWW.
En la parte de configuracion del programa, que la van a ubicar facilmente por su nombre:
configuration, van a ver que tienen la opción de cambiarle el puerto. El puerto 21 es el puerto
por defecto de los ftp. Quizas quieran cambiarlo por motivos de seguridad, pero 21 esta bien.
Al lado de ese campo esta el número máximo de conexiones por cada IP. Cuando se conecta
una ip N veces, el programa impide que esa misma ip se conecte la enésimo-primera vez.
Connection timeout define el tiempo en minutos que el usuario puede estar sin emitir datos,
para que el servidor lo desconecte.
En el cuadrito “startup settings” tenemos 3 opciones: la primera le indica al server que tiene
que iniciarse cuando se inicie windows.. ustedes ven. La segunda activa el servidor (si, le
apreta la flechita verde) al iniciarse (siempre que se inicia, asi sea por windows o por request)
y el otro, que tambien se aplica a toda vez que se inicie, lo hace minimizado en la barra de
tareas, al lado del reloj.
Otro cuadrito: logging. Tenemos 4 niveles de registro para que guarde archivos con distintas
informaciones. Yo recomiendo “trace” porque nos dice absolutamente todo lo que pasa
dentro del server. Me genera un poco mas de seguridad.
PASV settings nos pide la configuracion del modo pasivo. Si lo dejamos como está va a andar
fenómeno, pero si lo quieren cambiar, esta bien: donde dice default va la IP que el servidor
seleccionara para establecer un modo pasivo. Si queda en default, el programa la elige
respecto a la conexión establecida con el cliente. Port range nos pide dos puertos, uno de
comienzo y otro de final. Si se pone un puerto inferior a 1024 cometemos un error, porque
son puertos que usa el sistema operativo y podemos bloquear un puerto que precise la
maquina. Si ponemos el mismo numero en ambos campos, el programa va a usar un solo
puerto, que si se tiene un solo usuario en max connections esta bien, verdad? Se puede
limitar mucho el tema de los puertos, pero lo hace mas lento en cierta forma.
Directory listing time format nos pide un tipo de hora para marcar los logs, formato UTC u
hora local.
En seguridad, definimos filtros de IP. En filter mode podemos poner que no use filtros IP, no
aceptar conexiones de tal ip, o aceptar conexiones SOLO de esta ip. Parece que esto no anda
muy bien porque he estado probandolo y pude entrar como por mi casa desde ip’s
restringidas.
Online users nos muestra a los usuarios actualmente conectados, y nos permite echarlos del
servidor, o restringir su ip ... si funciona =P.
Ejercicio modulo 2
2º Con nuestra cuenta entramos en los datos de la cuenta en el programa que tenemos llamado
FILEZILLA
4º Me mandais en un archivo de texto en la tarea del modulo la direccion completa para ver la
imagen.