lunes, 22 de noviembre de 2010

Modelo OSI

Hace aproximadamente unas 3 semanas hubo un simposium de Tecnologías de Información, y me acuerdo de una de las conferencias que asistí, que hablaban del modelo OSI, yo no tenia idea que era eso, me imaginaba algo así como unas normas sobres algo, pero ya investigando me di cuenta que no estaba del todo perdido.

Modelo OSI
Este es un modelo de red descriptivo el cual fue creado por la OSI.
En pocas palabras es un marco de referencia para la definición de arquitecturas de interconexión de dispositivos.

Surge
Todo esto Surge, ya que al haber muchas tecnologías, fabricantes y empresas que desarrollaban o ivan a desarrollar dispositivos de comunicación, una norma en la cual todos pudieran entenderse de alguna forma sin importar que sus tecnologías no coincidieran. Es algo parecido como las normas que usan para la fabricación de ropa, las normas de higiene y ecología, entre otras.

Capas:
Las capas que maneja este modelo son 7, en estas capas, se especifica el protocolo que debe ser usado en cada capa. Las cuales son:

Capa 1 física: En esta capa, se encarga de las conexiones físicas de la computadora hacia la red.
Capa 2 de enlace de trafico: En esta capa, lo que hace es el direccionamiento físico (se asigna el tipo de red y la secuencia de paquetes que utiliza)
Capa 3 capa de red: En esta, se determinan la forma en la que serán enviado los datos al equipo que los recibirá
Capa 4 de transporte: En esta, se vigilan, si los datos vienen de mas de una aplicación e integra en cada uno de los datos de aplicación en un solo flujo de red
Capa 5 de sesión: En esta capa, es establecer, matener y cerrar sesión en la comunicación de los dispositivos
Capa 6 de presentación: En esta, lo que se hace es recoger información para darla a conocer a otras aplicación y estas puedan ejecutarse.
Capa 7 de aplicación: Esta ultima, es que se interactúa con el SO o la aplicación, cuando se decide hacer una acción, ya sea mandar datos, leerlos, entre otras.

Interaccion entre ellas:
Esto se puede dar y necesita que haya una interacción, ya que con esta se da un intercambio de datos o información, pero esto funciona en que cada capa agregue información de control a los datos y cada capa analiza el destino y se remueve la información de control.

Google App

Google App es un servicio que ofrece Google, para crear aplicaciones y correrlas en la web, es te es un servicio gratuito y fácil de usar, la única diferencia es que tienes que descargar un SDK, montarlo en tu computadora y seguir algunos pasos, pero en si aquí te los explicare.

Pasos:
Primero que nada nos vamos a la pagina de google app engine, lo que sigue es hacer un registro en cual es crear una cuenta en gmail si ya la tienes pasate éste paso.


Después de esto nos vamos a descargar SDK, el cual vamos a seleccionar en que lenguaje queremos programar.

En mi caso sera, en python, ya que es el que mas me gusta y mas fácil se me hace para programar.

Yo descargue en Linux ya que uso una distribución.
Te descargara un archivo comprimido. Para esto lo descomprimimos y lo ponemos en el Escritorio o en Documentos, ya que este nos servirá para estar haciendo pruebas del programa, en mi caso, lo descargue en el escritorio.
Si abrimos la carpeta creada, nos encontraremos, con con algunas carpetas y permisos.
Dentro de estas carpetas, viene un ejemplo, asi que ejecutaremos ese ejemplo:
Nos vamos al lugar donde esta localizada la carpeta y entramos
Ejecutamos el ejemplo el cual es new_project_tempalte/
Después nos saldrá una pantalla como la anterior que nos indica que esta siendo ejecutada desde localhost:8080 (esto ultimo significa que esta en el puerto 8080).
Lo único que falta es abrir el navegador, y poner localhost:8080.
Ya si nosotros queremos podemos modificar lo que contiene la carpeta de new_proyect o hacer una nueva, se repetirían los mismos pasos la diferencia es que abriríamos la carpeta que se creo.

Esto es lo que contiene nuestra carpeta de ejemplo:
Ya solo es cuestión que le modifiquemos para tener nuestra aplicación, terminandola solo la damos de alta y listo.

Apache, MySQL y PHP

Apache
Apache es un servidor web HTTP de código abierto, la cual es usada en multiplataformas (linux, windows y mac).

Esta es uno de los servidores web http mas usados, teniendo un buen reconocimiento.

Apache es usado principal mente, para enviar paginas web estáticas y dinámicas en la red. Apache por lo general lo veremos muy relacionado con mysql (base de datos) y php, perl o pyton.

Algunos ejemplos de quienes emplean apache, serian: Google, el servidor de la dra. Elisa, Wikipedia, entre otros.

MySQL
Ahora Hablaremos de MySql, este es un sistema de gestión de base de datos.

MySql es muy usado con las aplicaciones web.

My Sql lo veremos muy seguido en base de datos, ya que es muy popular y tiene licencias libres, en algunos casos, tienes que comprar licencias, pero no se asusten, ya que esto es cuando necesitamos mas de sus capacidades.
MySql, lo podemos usar, para guardar la información que se este manejando, por ejemplo, al momento de crear o extraer registros, como Facebook que toda, la información, esta sacada de registros que están almacenadas en esta base de datos.

PHP
Este es un lenguaje de programación interpretado, el cual fue diseñado para la creación de paginas web dinamias.

Este lo usamos en la interpretación, del lado del servidor.

Un ejemplo de su funcionamiento seria (tomemos el ejemplo de Facebook), el usuario quiere ver las fotos de un amigo suyo, esto se hace gracias al php, ya que este actúa como intermediario en la búsqueda de su amigo, busca en la base de datos, ya que en la base de datos, se guardan y se crea información, mas no la da específicamente, y arroja las fotos de su amigo.

En los ejemplos que mencione, se dieron a conocer de como es su funcionamiento y como se necesitan de estos para poder tener montar un servidor.

Ahora, lo que sigue, sera la instalación de estos, no es necesario, que vayas a instalar un servidor, sino lo podemos usar para experimentar o montar un simple servidor en nuestra computadora.

Instalación:
Para su instalación abrimos la terminal y tecleamos el siguiente código:
sudo apt-get install apache2, mysql-server, php5, libapache2-mod-php5, php5-gd, php5-dom, php5-pgsql, php5-mysql
Te pedirá tu clave y le das aceptar instalación y esperaras un rato.
Una ves instalado esto, ya podrás hacer uso de esto.
Por el momento es todo, en otra publicación les mencionare como crear un simple programa en php y que accesa a mysql para arrojar información .

CGI

Ahora, dejemos un momento acerca de seguridad en las redes y veamos algo acerca de la web una de ella sera:

"Common Gateway Interface" (CGI) su traducción significa Interfaz de Entrada Común.
Esta es una gran herramienta la cual se emplea muy seguido, ya que permite a un usuario solicitar datos o información de un programa que se este ejecutando en un servidor.

En pocas palabras es una transferencia de usuario a servidor.
Por ejemplo cuando uno pregunta y obtiene una respuesta, viene siendo algo así su funcionamiento.

Podemos mencionar que esto es un contenido dinámico, ya que hay puede variar, dependiendo de la solicitud que se haga.
Este programa puede estar escrito en cualquier lenguaje de programación, aunque yo te recomiendo que uses python o java, perl, ya que son fáciles de usar y hay muchos tutoriales en linea que te describen su funcionamiento.

Como actúa?
  • Lo que primero que se hace es que el servidor recibe o le llega una pregunta (petición)
  • Después el servidor prepara el entorno para su ejecución e inmediata mente la ejecuta.
  • Aquí es cuando la aplicación hace su función
  • Ya una ves que termina, el servidor manda la información producida.
Ejemplo:
Algunos ejemplos muy comunes de estos, es por ejemplo, cuando queremos entrar a una cuenta en linea, primero tenemos que llenar varios formularios y ya después obtenemos una respuesta, también al momento de una encuesta, o de algunas preguntas que hay que contestar, para conocer el resultado, etc.

Aqui les dejo un ejemplo que hice:
El ejemplo trata acerca de acceder al sistema pidiéndote tu usuario y clave.
Aqui les dejo las capturas de pantalla:
Aqui te pide los datosLlenamos el formulario, para esto cree un .txt que se llama abraham y en la cual en esta contiene la clave, la clave la puse visible.Ya, aquí te da la respuesta.

Funcionamiento:

Aquí esta el código html en el cual hay que guardarlo en /var/www/nombre del archivo.html.
El código es simple, si acaso lo único a destacar es en la 6ta linea que menciono donde esta localizado el programa que hará la respuesta.
Y ya en las ultimas lineas, menciona que aparecerá un botón para enviarse la solicitud.

La otra pate del codigo, que sera su respuesta esta guardada en /usr/lib/cgi-bin/nombre del archivo.py ya que lo estamos realizando en python
Las primeras lineas que hace es que imprime la respuesta, como la respuesta, sera en html tiene que ponerse el encabezado de este.
Aquí esta pidiendo acceso y toma la lectura de la solicitud que se envió y se guardo en la variable "nombre" e imprimirá el nombre del "usuario".
Aquí tomara lo que se halla mandado en la variable contraseña que esta sera la clave que introdujo el usuario, para esto, leerá un archivo que se llamara "usuario".txt, leerá su contenido, este es gracias al comando split que lee hasta el ";", que el contenido sera la clave, si esta es la clave, imprime la contra es correcta.
De lo contrario mostrara error,

Así de fácil, es crear un cgi, solo es cuestión que te pongas a practicar y listo.

domingo, 21 de noviembre de 2010

Puertos de Red

Esta es una interfaz que sirve a los dispositivos para comunicarse con un programa atraves de la red, los puerto general mente, los vemos enumerados.

Como funciona esto?
Como se menciono, los puertos, están enumerados estos, utilizan un protocolo, el cual sirve para decir el destino del paquete o a cual recibirá.
Esto, se puede hacer en simultaneas ocaciones, un ejemplo, fue como en la entrada, en la cual queríamos escuchar los puertos que teníamos abiertos.
Los puertos se indican mediante una palabra de 16 bits, así que existiran 65535 puertos disponibles, nosotros podemos usar cualquiera de estos para algo en especifico, por ejemplo si queremos transmitir datos importantes en el servidor, pero nosotros queremos decirle en cual puerto, para que no sea fácil al intruso o a la persona que esta escuchando del lugar donde sale la información.

Aqui les dejo un listado de los puertos mas comunes
Pero si nosotros queremos ver los puertos, que tenemos basta, con abrir la terminar y teclear lo siguiente:
sudo gedit /etc/services que es el lugar donde estan localizados los puertos.
Te abrirá una ventana como la anterior y te dará el nombre de los puertos, por ejemplo el 22/tcp que tengo yo como para transferencia de ssh, entre otras.
Ya solo es cuestión de que explores los puertos para que sepas para que sirve cada uno.

Resumen
Si no entendiste del todo bien, imaginate esto, quieres mandar un paquete a Alemania, y tu eres de algún otro lugar del mundo, lo que haces es vas a la mensajería o alguno que te brinde el servicio, ellos lo que hacen es que clasifican hacia los lugares, por ejemplo el paquete de Alemania no puede ir con el de Corea, ya que no van al mismo destino, así que se va a su lugar especifico para el envió, ya al momento de llegar, este se clasifica también, del lugar de donde vino, este seria un simple ejemplo de como funciona.

Escuchar paquetes en transferencia

Ahora como ya vimos una breve introducción de lo que son los puertos y su funcionamiento. Aprenderemos a oír los paquetes que se envían. A esta accion es comun mente conocido como sniffer.

Para que nos puede servir oírlos?
Esto nos puede servir para escuchar el trafico que pasa atraves de nuestra computadora, ya que toda la red esta conectada entre si, ya que para llegar a su destino tiene que pasar por otros sitios, antes de lograr su objetivo.
Un ejemplo en la vida real de esto, seria cuando salimos de nuestra casa para llegar a cierto lugar, pasamos por calles, estamos a la vista de todos, hasta llegar a nuestro destino.

Para esto existen herramientas que podemos emplear para escucharlas, como:
  • WireShark
Esta herramienta, vamos a emplear para escuchar paquetes en transferencia.

Instalación y funcinamiento:
Abrimos terminal y ponemos el siguiente código:
sudo apt-get install wireshark
te pedirá clave y que confirmes la instalación, esperas un momento y listo ya tienes instalado wireshark.
Ahora escribimos nuevamente en la terminal:
sudo wireshark
ya que tiene que entrar como root porque necesita algunos permisos
Y nos abrirá la siguiente ventana:
Enseguida, nos vamos donde dice Interface List y escogemos wlan0 (en mi caso escogí esta, que es la inalámbrica, tu has lo dependiendo si estas conectado por cable o por red)
De ahí te abrirá una venta en la cual estará oyendo los paquetes que se van transfiriendo.
Nos esperamos un rato y lo detenemos, en la parte superior hay un botón que tiene una tachita, le damos click y se detendrá.
Dejara de escuchar y podrás ver la información, por ejemplo de donde es el lugar que salen y cual es su destino.

Si le damos click a una de ellas nos desplegara toda su información especifica, que es a donde va que puerto emplea, protocolo, entre otrosTambién lo que se puede hacer es que le des 2do botón y le des Follos TCP Stream y te enseñara la información que se esta enviando.
Si tratamos de leerla, no podremos, ya que muchas veces esta viene encriptada, así que no vera, mas que alguna que otra linea.

Ya es tu opción como la quieras manejar, yo te aconsejo que la uses para saber la seguridad de tu red, usarla para resolver problemas en esta, examines problemas de seguridad, entre otras.
Si tienes alguna pregunta, haz un comentario y yo con gusto te responderé, suerte y saludos.

Boot.kernel

En la entrada anterior habíamos hablado algo acerca de la nube, así que ahora pondré un ejemplo de este que sera. Arrancar un sistema operativo en internet.

Claro que se te hará algo raro esto, ya que lo mas probable sera no haberla escuchado o visto.
Para esto utilizaremos el boot.kernel


Empezando
Primero que anda hay que ir a la pagina si quieres le das una leída para ver que onda con esto.
La forma en que haremos esto, serán dos: por medio de usb o un cd.

Requisitos:

Los requisitos, son mínimos, seria tener una computadora, un cd o memoria usb para hacer el booteable, y una buena colección a internet, ya que arrancaremos desde ella.

Pasos:
Los pasos son bien sencillos para hacerlo en un Cd, ya que te descargas la imagen y la quemas en un cd, no pesa nada solo si acaso unos 500K.

Para hacerlo en una usb, es un poco diferente, ya que te descargas la que dice USB image. Se descargara un gpxe.usb.
De aquí metemos la memoria a usar, se formatea, te vas al escritorio/2do boton/formatear y listo.
de ahí te vas a la terminal y escribes
mount
para que te diga la información de esta ya que la necesitaremos.
Por ejemplo, la mia es /dev/sdb/ que es como identifica la memoria.
Desmontamos la memoria dándole 2do botón expulsar de manera segura.
De ahi nos vamos a la terminal y escribimos
sudo dd if=~/lugar donde lo descargado/gpxe.dsk of=/dev/sbd

Retiramos la memoria.
Apagamos la computadora y metemos de nuevo la memoria, la prendemos y este arrancará con la memoria.
Aparecerá una pantalla con lo siguiente:

Ya después escogemos con que sistema operativo queremos iniciar, la opciones son las siguientes:
  • Debian
  • Ubuntu
  • Damm Small Linux
  • Knopixx
  • Fedora
Aquí nos da la opción de escoger la versión del OS y le damos arrancar, hay que tomar en cuenta, que sera algo tardado iniciar, ya que dependerán de la conexión de internet que se tenga.
por ejemplo con ubuntu, a mi me tardo unos 25 a 30 minutos arrancar, habrá otros que tarde mas o tarde menos.

Por lo pronto, sera todo, no olviden comentar. y si tienen dudas, pregunten.