VMWare brigde error

Hoy voy a comentar un problema que me he encontrado configurando una máquina virtual Windows 2003 Server en VMWare Server sobre un Ubuntu Server 8.04 LTS. Básicamente aparecía el siguiente error al iniciar la máquina virtual configurada para conectar en modo «Brigde» (funcionando tanto el modo NAT como el modo «host only»):

Error: «The network bridge on device /dev/vmnet0 is temporarily down because the bridged Ethernet interface is down. The virtual machine may not be able to communicate with the host or with other machines on your network.»

El problema se ha identificado intentando reconfigurar la máquina virtual (con el guest apagado, claro).

[…]

root@Terran:~# vmware-config.pl
Do you want networking for your virtual machines? (yes/no/help) [yes]
Would you prefer to modify your existing networking configuration using the wizard or the editor? (wizard/editor/help) [wizard] editor

The following virtual networks have been defined:

. vmnet0 is bridged to eth0
. vmnet1 is a host-only network on private subnet 172.16.120.0.
. vmnet8 is a NAT network on private subnet 192.168.10.0.
[…]

De la anterior «captura» nos hemos dado cuenta que que vmnet0 estaba asignado a la eth0, así que se ha decidido comprobar si realmente estabamos usando esta eth0 en el host:

root@Terran:~# ifconfig

eth1 Link encap:Ethernet HWaddr 00:50:bf:5a:a6:e7
inet addr:10.10.12.11 Bcast:10.10.12.255 Mask:255.255.255.0
inet6 addr: fe80::250:bfff:fe5a:a6e7/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:563969 errors:0 dropped:0 overruns:0 frame:0
TX packets:475524 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:299505491 (285.6 MB) TX bytes:416600924 (397.3 MB)
Interrupt:16 Base address:0xd800

Efectivamente, VMWare ha configurado por defecto (seguramente por hacer la configuración del mismo sin pararse a leer todos los puntos) la salida Bridge con una interfaz que no era la eth1 que estábamos usando (nuestro servidor tiene más de una tarjeta de red). Hemos reconfigurado este punto en VMWare de la siguiente manera:

Do you want networking for your virtual machines? (yes/no/help) [yes]

Would you prefer to modify your existing networking configuration using the wizard or the editor? (wizard/editor/help) [wizard] editor

The following virtual networks have been defined:

. vmnet0 is bridged to eth0
. vmnet1 is a host-only network on private subnet 172.16.120.0.
. vmnet8 is a NAT network on private subnet 192.168.10.0.

Do you wish to make any changes to the current virtual networks settings?
(yes/no) [no] yes

Which virtual network do you wish to configure? (0-99) 0

The network vmnet0 has been reserved for a bridged network. You may change it, but it is highly recommended that you use it as a bridged network. Are you sure you want to modify it? (yes/no) [no] yes

What type of virtual network do you wish to set vmnet0?
(bridged,hostonly,nat,none) [bridged]

Configuring a bridged network for vmnet0.

Your computer has multiple ethernet network interfaces available: eth1, vmnet1,
vmnet8, eth0. Which one do you want to bridge to vmnet0? [eth0] eth1

The following virtual networks have been defined:

. vmnet0 is bridged to eth1
. vmnet1 is a host-only network on private subnet 172.16.120.0.
. vmnet8 is a NAT network on private subnet 192.168.10.0.

Do you wish to make additional changes to the current virtual networks settings? (yes/no) [yes] no

Entrando en Vista (desde dentro)

BeerVeo en menéame un interesante vídeo de como conseguir privilegios de administración en una máquina Windows Vista (de la cual, obviamente desconocemos el password), usando la conocida distro Backtrack.

Sin duda un video interesante, y a tener en cuenta si tu empresa usa Windows Vista y cuenta con algún empleado con ganas de marcha, aunque, si no recuerdo mal, alguna vez he usado Ophcrack, otro Live-CD de este tipo especializado en recuperar contraseñas locales de sistemas Windows (y funciona). Así que quizá no haga falta irse a modificar ficheros como nos propone el tutorial, si ya tenemos la posibilidad de estar físicamente delante de la máquina «víctima».

Flickr! Foto por Kate Raynes-Goldie

Sitemaps

Hace ya un tiempo, se me encargo la ardua tarea de crear un sitemap de una determinada web. Cómo era la primera vez que tenía que pelearme con un sitemap, fui a preguntar al mejor, a Google. Esto es lo que me respondió:

Forma manual (según Google)

  • Siguiendo los pasos de:

    https://www.google.com/webmasters/tools/docs/es/sitemap-generator.html

    1- Descargar el generador de sitemaps de Google

    2- Crear de un fichero con el listado de todos los archivos del servidor que queremos que contenga nuestro sitemap, por ejemplo ejecutando en el servidor:

    • ls -R > out.txt

    3- Modificar el archivo de configuración config.xml con:

    • Url base del sitio.

    • Ruta del servidor.

    • Método: URL (en mi caso con este bastaba).

      • Seleccionando los archivos php, html, css y pdf.

      • Quitando las urls que no queremos que aparezcan.

    • Sin modificar los filtros que vienen por defecto.

    • Ejecutar el generador de sitemaps, nuevamente en el servidor, dándonos como resultado unos cuantos errores, o si todo está correcto, nuestro sitemap.

  • Finalmente, entrar en www.google.com/webmasters/tools/ con una cuenta de gmail (preferentemente la del webmaster o administrador de la web de la que estamos creando el sitemap)
    • Dashboard->Sitemaps->Add Sitemap
    • Verificar errores

Forma automática

Esta manera de crear un sitemap, contrasta con las facilidades que dan algunas webs que ofrecen este servicio de forma gratuita y totalmente automática. Únicamente hay que indicar la url, la frecuencia de actualización de las páginas, cuando fue la última vez que se realizaron modificaciones en la web, así como la prioridad por defecto de las páginas que forman el site.
http://www.xml-sitemaps.com/

Además, por ejemplo esta web te informa si encuentra inconsistencias, dando consejos de cómo solucionarlos.

Ahora solo queda escoger con qué método nos quedamos. Yo particularmente me quedo sin duda con el segundo método (más rápido y fácil), ya que una vez tengamos generado el sitemap.xml podemos modificarlo a nuestro gusto si es necesario.

Conoce la web

Command LineBuscando mis cosillas por Internet, he ido a parar con una página accesible desde la caché de google que explicaba algunos comandos de lo más basico a la vez que interesantes para usar en Internet, si quieres obtener información de un determinado host. Creo que es una buena idea recogerlos y tenerlos aquí ordenados (obviamente hay muchos y muchos y aún muchos más).

  • ping <host>: el rey por excelencia. Si te responde sabrás que actualmente tienes conexión con el host. Si no te responde indicará que o bien está apagado, o bien no responde a pings debido a sus protocolos de seguridad. No lo uses junto a un -f ya que podrías llegar a colapsar el host (metiéndote en problemas). Junto con -a obtendremos la resolución de nombres para una dirección IP.
  • whois <host>: nos debería devolver el resultado de la consulta a la base de datos whois, con información del propietario del dominio del host, el teléfono y mail de contacto, etc. Además, es posible que nos devuelva un listado de DNS que guardan más información respecto al whois del host.
  • finger <usuario@host>: este es el comando que menos conozco. De hecho creo que no lo he usado desde la facultad (y quizá ni eso). Parece ser que este comando nos lo van a rechazar en la mayoría de ocasiones que lo usemos debido a problemas de seguridad, pero nos servirá para obtener información detallada de un usuario de un host (por ejemplo sacado del whois anterior). Usando simplemente <@host> nos listará los usuarios actualmente conectados al sistema. En cualquier caso, no viene instalado por defecto en las versiones de ubuntu que he probado (de la 6.06 en adelante).
  • telnet <host> <puerto>: pensándolo un poco, quizá me he precipitado diciendo que el ping era el rey. Si no ponemos puerto intentará conectar con el 23/TCP por defecto, en caso contrario intentará conectar con el puerto indicado, para comprobar si existe un servicio corriendo y accesible en el host.

Aprovechando el hilo dejo un comando más que no citaba las fuentes originales pero que creo que es bastante útil:

  • nslookup <dominio> <servidorDNS>: este comando preguntará al servidor DNS si es capaz de resolver el dominio que le indicamos. Útil a la hora de configurar firewalls y/o programas que actualizen desde un determinado host, y nos queramos asegurar de que serán capaces de encontrarlo.

Se trata de comandos muy básicos y la mayoría de ellos se pueden encontrar implementados en forma de aplicaciones web para ejecutarlos directamente desde la web. Como siempre, la mejor ayuda es el «man» o en su defecto, google.

Flickr! Foto por Dick Mooran

Jugando con el móvil

LemonEstaba escuchando el programa de radio 5.0 de RNE (todos los martes sobre las 23:05h), donde han hecho una interesante entrevista al director general (lo siento, no recuerdo su nombre) de LemonQuest, una joven compañía española de videojuegos para el móvil. Resulta sorprendente como pueden llegar a crecer estas compañías, ya que en menos de 2 años (se fundó sobre agosto del 2006) ya cuenta con más de 60 empleados en España, y más de 40 en sus dos filiales en China, más los nuevos proyectos en Estados Unidos. Aunque según acabo de leer (con la entrada ya redactada y a punto de publicar), se trata realmente de una fusión de dos compañías más una tercera aportando capital. Fuente: Mosaic

A parte del espectacular crecimiento, me llamó la atención cuando el presentador preguntó el porqué de realizar juegos para móvil, cuando se tiene la impresión de que donde está el prestigio y el negocio es en los videojuegos de consola. La respuesta fue clara, y vendría a decir algo parecido a lo siguiente: «la consola que más se ha vendido a lo largo de la historia es la PlayStation2, con unos 80 millones de aparatos. Si tenemos en cuenta que cada año se adquieren alrededor de 800 millones de nuevos teléfonos móviles, parece claro donde está el verdadero negocio». Pues sí, ahí le ha dado.

Por cierto, todos los podcasts de 5.0 están disponibles en su web.

Flickr! Foto por Annadriel

Integrándonos con Active Directory

GPOHace unas semanas, realicé un pequeño curso de administración de Directorio Activo en Windows 2003 Server, de forma totalmente gratuita aunque incompleta, ya que se trataba de una formación de 12h, de las 24 totales que duraba el curso. En cualquier caso me sirvió para aprender los conceptos básicos de DA e ir un poco más allá.

La cuestión es que este curso ha despertado en mi, simpatía e interés por los programas que tienen algún tipo de integración con DA. Curiosamente, vengo de pasar unos días en Peterborough (un pueblecito muy al norte de Londres), dónde he asistido a unas jornadas técnicas de unos productos que comercializamos, y me ha sorprendido ver como uno de ellos tiene implementada una muy buena integración con DA. Se trata de un programa de control remoto, cuya integración con DA va más allá de permitir que un determinado grupo o unidad organizativa tenga permisos para iniciar conexiones remotas con determinados usuarios, y por tanto decidir qué usuarios de DA pueden usar control remoto. Concretamente, lo novedoso (para mi) es que permite importarse en el DA a través de unos templates (ADM) que describen las políticas de configuración del programa, para poderse administrar todo directamente desde el propio DA.

Esto sin duda, facilita la vida a los administradores de sistemas, que pueden escoger si prefieren integrar la herramienta con su DA, manteniendo así de forma centralizada la administración de la seguridad de la empresa, o si por el contrario estiman mejor usar la propia interfaz de configuración del programa. Se trata, a mi entender, de una opción muy interesante a tener en cuenta.

Contraseñas de Windows

Mirando los feeds de «una al día» de Hispasec, he ido a parar a un fantástico artículo sobre la seguridad en las contraseñas locales en sistemas Windows dividido en varias entradas. Concretamente está en los siguientes enlaces:

Básicamente comentan la existencia de un fichero donde se almacenan las contraseñas (SAM), que como ya sabemos únicamente se guardan cifradas. Así pues, siempre que se realiza una comprobación de contraseñas realmente se realiza una comprobación del cifrado de las mismas (esta es la razón por la cual en los sistemas «seguros» un administrador nunca podrá recordarte tu contraseña si la has perdido, únicamente podrá crearte una de nuevo, ya que no será capaz de recuperarla a partir del cifrado).

Security

Por lo que nos comentan los amigos de Hispasec, inicialmente Windows usaba el algoritmo LM para el cifrado de las contraseñas (permitiendo contraseñas de hasta 14 carácteres), que introducía numerosos fallos de diseño y facilitaba la vida a los atacantes que buscaban mediante programas de fuerza bruta crear una contraseña que generase el mismo cifrado. Posteriormente Windows sacó el nuevo algoritmo NTLM, mucho más robusto, pero que no añadía seguridad, debido a que hasta la aparición de Windows Vista, se almacenaban los resultados de aplicar ambos algoritmos (LM y NTLM) en el mismo fichero de passwords (SAM), con lo que un atacante únicamente tenía que ignorar la clave NTLM y centrarse, como hasta ahora en el LM.

Como punto a favor, diremos que se puede anular el almacenamiento en cifrado LM usando passwords de 15 o más caracteres, o incluso forzando al sistema a no usarlo

Como último apunte, me quedo con el intento de añadir seguridad por parte de Microsoft, añadiendo un cifrado del cifrado con el uso de Syskey, que da las opciones (que nadie, que conozca, usa o ha usado) de tener que introducir manualmente el cifrado al iniciar el PC, o mediante el uso de un disquette, imposibilitando así que un atacante pueda conseguir este segundo cifrado (ya que está en tu cabeza o en un medio físico externo).

Flickr! Foto por Brad & Sabrina

Admin$

Admin$ es un recurso de red que nos permite saber si podemos conseguir permisos de administrador local en una máquina remota. Por defecto se crean en todos los sistemas operativos basados en NT (NT/2000/XP/2003) que comparten, además, cada partición del disco duro (C$, D$, etc.). Fuente:Wikipedia

Por nuestra parte, entonces deberíamos poder acceder al PC remoto de cualquiera de las siguientes maneras:

  • \\ip_pc_remoto\Admin$
  • \\ nombre_pc_remoto\Admin$

Después de autenticarnos, tendremos acceso al directorio %SYSTEMROOT% del PC en cuestión.

Esta semana me he encontrado un cliente con Windows XP Profesional SP2, con estos recursos no disponibles (mostrando el típico mensaje de «No se puede encontrar la ruta de acceso a la red»). Para reproducir el problema hemos seguido estos pasos:

  • Hemos entrado en el registro de un PC de test con Admin$ habilitado, para comprobar que no tenía la clave HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services\LanManServer\Parameters\AutoShareWks.
  • Hemos creado esta clave AutoShareWks tipo DWORD dándole valor 0 (deshabilitado).
  • Una vez reiniciada la máquina hemos comprobado que efectivamente, hemos perdido la conectividad con Admin$.
  • Dejando el valor de AutoShareWks a 1 y reiniciando el PC de nuevo hemos vuelto al punto de partida.
  • Cómo inicialmente no contábamos con esta key, la hemos eliminado, reiniciado por tercera vez la máquina, y como era de suponer, sin perder el acceso a Admin$.

En caso de que la máquina hubiese sido un servidor, habríamos trabajado con la key AutoShareServer.

Por cierto, Google no permite realizar búsquedas usando el símbolo ‘$’ salvo alguna excepción (cómo $10), así que no ha sido fácil encontrar esta información. Espero que os sirva!

El «otro» blog

GoogleNo hace mucho que empecé a leer los sites que más me gustan a través de las suscripciones RSS.

Actualmente estoy usando el fantástico Google Reader, que entre sus muchas funcionalidades, me ha llamado especialmente la atención la de compartir las entradas que te parecen más interesantes. Haciendo esto, no solamente permites que tus contactos de gmail que también usan Google Reader puedan acceder a tus entradas compartidas, sino que además automáticamente se genera un blog con estas entradas compartidas.

En mi caso concreto «mi otro blog» es éste.

Flickr! Foto por Simon Davison

SAIs Y PCs virtuales

ApagadoTenía ya preparada una entrada sobre como ingeniárselas para apagar de forma correcta tus servidores virtualizados, cuando éstos están conectados a un SAI el cual se apaga automáticamente al detectar un corte de luz prolongado. Cómo no tenía una respuesta había diseñado un script que siguiendo la forma de trabajar de algunos dispositivos de alta disponibilidad, me apagaba los servidores al detectar un corte de luz.

Finalmente, vimos que VMWare Server, (la versión gratuita y totalmente funcional para entornos de producción de servidores virtualizados) ya viene preparado para apagarse de forma correcta, durante el proceso de apagado de la máquina física (host) en la que se aloja, de la misma manera que permite encenderse a la par que su host.

Esta fantástica funcionalidad, está directamente disponible desde la consola de administración de las máquinas virtuales (VMWare Server Console), en las opciones de apagado y encendido (y yo sin encontrarla…), y de esta forma, permite gestionar las máquinas virtuales alojadas en hosts conectados a un SAI, los cuales queremos apagar de forma correcta y segura, y sobretodo de forma automática, ante problemas en la red eléctrica.

Esto soluciona el problema al que le estaba dando vueltas: existen mecanismos de apagado automático de PC’s conectados a un SAI. Pero si estos PC’s contienen a su vez otros PC’s virtualizados en su interior, ¿cómo los apagamos de forma correcta antes de que se apague automáticamente el PC físico que los aloja? Pues con VMWare!

Flickr! Foto por cirox