22 de mayo de 2008

Internet, Puertos, y 6 meses de experiencia.

Mientras uno se dedica a asimilar consultas de seguridad de todo tipo, ganando experiencia poco a poco viendo tecnologías que uno se pregunta como es posible que no las haya visto en la Universidad. Llámese SAP, llámese Solaris, llámese AIX, Citrix, Tarantela, getAccess etc. etc. Y haciendo comentarios de Seguridad mitad Normativa, mitad experiencia, mitad google, te llegan momentos como este, hablando hablando te llega la cuestión:




¿Pero tu sabes como se conecta un cliente a un servidor? A lo que me digo,,, vaya chorrada! No recuerdo los pasos exactos, pero era algo así como que el cliente realizaba la solicitud de conexión al servidor por la IP y puertos del servicio, el servidor aceptaba la petición ó la rechazaba según conveniera e indicaba al cliente que la conexión está establecida tal tal




Vamos, lo que uno recuerda de Redes de hace 6 años, totalmente de 2º de carrera, hasta ahí bien, en ese momento te lanzan otra pregunta ¿y que pasa con la negociación de puertos? Uno frunce el ceño,, y piensa ¿lo cualo? For example, si un servicio usa el puerto 80 (por decir uno raro), el cliente usa el puerto 80, (¡¡Bocina Camionero!!)




No, el cliente no tiene por qué usar ese puerto!! Luego los puertos de Firewall abiertos deben ser los del rango de negociación (Cara de asustado), ¡Pero como no recuerdo eso!, ¿Por que nadie me lo dijo nunca? Entonces uno se va derechico al google, y corrobora con un artículo del año de la polca:




**************************************


Cuando abrimos el "navegador" y tecleamos una pagina, el funcionamiento sería el siguiente:



1) Nuestro PC para abrir el socket necesita conocer la dirección del destino (el puerto ya lo sabe, ya que por defecto en html es el 80). Esta dirección debe estar en formato xxx.xxx.xxx.xxx (4 numeros separados por puntos -dirección IP-)



2) Nuestro PC, investiga si conoce el ordenador destino (es decir investiga un nombre, por ejemplo http://www.microsoft.com/). Si no lo conoce debe investigar.



3) Aunque para esta investigacion intervienen varios pasos (fichero host, mascaras de subred, etc), vamos a simplificarlo. Nuestro PC se lo pregunta al DNS de nuestro servidor (recordad que ponemos DNS al definir una conexion telefonica, o bien nuestro proveedor nos lo da automaticamente al establecerlo.



4) DNS = Domain Name Solver. Es decir nos va a resolver por nombre de dominio su dirección . Por tanto nos devuelve su dirección IP.



5) Con esto el navegador ya puede abrir un socket desde nuestra dirección , y un puerto "cualquiera" !!! libre de nuestro PC y la dirección del destino y el puerto 80.



6) Es decir lo que hace en ese momento es pedirle a nuestro propio PC un puerto libre, imaginemos que le dá el 2122, y entonces establece un canal de comunicacion entre ambas maquinas desde el puerto 2122 en el cual "escuchará" nuestro navegador para esa conexion y el 80 en el destino, que será el que nos pase la informacion (la pagina web).




**************************************





Y se va al CMD asustado, a corroborarlo... hace un netstat -na y observa:






¡Pero como no he descubierto esto antes! Es de cajón de madera de chopo... y no sabes que hacer, si clamar al cielo o decirte, será cosa de la experiencia...

2 comentarios:

des dijo...

Tranqui, que estas cosas de cajón de madera de árbol vienen efectivamente con la experiencia, yo viví lo mismo cuando empecé. ¡Dale caña al blog!. Un saludo.

GigA ~~ dijo...

jeje, ¡pues no veas que consuelo!

Hay veces que uno piensa qué narices hacía en la Universidad...

Gracias por tu comentario.

Salu2!