jueves, 10 de mayo de 2012

Convertir una Presentacion de PowerPoint en ScreenSaver

Recientemente he estado trabajando en unos tips de seguridad para los usuarios en la compañía donde trabajo, como parte de un pequeño programa de "Security Awareness". La presentación es corta y básicamente incluye unos consejos sobre como manejar el correo de una forma segura y tener precaución a la hora de recibir correos, especialmente correos que contengan archivos anexos. El caso es que aparte de la presentación, pensé también en crearles un Screen Saver con los mismos tips para que cada 5 o 10 minutos de inactividad la computadora empiece a mostrárselos, y ver si así (aunque sea de manera subconsciente) asimilen y apliquen algunos de estos tips, por lo que empecé a buscar la forma de convertir mi presentación (con unas cuantas modificaciones para que se vea un poco animada) en Screen Saver, o ".scr". La primera opción que se me ocurrio fue utilizar el Screen Saver que trae Windows por defecto (My Pictures Slideshow) que te permite utilizar fotos que tengas en una carpeta. Para esto es necesario primero guardar todos los Slides de tu presentación como archivos JPG, esto se hace de la siguiente manera:


  1. En PowerPoint, hacemos clic en "Save as"
  2. Elegimos la opción "Other Formats"
  3. Seleccionamos entonces "JPGE File Interchange Format (*.jpg)
  4. Luego seleccionamos "Every Slide" y seleccionamos la carpeta donde guardaremos los slides
Luego, tomamos esos esos JPG's y los copiamos a una carpeta compartida en la red a la cual los usuarios que queremos que tengan este screen saver deben tener acceso (solo de lectura). Si la computadora tiene Windows XP, nos vamos a la sección de Screen Savers y seleccionamos el screen saver llamado "My Pictures Slideshow" y hacemos clic en "Settings", aquí nos saldrán las opciones como el tiempo en que las fotos cambiaran, el tamaño entre otras, haremos clic en el botón "Browse" y nos moveremos al icono "My Network Places" y buscamos el equipo que contiene la carpeta compartida con los JPG que grabamos de nuestro PPT y  hacemos clic en OK. Con esto ya tenemos un Screen Saver con los datos de la presentación.

Pero este método, aunque es sencillo, tiene un par de inconvenientes. Lo primero es que se pierde cualquier animación que hayamos incluido en la presentación, como efectos en las letras o algún sonido que contenga la presentación, lo que puede tornar nuestro screen saver un poco aburrido (que de hecho seguro que lo sera para la mayoría de los usuarios) Tambien tiene el inconveniente de que hay que configurarlo usuario por usuario, porque este screen saver no tiene una forma de configurarlo via una GPO por ejemplo (al menos, yo no encontré la forma, quizás a se pueda a traves del registro). La mejor forma para mi es usar un programa que haga la conversión de PPT a SCR porque asi traerá las animaciones y sera mas fácil copiarle el archivo a las computadoras e indicar por GPO que usen ese screen saver. Luego de una larga búsqueda en Google, donde encontré muchisimos programas que lo hacen, la gran mayoría requería licencia y los que me daban el Demo entonces incluían una marca al Screen Saver, encontré uno sencillo y lo mejor, no me incluía ninguna marca o limitaba la presentación, llamado "Presentation to Screen Saver Converter for PowerPoint 1.0" que pueden descargarlo (o comprarlo) desde este link

El programa es bastante sencillo, solo hay le decimos donde esta nuestra presentación, agregamos algún archivos de audio si queremos, y le indicamos donde queremos guardar nuestro nuevo screen saver y listo. A continuación un "print screen" de la ventana del programa:


Una vez hemos incluido estos datos hacemos clic en "Convert" y ya tendremos nuestro Screen Saver con los efectos y animaciones que hayamos incluido en nuestra presentación y podemos distribuirlo.

El Tipo de Informática



Continuar leyendo...

miércoles, 4 de abril de 2012

Estudiando para el Examen 70-648: Un poco de IPv6

Como el titulo de este post dice, me encuentro estudiando para el examen de Microsoft 70-648, este examen es para migrar la certificación MCSA de Windows Server 2003 a Windows Server 2008, ahora llamados "Microsoft Certified Techology Specialist", ya que cambiaron el nombre de las certificaciones. Como ya soy MCSA en Server 2003 el tomar este examen me economiza 2 exámenes para certificarme como  "MCITP: Server Administrator", el 70-640 y el 70-642, y solo me faltaría tomar el 70-646. Si quieren mas información sobre esta certificación pueden visitar este sitio. Bueno, el caso es que compre el libro de preparación para este examen y ya empece a leerlo. Hay muchas cosas que permanecen igual que en Windows Server 2003, pero también hay cosas nuevas y mejoradas, como se ira viendo mas adelante. Decidí entonces ir haciendo un resumen de cada lección del libro, esto me ayuda a mi a retener mejor cada lección (ya que encuentro que escribirlas me ayuda a aprender mas fácil mas que solo leer), y también les sirve a cualquiera de ustedes que también este pensando en tomar este examen, o que simplemente quieran refrescar cosas que ya saben.

La primera lección es sobre configuración de IPv4 e IPv6, pero no se habla mucho sobre IPv4, ya que se da por sentado es que algo que un MCSA debe manejar, cosas como las clases de IPv4, Subneting, VLSM y direcciones APIPA. Hace mas hincapié en la configuración de IPv6 y eso es lo que haré en este post. Esto no sera una explicacion completa del protocolo IPv6, solo sera un resumen de lo que es necesario saber para configurar IPv6 en Windows Server 2008.

  • Porque  necesitamos IPv6?
Los bloques de direcciones IPv4 publicas se están acabando, gracias a NAT se ha podido extender la vida del protocolo IP versión 4 que todos conocemos pero ya se están agotando las direcciones IPv4 publicas y la migración a IPv6 cada dia se hace mas necesaria. Como saben IPv4 ofrece aproximadamente 4.3 billones de direcciones, ese era un numero grande hace unos años atrás, pero hoy día no son suficientes ya que una sola persona puede tener varios dispositivos conectados a Internet y cada dispositivo necesitara una IP para salir a Internet. Este es el principal problema (diria yo) que viene a corregir IPv6, la cantidad de direcciones IP. Dado que una dirección IPv4 es un numero de 32 bits y que cada uno de estos 32 bit solo puede tener 2 valores (1 o 0), IPv4 nos ofrece un espacio de direcciones disponibles de 2^32,  que serian unos 4,294,967,296 direcciones.  Del lado de IPv6 las direcciones están compuestas por 128 bits en lugar de 32. Siguiendo la misma lógica anterior tendríamos 2^128, lo que seria igual a 340,282,366,920,938,463,463,374,607,431,768,211,456 o mejor expresado 3.4 x 10^38 direcciones IP disponibles, lo cual parece ser  una cantidad suficiente de direcciones no creen?.

  • Sintaxis de una dirección IPv6
Las direcciones IPv6 no se expresan de la manera en que expresamos las direcciones IPv4 tradicionales; los 32 bits de la dirección eran separados en 4 grupos de 8 bits (binarios) convertidos a números decimales separados por puntos, como "192.168.1.2". Ahora con IPv6 los 128 bits se dividen en 8 grupos de 16bits pero en lugar de ser expresados en forma decimal son expresados en notación Hexadecimal, de la siguiente manera:
21dc:0053:0000:0000:03ad:003f:af37:8d62

Pero esta representación puede ser simplificada eliminando los ceros (0) que encabezan cada bloque, utilizando esto la dirección anterior pudiera expresarse de la siguiente manera:

21dc:53:0:0:3ad:3f:af37:8d62

Otra forma de simplificar las direcciones IPv6 es sustituir los bloques continuos que están compuestos solo de ceros por 2 puntos seguidos, o sea. "::". Por ejemplo, en la dirección del ejemplo, el 3er y 4to bloque (de izquierda a derecha) esta compuesto solo de ceros, por lo que podemos sustituir estos 2 bloques por "::",  quedaría entonces de esta forma:
21dc:53::3ad:3f:af37:8d62 

Hay que tomar en cuenta tambien que en IPv6 la mascara de red ya no se expresa de la forma tradicional de IPv4, en forma decimal separados por puntos (255.255.255.0). Ahora se expresan siempre como se expresan con CIDR (Classless Inter-domain  Routing), con la notacion usando "Slash" ("/"), por ejemplo "/64". La antigua notación de la mascara no se utiliza en IPv6.

  • Tipos de Direcciones IPv6
En IPv6 tenemos 3 tipos de direcciones, Unicast, Multicast y Anycast:

- Direcciones Unicast: Al igual que en IPv4, las direcciones Unicast son direcciones que identifican un host, solo que ahora en IPv6 no identifican un host sino una "interface". En IPv4 un equipo era identificado por una IP y en algunos casos un equipo podría tener varias direcciones IP (multihome). En IPv6 la IP identifica únicamente una interface en especifico en el Host, y esto es lo que identifican las direcciones Unicast. Estas son las direcciones IP que utilizamos mas frecuentemente en una red o en Internet. Un paquete dirigido a una dirección Unicast sera recibido solo por una interface en la red.

- Direcciones Multicast: Este tipo de direcciones también se utilizan en IPv4, identifican múltiples interfaces. Un paquete dirigido a una dirección Multicast sera recibido por varios equipos (o interfaces).

- Direcciones Anycast: Este tipo de direcciones no se encuentra en IPv4, es intrucido por IPv6. Al igual que las direcciones Multicast las direcciones Anycast indentifican varias interfaces, con la direferencia de que el paquete enviado a una de estas direcciones no sera recibida por todas las interfaces que posean esta direccion sino únicamente por la mas cercana (en terminos de routing) al origen del paquete. Es algo entre una direccion multicast y una direccion unicast ya que el paquete es recibido por una sola interface. Este tipo de coomunicacion se le llama "uno-a-uno-de-muchos" (one-to-one-of-many).

  • Direcciones Unicast
Dentro de las direcciones Unicast, que como dijimos son las que se utilizan para comunicaciones uno-a-uno, tenemos 3 tipos principales de direcciones, Global, Link-Local, Site-Local y direcciones Especiales.

- Global Unicast: Las direcciones Global son las direcciones equivalentes a las direcciones publicas de IPv4, o sea que estas direcciones son ruteadas en Internet. Estas direcciones se reconocen porque el prefijo siempre es "001". Estas direcciones están formadas de la siguiente manera: Como dijimos, los 3 primeros bits de la dirección o "Format Prefix" o "FP", que siempre es "001". Los siguientes 13 bits son asignados por IANA, esto es conocido como "Top Level Aggregator" o "TLA", estos son asignados a los registers de Internet y estos a su vez los asignan a grandes proveedores de Internet o ISP. Luego siguen 8 bit que se encuentran reservados. Le siguen 24 bits contienen el "Next Level Aggregator" o "NLA", estos identifican a clientes o sitios específicos, estos permiten a los ISP crear múltiples niveles de jerarquía dentro de su red para organizar el direccionamiento y el enrutamiento. Luego siguen los 16 bit del "Site Level Aggregator" o "SLA" que se utilizan para identificar subredes dentro de una organización, también son utilizados por ISP's menores. Los últimos 64 bits identifican la interface, a estos se les llama "Extended Unique Identifier" o "EUI-64".


- Link-Local: Estas direcciones son equivalentes a las direcciones APIPA en IPv4, el limite o alcance de estas direcciones es el link local, o sea, la red interna, por lo que NO son ruteadas. Se pueden identificar por su prefijo "fe8". Esta dirección es configurada automáticamente.

- Site-Local: Estas direcciones son equivalentes a las direcciones privadas de IPv4, o sea, las direcciones que usamos a diario en redes internas como "192.168.1.0" o "10.0.0.0". El prefijo de estas direcciones es "fec0".

- Especiales: Hay 2 direcciones especiales, iguales a 2 direcciones especiales usadas tambien en IPv4, la dirección "loop-back" y la llamada dirección "no especificada" o "unspecified". La dirección de "loop-back" en IPv4 es "127.0.0.1", ahora en IPv6 es "0:0:0:0:0:0:0:1" o expresada de manera simplificada "::0". La dirección "no especificada" en IPv4 se expresa como "0/0", en IPv6 ahora se expresa "0:0:0:0:0:0:0:0" o de forma simplificada seria "::".

  • Direcciones Multicast
Como decíamos al inicio, las direcciones Multicast pueden ser usadas por varias interfaces, lo que permite que un paquete sea dirigido a varios equipos o Interfaces, a diferencia de las direcciones Unicast en las que el paquete es destinado a una sola interface. Las direcciones Multicast se reconocen porque siempre empiezan con 11111111 o "ff".

Bueno, hasta aquí lo que considero mas importante del contenido de IPv6, y creo que es lo mas importante a tener en cuenta para ir adaptandonos a IPv6. Espero que les sea de utilidad, sobre todo si piensan como yo tomar el examen 70-648. Mas adelante seguiré subiendo resúmenes de los demas capitulos a medida que vaya avanzando.

Hasta el Proximo!

El Tipo de Informática.


Continuar leyendo...

jueves, 17 de noviembre de 2011

Aplicar una GPO para un Terminal Services Server

Hola a todos otra vez! Luego de un largo tiempo sin publicar nada, me animo a escribir algo. La tardanza ha sido en parte por el tiempo (o la falta de el), en parte (en gran parte) por haraganería, pero mayormente porque me gusta escribir cosas que sean de utilidad y de relevancia para los que se animen a leer este blog y me gusta esperar tener algo para escribir que valga la pena, así que espero no equivocarme con este post :D. Entrando en el tema, no se si les ha pasado esto: Tiene un su compañía un servidor de Terminal Services al que algunos usuarios del dominio accederán de manera regular para realizar algunas tareas especificas o ejecutar alguna aplicacion. Pero como los usuarios son del dominio puede ser que tengan ciertas Políticas de Grupos (GPO) aplicadas que correspondan al OU que pertenecen o al grupo, y quisieramos que cuando inicien sesion en el Terminal Services Server se le aplique una Política mas restrictiva que la que se le aplica en su computadora. Por ejemplo, digamos que un usuario del dominio se le aplica una GPO que le permite tener acceso a los discos de su computadora y a algunos items del Panel de Control, pero este usuario necesita ejecutar algunas aplicaciones accediendo remotamente a un servidor Terminal Services, pero queremos que este no pueda acceder a los discos en este servidor, que no pueda entrar al Control Panel, etc. Para esto necesitamos que se le aplique una GPO especifica pero solo cuando haga Login en el equipo especifico, en este caso el Terminal Services Server.


Para esto lo primero que tenemos que hacer es crear un OU y mover a esta el o los servidores Terminal Services en el cual aplicaremos la política, por ejemplo, la OU la podríamos llamar "Terminal_Services_Sever". En el siguiente gráfico se muestra la OU que contiene un equipo llamado "TERMINAL_SRV_01".


Una vez hemos creado nuestro OU, abriremos la consola "Group Policy Management", esta consola se utiliza para administrar las políticas de grupo del dominio, viene incluida en Windows Server 2008 pero también puede utilizarse en Windows Server 2003, pero debe descargarse aparte. Si no la tienen la pueden descargar aquí. Cuando hayamos abierto la consola Group Policy Management, nos dirigimos a la nueva OU que creamos (Terminal_Services_Server) y hacemos clic derecho encima de esta, luego seleccionamos la opción "Create a GPO in this domain, and Link it here..." como se muestra en el siguiente gráfico:


Al hacer clic en esta opción se nos pedirá un nombre para la nueva GPO, en este caso elegí el nombre "Terminal_GPO". Cuando le hayamos puesto el nombre, nos aparecerá el link de la GPO debajo de la OU que creamos, como se muestra en el siguiente gráfico. Aquí debemos hacer clic derecho ahora encima de la GPO y seleccionamos "Edit..."



Se abrirá entonces la ventana del Editor de la Política de Grupo que acabamos de crear, aquí nos dirigiremos a la seccion "Computer Configuration" luego nos moveremos a "Policies" (en Windows Server 2003 este paso no es necesario), luego a "Administrative Templates", "System" y por ultimo hacemos clic encima de "Group Policy". Aquí buscamos la directiva "User Group Policy loopback processing mode", como se muestra en el siguiente gráfico:


Hacemos doble clic encima de la directiva indicada anteriormente y seleccionamos "Enable", luego en la sección "Mode" seleccionamos "Replace":



Con esto lo que hacemos es indicarle al equipo donde se aplique, en el caso de nuestro ejemplo al servidor Terminal Service, que no aplique al usuario que se loguea la política de grupo del dominio que corresponde al usuario, sino que la reemplace con la que se indica en esta misma politica. Una vez hacemos clic en aceptar, podemos movernos en el Editor de la Política a la sección "User Configuration" y personalizar el entorno de los usuarios que se conectaran a este Terminal Services como querramos, sin preocuparnos de que esta Política se le vaya a aplicar a los usuarios en sus computadoras también.

Bueno, esto ha sido todo por ahora. Espero como siempre que les haya sido de utilidad.

Hasta el Próximo!

El Tipo de Informática

Continuar leyendo...

jueves, 7 de julio de 2011

Robo de cuentas de Hotmail usando las Preguntas de Recuperacion

En estos días he estado revisando las opciones de recuperación de password de algunas cuentas de Hotmail, específicamente las preguntas/respuestas de recuperación. Como todos saben Hotmail, al igual que Gmail y cualquier otro servicio de correo, ofrecen opciones para recuperar o resetear el password de la cuenta en caso de que, o la olvidemos, o alguien nos haya hecho el favor de cambiarla por nosotros en caso de encontrar nuestra cuenta abierta en alguna computadora o algún cibercafe. Muchos usuarios eligen una de las preguntas que Hotmail les ofrece, como "Nombre de la primera mascota", o "Cumpleaños de la Madre". Otros escriben sus propias preguntas, como en el caso de un buen amigo mio. Hace un par de noches estábamos chateando y le decía que ya tenia mi cuenta de Twitter para el blog (por cierto aprovecho para avisarlo a ustedes también :P ) y el me contesto que aprovechara y que lo siguiera a él para que aprendiera algo. En ese momento pensé que había encontrado un perfecto conejillo de Indias para probar las preguntas/respuestas que él había elegido.

Mientras el seguía hablándome de las cosas que podía enseñarme sobre seguridad y Hacking, yo entraba a la pagina de recuperación de cuentas de Hotmail e introducía su cuenta para que mostrara las opciones de recuperación que el había elegido, y efectivamente tenia entre las opciones "Security Question" o "Pregunta de Seguridad". La pregunta que tenia no era de las pre-hechas que Hotmail te presenta, había escrito su propia pregunta: "Cual es". Cuando vi esta pregunta se me ocurrieron un par de respuestas tan sencillas como la pregunta misma. Intente un par de respuestas: "la pregunta", "dimela" hasta que entonces probé con una respuesta muy sincera: "no lo se" y como si se hubiese tratado de alguna de esas pruebas de sinceridad u honestidad que le hacen a los caballeros en la películas, se me presento la muy esperada pantalla de reseteo de password que se muestra a continuación:


Cuando vi esta pantalla, inmediatamente hice lo que tenia que hacer: Resetearle el password!!! Una vez lo había cambiado, me dirigí nuevamente a la pantalla del chat donde todavía se encontraba él diciendome que aunque su área no era el hacking o la seguridad, el tenia los recursos para enseñarme un par de cosas, a lo que yo le conteste "Ok, perfecto, primero intenta entrar a tu cuenta de Hotmail, y luego empiezas las lecciones", ya pueden imaginar su reacción cuando no pudo entrar a su cuenta, y mas aun cuando le di su nuevo password.

Otro error que mucha gente comete es seleccionar preguntas personales que aunque uno no las sepa, hay formas muy sencillas para conseguirlas que solo requieren de un poco de paciencia y buscar en el sitio correcto. Por ejemplo, algunas personas elijen preguntas como "Fecha de Nacimiento de la Madre". Si no conoces bien a la persona puede que no sepas la respuesta, pero es muy seguro que puedas conseguir esa respuesta en su perfil de Facebook. La mayoría de las personas publican en su muro TODO lo que les pasa o cualquier acontecimiento que consideren importante, como el cumpleaños de algun familiar o amigo, y Facebook se encarga de mantener toda esa información para nosotros. Con un poco de paciencia podemos ver publicaciones de hasta un año atrás, incluso mas, pero hasta un año atrás es el máximo que he buscado.

Otra forma de buscar información puede ser buscando entre los contactos de esa persona. Puede ser que su madre (en el caso de la pregunta que usamos como ejemplo) también tenga Facebook y entre su información facilmente podríamos conseguir datos como su fecha de nacimiento, etc. Otras preguntas muy comunes como "Lugar de Nacimiento", "Escuela donde Estudio", "Personaje Histórico Favorito" pueden también encontrar respuestas en Facebook. Y el hecho de que no tengamos a esa persona agregada como amigo tampoco es problema, ya que la gran mayoría de personas aceptan todas las solicitudes de amistad de cualquier desconocido, aparentemente se sienten elogiados de que alguien quiera saber de ellos. Incluso, una forma mas sencilla de conseguir esas respuestas es hacerle la misma pregunta directamente como parte de una conversión (utilizando un poco de ingeniería social) y por seguro lo mas lejos que tendrán es que esa misma pregunta la eligieron para resetear su password en Hotmail.
  • Asegurando nuestra cuenta de Hotmail

Hotmail ofrece varias opciones para recuperar el password:
  • Utilizar una cuenta secundaria
  • Enviando en un SMS un codigo o token a un numero movil registrado
  • A traves de una PC de confianza
  • Pregunta de Seguridad
Como se imaginan, la primera opción nos permite indicar una dirección de correo a la cual se nos enviara un mail con un link para reestablecer nuestro password. Si vamos a utilizar esta opción, tenemos que asegurarnos de que la cuenta que elegimos esta asegurada contra el tipo de cosas que hablamos mas arriba, o de nada nos servirá intentar asegurar esta cuenta. Personalmente tengo una cuenta de Gmail, que , a mi entender, maneja mejor el proceso de recuperación de cuentas. También tenemos que tener en cuenta donde tenemos configurada esta cuenta, por ejemplo, si tenemos esta cuenta configurada en un programa como Thunderbird o Outlook, tenemos que tener cuidado con quien tiene acceso a la computadora donde esta configurada, o alguien podría iniciar el proceso de recuperación de la cuenta, acceder a la computadora y esperar a recibir el mensaje, en ese caso, perdimos nuestra cuenta y nuestro amigo obtuvo su venganza.

El segundo método parece seguro. Introduces tu numero de móvil y en caso de necesitar recuperar tu cuenta, HotmailSMS al celular que registraste (supuestamente, porque intente probarlo y todavía estoy esperando el SMS). Pero entonces pensé, y que tal si se me olvida en el celular en algún sitio, o si mi amigo sediento de venganza me pide el celular un minuto y en ese momento aprovecha para solicitar la recuperación de la cuenta a través del SMS? Desistí inmediatamente de la idea de utilizar este método.

El siguiente método es a través del uso de una "PC de Confianza", para utilizar este método es necesario instalar "Windows Live Essentials". Realmente no llegue a probar este método, pero no me gusto la idea de una computadora de confianza desde la que se pueda realizar este proceso, por el mismo caso que con el celular. En cualquier descuido podría alguien (mi amigo sediento de venganza) pedir el reseteo de mi cuenta, así que también ignore esta opción. Claro, esto es en mi caso, puede ser que resulte efectivo para una persona que tenga una computadora a la que solo el pueda tener acceso.

El ultimo método, y el que da origen a este post, es el de la Pregunta de Seguridad. Particularmente llegue a la conclusión de que esta opción puede utilizarse de una forma que resulte difícil responderla simplemente adivinando o buscando la posible respuesta en Facebook. La recomendación seria elegir incluso una de las preguntas predeterminadas, pero que la respuesta sea algo totalmente divorciado de la pregunta. Por ejemplo, si elegimos la pregunta "Fecha de Nacimiento de la Madre" podríamos responderla con algo como "h0y llegue tarde al w0rk", incluso sustituyendo caracteres, como tipo "Pass Phrase". De esta forma nuestro amigo se gastara los dedos intentando (en el caso del ejemplo) escribir la fecha de nacimiento en varios formatos intentando contestar nuestra pregunta. Claro, tenemos que tener cuidado de escribir una respuesta que se nos vaya a olvidar y que luego no estemos nosotros intentando contestar la pregunta con una respuesta que corresponda a la pregunta. En caso de que necesitemos guardar esto, recomendaría utilizar TruCrypt , crear un volumen encriptado y guardar en este el archivo con la pregunta/respuesta de recuperacion. Otras opciones importantes para asegurar nuestra cuenta son habilitar SSL para la conexion a Hotmail.com, de modo que cada vez que nos conectemos a Hotmail se haga a través de una conexion segura, y habilitar la opción de que nuestro password caduque cada 72 dias. Esta ultima le da un tiempo de vida de 72 días a nuestro password.

En fin, desde que pude resetear el password mi amigo, siempre estoy pensando en que él debe estar buscando la manera de hacerme lo mismo, seguro ha revisado mis opciones de recuperación, y desde entonces he tratado de tomar todas las medias posibles para evitarlo. Pero creo que hoy en día así es como debemos estar, alertas, un poco paranoicos, pensando en que alguien esta tratando ya sea de robar nuestra identidad en linea, nuestra cuenta, o ya en el ámbito empresarial, de entrar a nuestros sistemas, robar información o causar algún daño en nuestra red, y como buenos Tipos de Informática debemos asegurarnos de tomar todas las medidas que estén en nuestro alcance para minimizar este riesgo.

Bueno, en resumen, mis recomendaciones para tratar de minimizar el riesgo de que nos roben nuestra cuenta son:
  1. Elegir un password fuerte: por lo menos 8 caracteres que incluya Mayúsculas, minúsculas, números y algún carácter especial.
  2. Habilitar SSL en Hotmail
  3. Activar que nuestro password caduque cada 72 días
  4. Si elegimos el método de recuperación por pregunta de seguridad, responder a la pregunta con algo totalmente alejado de la respuesta.
Bueno, no soy un experto en seguridad ni pretendo aparentarlo, y mucho menos un Hacker, pero creo que estas medidas pueden mantener lejos de nuestras cuentas por lo menos a los curiosos que intenten hacerte alguna maldad reseteando tu password. Espero que esto les sea de ayuda, y si mi amigo al que le resetie el password esta leyendo esto, por favor no intentes con la respuesta que puse de ejemplo, porque exactamente esa es la que estoy usando :P

Hasta el Próximo!

Continuar leyendo...

viernes, 4 de marzo de 2011

Un Poco de IPTables (Parte 2)

 En el post anterior sobre IPTables vimos de manera rápida lo que, a mi entender, es necesario conocer antes de empezar a utilizar IPTables. Ahora les voy a decir las cosas que he aprendido de IPTables. Las funciones del Firewall de Linux están integradas en el Kernel del sistema operativo en un modulo llamado “NetFilter”, este modulo del kernel se maneja a través de un conjunto de herramientas llamadas iptables que utilizamos para crear las reglas de Firewall. iptables también es el comando que se utiliza para modificar o crear estas reglas. Este comando nos permite definir reglas las cuales se aplicaran a los paquetes basándose en la información de la cabeceras (o headers) de los protocolos, y nos permiten indicarle al Kernel la acción que queremos que realice sobre los paquetes, estas acciones pueden ser, por ejemplo, aceptar el paquete, rechazarlo, entre otras. Cada paquete que llega al equipo es comparado con cada una de estas reglas en el orden en que estén definidas, hasta encontrar un "match", o sea, hasta que el paquete coincida con una de las reglas con las cuales se esta evaluando. Cuando el paquete coincide con lo que describe la regla, entonces se ejecutara la acción que la regla especifica para ese tipo de paquete.



Estas reglas están organizadas en grupos llamados "Cadenas". Las cadenas (o "chains" en ingles) son agrupaciones de reglas, todas estas reglas comparten características comunes, por ejemplo, hay una cadena de reglas que se aplicaran solamente a los paquetes que se dirigen hacia el equipo que corre IPTables, otra cadena compara los paquetes salen del equipo que ejecuta IPTables hacia cualquier otro equipo. Las cadenas a su vez están organizadas o agrupadas dentro de "Tablas". En IPTables existen básicamente 3 tablas: MANGLE, NAT, y FILTER. Cada una de esas tablas contiene su respectivo grupo de cadenas que realizan diferentes operaciones en los paquetes:
  • Filter: esta es la tabla por defecto y es la que se utiliza para las tareas de filtrado de paquetes. Esta es la regla que mas utilizaremos, y donde se definen las reglas que permitirán o no el acceso de los paquetes al equipo que corre IPTables o a la red.
  • Nat: esta tabla se utiliza para alterar las direcciones y los puertos de los paquetes y crear reglas de NAT (Network Address Translations) en el equipo.
  • Mangle: esta tabla también se utiliza para la alteración de paquetes, pero alteraciones mas especificas, como QoS. No es muy común su uso, particularmente nunca he tenido que utilizarla.
Como había mencionado, estas tablas contienen "cadenas". Cuando el equipo recibe un paquete, el paquete pasa por las 3 tablas de IPTables pero no necesariamente por todas las cadenas que contienen las tablas. El kernel analiza el paquete y lo envía a la cadena que corresponda. La tabla "Filter" contiene por defecto 3 cadenas:
  • INPUT: las reglas contenidas dentro de esta cadena se aplicaran solamente a los paquetes destinados al equipo que ejecuta IPTables. Por ejemplo, supongamos que en nuestro equipo Linux instalamos un servidor Web y lo configuramos para que escuche en el puerto TCP 89 y queremos descartar cualquier paquete entrante a nuestro equipo que no sea destinado a ese puerto. En esta cadena es donde debemos crear la regla que permita acceso al puerto TCP 89 y descarte todo lo demás. Mas adelante veremos como crear las reglas.
  • FORWARD: las reglas que contiene esta cadena se aplicaran a los paquetes que son ruteados a través de nuestro equipo. Esto es en el caso de que instalemos nuestro equipo Linux con IPTables configurado entre dos redes, o por ejemplo, entre Internet y nuestra red interna, donde los paquetes pasaran por el Firewall para llegar a la red interna, o desde la red interna hacia el Internet. Aquí definíamos reglas como por ejemplo, que ninguna computadora de nuestra red pueda conectarse a un determinado equipo en Internet.
  • OUTPUT: esta cadena contiene las reglas que se aplicaran a los paquetes que salgan desde el mismo equipo, o sea, los paquetes generados localmente.
La tabla NAT también contiene 3 cadenas por defecto:

  • PREROUTING: esta cadena contiene las reglas que modificaran el paquete al momento de entrar al equipo. En esta cadena crearemos las reglas que, por ejemplo, cambiaran el puerto y la IP de destino de paquetes destinados a equipos en nuestra red interna.
  • OUTPUT: esta contiene reglas para modificar los paquetes generados internamente en el equipo antes de ser enrrutados.
  • POSTROUTING: esta cadena contiene las reglas que modificaran los paquetes que saldrán del equipo una vez que se han tomado las decisiones de ruteo de hacia donde se enviara el paquete.
Esas son las cadenas por defecto de la tabla Filter y Nat, pero podemos también crear nuestras propias cadenas si queremos. Cuando IPTables evalúa los paquetes contra cada una de las reglas contenidas dentro de estas cadenas y no encuentra una regla que coincida con el paquete, entonces tomara una "Acción por Defecto" la cual es definida en cada cadena. Podemos por ejemplo especificar que la acción por defecto de la cadena "INPUT" sea descartar el paquete, en este caso, si al analizar un paquete destinado a nuestro firewall no se encuentra una regla que coincida con el paquete, el paquete sera descartado.


 
Bien, creo que eso ha sido suficiente preámbulo, ahora vamos a ver como crear algunas reglas básicas de IPTables, estoy seguro que luego de ver un par de estas reglas se entenderá mejor todo esto. La mejor forma de entenderlo es con casos de uso prácticos, y para este caso voy a utilizar un caso de uso de IPTables básico y muy común. Observemos el siguiente gráfico: 


Tenemos nuestro equipo Linux corriendo IPTables funcionando como firewall. Nuestro firewall tiene 2 tarjetas de red, con una conecta a la red Interna (192.168.1.1) y con la otra conecta a Internet (172.23.45.7). Vamos a configurar IPTables de forma de que los equipos de la red interna tengan acceso a Internet a través de nuestro Firewall. Lo primero que vamos a hacer sera crear una regla en la tabla NAT y configurar Network Address Translation (NAT) en nuestro equipo, de modo que los equipos de la red interna compartan la dirección IP de Internet de nuestro Firewall. Para esto ejecutamos:

root@firewall:~# iptables -F
root@firewall:~# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -d 0/0 -j MASQUERADE

Ahora la explicación de las reglas que creamos anteriormente:

iptables: Este es el comando que permite agregar las reglas al modulo netfilter
-t: Esta opción especifica la tabla que vamos a modificar, en este caso la tabla NAT.
-A: especifica la cadena en la que se quiere agregar la regla, en este caso cadena POSTROUTING.
-s: Esta opción especifica el origen de los paquetes que se rutearan, en este caso es la red interna.
-d: Esta opción específica el destino al cual se dirigen los paquetes.
-j: Esta opción se utiliza para decirle al Firewall que acción tomar con los paquetes que coincidan con lo antes citado.

 
Lo hicimos con la primera linea de comando fue borrar cualquier otra regla que haya sido creada en nuestro firewall utilizando el comando "iptables -F". Luego creamos una regla en la cadena POSTROUTING (usando la opción "-A") de la tabla NAT (usando la opción "-t"), esta regla le indica a IPTables que los paquetes provinientes de la red 192.168.1.0/24 (usando la opción "-s" que significa "source" u "origen") y que se dirijan hacia cualquier destino, o sea, hacia Internet (utilizando la opción "-d" que significa "destino") se les aplique la acción "MASQUERADE" (utilizando la opción "-j"). Esta acción hace que el firewall altere los paquetes que saldrán a Internet y que proceden de los equipos de red interna cambiando en el header del paquete el campo "IP de origen" sutituyendola por su propia dirección IP externa (172.23.45.7). De esta forma, los paquetes salen a Internet como si se originaran desde nuestro Firewall, o sea, hemos configurado NAT en nuestro equipo.

Pero esto no es todo, para que los equipos de la red interna puedan salir hacia Internet a través de nuestro Firewall debemos crear reglas de FORWARD en la tabla FILTER. Supongamos que vamos a permitirles a los equipos de la red interna que puedan navegar en Internet, para esto necesitamos permitirles conexiones al puerto TCP 80 (puerto de http) a cualquier equipo en Internet. Para esto ejecutamos:

root@firewall:~# iptables -t filter -A FORWARD -p tcp -s 192.168.1.0/24 -d 0/0 --dport 80 -j ACCEPT

Como de lo que se trata ahora no es de modificación de paquetes, sino de determinar cuales paquetes estarán permitidos a salir de la red a través de nuestro Firewall, utilizaremos la tabla "Filter" y la especificamos utilizando la opción "-t filter". Como los paquetes que se analizaran no son dirigidos al firewall mismo sino que serán ruteados a través de el utilizaremos la cadena FORWARD, y la especificamos con la opción "-A FORWARD". Ahora bien, el tipo de paquete que permitiremos serán paquetes TCP, por lo que utilizamos la opcion "-p tcp". Utilizamos nuevamente las opciones "-s" y "-d" para especificar el origen y destino de los paquetes (192.168.1.0/24 y 0/0 respectivamente). Luego utilizamos la opción "--dport" para especificar el puerto de destino del paquete, para el caso de nuestra regla como estaremos permitiendo las conexiones a servidores Web en Internet, el puerto http es el puerto 80. Por ultimo especificamos la acción que queremos que ejecute IPTables sobre los paquetes que coincidan con la regla que acabamos de definir, en este caso aceptaremos que los paquetes salgan hacia Internet, por eso indicaremos la acción "ACCEPT". 

Vamos a hacer otro ejemplo, supongamos que queremos evitar que la computadora con la IP 192.168.1.2 haga conexiones FTP a un servidor en Internet con la IP 66.77.88.99, vamos a hacer una regla que bloque este tipo de trafico solo para esa IP pero que permita a las demás hacerlo:

root@firewall:~# iptables -t filter -A FORWARD -p tcp -s 192.168.1.2 -d 66.77.88.99 --dport 21 -j DROP
root@firewall:~# iptables -t filter -A FORWARD -p tcp -s 192.168.1.0/24 -d 66.77.88.99 --dport 21 -j ACCEPT

Como las reglas se van evaluando en el orden en que van siendo creadas, lo primero que hice fue crear la regla que bloquea el acceso al equipo especificado, como ven especifique la acción "DROP", esta acción bloqueara los paquetes que coincidan con lo que especificamos en la regla. Luego cree una regla que permite a cualquier otro equipo el trafico FTP pero solo lo permite al equipo especificado (66.77.88.99). 

Supongamos ahora que instalamos SSH en nuestro Firewall para tener acceso remoto a el desde Internet. Tenemos que crear una regla en IPTables para que este permita conexiones SSH al equipo a través de su IP externa, para esto ejecutamos:

root@firewall:~# iptables -t filter -A INPUT -p tcp -s 0/0 -d 172.23.45.7 --dport 22 -j ACCEPT

Como pueden ver ahora utilizamos la cadena INPUT, porque se trata de paquetes que irán dirigidos al Firewall, no a algún equipo detrás de el. Como queremos conectarnos desde Internet y puede que no siempre lleguemos a nuestro firewall usando la misma dirección IP, indicamos en el "source IP" (opción -s) "0/0" esto le indica a IPTables que las conexiones pueden ser desde cualquier dirección IP. Supongamos ahora que no queremos que desde Internet se pueda acceder al servidor SSH que tenemos corriendo en nuestro Firewall, sino que solo se pueda acceder a este desde la red interna. Para esto tendríamos que crear 2 reglas, una que bloque el acceso SSH desde Internet y otra que lo permita desde la red interna:

root@firewall:~# iptables -t filter -A INPUT -p tcp -s 0/0 -d 172.23.45.7 --dport 22 -j DROP
root@firewall:~# iptables -t filter -A INPUT -p tcp -s 192.168.1.0/24 -d 192.168.1.1 --dport 22 -j ACCEPT

Ok, supongamos que ya hemos creado las reglas que necesitamos en nuestro Firewall, ahora debemos especificar la acción por defecto que queremos para cada cadena. Como les mencione la acción por defecto es la acción que tomara IPTables sobre los paquetes que no coincidan con ninguna de las reglas especificadas en la cadena. Le diremos a IPTables que descarte todo paquete que no coincida con ninguna regla, para esto ejecutamos:

root@firewall:~# iptables -t filter -P INPUT DROP
root@firewall:~# iptables -t filter -P FORWARD DROP

Utilicé la opción "-P" para definir la acción o política por defecto, como ven utilice 2 comandos, uno por cada cadena. Ahora, para ver las reglas que se han definido en el firewall ejecutamos el siguiente comando:

root@firewall:~# iptables -nL

Si ejecutamos este comando tal como esta aquí, nos mostrara solamente información de la tabla FILTER, que es la tabla por defecto. Si queremos información sobre otra tabla solo tenemos que incluir la opción "-t" y el nombre de la tabla que queremos. Bueno, hasta aquí este intento de tutorial de IPTables, espero que hayan podido entender mis explicaciones y que los minutos dedicados a leer esto no hayan sido en vano. Mas adelante continuare hablando sobre otras cosas de IPTables, como por ejemplo, como cargar las reglas al iniciar el equipo, como hacer "baclup" de las reglas que hemos definido, módulos, etc.

Hasta el Próximo!

El Tipo de Informática

Continuar leyendo...