miércoles, 24 de noviembre de 2010

El candadito…


Los candaditos son buenos,  nos transmiten seguridad y nos gusta verlos por todas partes, en el navegador, en las carpetas, y si los tenemos en las unidades de disco (internas y externas) ya es la bomba!
Este post es un relato de mis experiencias con el Bitlocker, y su aplicación en escenarios un poco más complejos, combinando esta tecnología de cifrado con instalaciones del sistema operativo en discos virtuales, cifrado de unidades compartidas entre arranques de Windows 7 y Windows Server 2008 R2 y unidades donde se almacenan máquinas virtuales de Hyper-V.

¿Para qué cifrar?

Este fin de semana, mientras cenaba con una amiga y le enseñaba mi flamante Windows Phone 7, me decía “Wow! Increíble, la cantidad de cosas que llevas en el teléfono. Para ti perder el móvil tiene que ser lo peor de lo peor”. La verdad es que le contesté al segundo: “Pues no te creas, al final todo lo que llevo aquí está salvaguardado en otro sitio. Por ejemplo, la información de mis contactos está toda en el servidor de correo de la empresa (Exchange Server), en Facebook y en Windows Live, mis citas de calendario están en el Exchange y en Windows Live, mis correos están en el Exchange y en Hotmail, y las fotos según las estoy sacando ya se están replicando en Skydrive. Además, tengo el móvil protegido con un código y lo puedo borrar remotamente desde cualquier ordenador”.
Llevando estos conceptos al mundo de los PCs, los que habéis estado en alguno de los eventos de nuestra gira del año pasado, seguro que os acordáis de una historia que contaba Chema acerca de dejar el portátil olvidado en el aeropuerto… El siguiente comentario que hacía, a los que contestaban que al darse cuenta que se les había olvidado el cacharrito salían corriendo como alma que se lleva el diablo, era “Seguro que vosotros no tenéis vuestro ordenado cifrado ni hacéis copias de seguridad”. La historia no es tan descabellada y hace un par de años Dell presentaba un informe (Airport Insecurity: The Case of Lost Laptops) sobre este problema, algunos números de los que salían en dicho informe eran impresionantes.
Los más atentos, seguro que se an fijado que cuando Chema hacía la pregunta yo me quedaba callado, calladito! He de confesar que por aquel entonces no cumplía con las buenas prácticas, cosa que se solucionó inmediatamente después de la gira. Quedando las copias de seguridad diarias a cargo de mi Windows Home Server y los mandos de seguridad en manos del Bitlocker. Y todo esto para deciros, que lo más importante es la información, no el dispositivo que utilizamos para acceder a ella, pero para conseguir quitar importancia al dispositivo físico es necesario que se cumplan dos cosas en caso de pérdida o robo:
  • Exista un mecanismo de seguridad que no permita ver la información que se encuentra en el dispositivo (en este caso el cifrado Bitlocker).
  • Exista una copia de seguridad que nos permita de forma rápida y fácil, recuperar esa información en un nuevo dispositivo.

¿Y por dónde empiezo?

Antes de darle al botón, hay que pensar en la estrategia a seguir para cifrar nuestros equipos, pero sobretodo hay que preparar un plan de recuperación para el día que las cosas vayan por mal camino. Esto implica ver donde, y como, vamos a guardar las claves de recuperación para que estén accesibles cuando las necesitemos. En mi caso, independientemente de que esas claves se guarden en AD (por políticas), o no, yo las estoy guardando en un pendrive. Lógicamente que este está cifrado con Bitlocker To Go y su paradero es secreto de estado. Por otro lado, hay una copia de las claves de recuperación (incluida la del pendrive cifrado) en el Mysite del Sharepoint corporativo, en una biblioteca de documentos  que solo tiene permisos para mi usuario. En resumen, hay 3 posibilidades de obtener mis claves de recuperación: 1- Pendrive cifrado, 2- Mysite en Sharepoint, 3- Active Directory.
Uno de los requisitos que verifica el asistente de Bitlocker,  es que toda la información de la base de datos de arranque (BCD) para el sistema operativo que se quiere cifrar sea correcta. Por este motivo, es muy recomendable que le echéis un vistacillo con bcdedit, para confirmar que todo es correcto, que las rutas están bien y que apuntan a donde tienen que apuntar. Secciones del BCD que son especialmente importantes: {bootmgr}, {current}, recoverysequence, resumeobject y {memdiag}.
No nos olvidemos que para poder cifrar nuestro disco, es necesario tener una partición no cifrada donde instalar el sistema de arranque (bootmgr). Ahora ya sabéis el motivo por el cual, por defecto,  Windows 7 y Windows Server 2008 R2 os crean una pequeña partición de 100MB al principio del disco. :-)

¿Qué unidad debo cifrar?

Y finalmente llegamos a la pregunta del millón… ¿Es suficiente con cifrar una partición de datos? ¿Debo cifrar la unidad del sistema operativo?
La respuesta a esto, como a tantas otras cosas es “Depende”. Depende de donde guardáis información sensible en vuestros equipos, depende del uso que queréis hacer del sistema de cifrado y depende de lo transparente que queréis que este sea para el usuario. En el caso de las particiones de datos, Bitlocker permite definir una contraseña para acceder a las unidades cifradas (o usar el certificado de una smart card), además de la clave de recuperación que obtenemos al cifrar la unidad. Para que estas unidades se puedan desbloquear de forma automática y transparente para el usuario (sin pedirle contraseñas o elementos adicionales) es necesario que nuestra unidad de sistema operativo también esté cifrada, ya que es en ese volumen que se van a guardar los identificadores necesarios para acceder a los demás volúmenes de datos cifrados.
Otro aspecto a tener en cuenta es si vais a tener varios arranques distintos que acceden a una misma partición de datos, como es mi caso, en estos escenarios no poder contar con el desbloqueo automático es muy engorroso, por lo que la mejor opción pasa por cifrar las unidades de sistema operativo.
Nota: en el caso de los dispositivos extraíbles cifrados con Bitlocker To Go, no tenemos este requisito, aunque la partición de sistema. operativo no esté cifrada podemos seguir guardando la información que nos permite el desbloqueo automático.
Las unidades de sistema operativo cifradas pueden ser desbloqueadas mediante, uno (o una combinación) de 3 mecanismos posibles:
  • Clave de arranque guardada en el chip TPM
  • Código PIN, que incrementa el nivel de seguridad de la opción anterior
  • Clave de arranque guardada en un dispositivo USB externo.
La opción más cómoda es la que usa el chip TPM, ya que no supone un cambio perceptible para el usuario en relación a un sistema no cifrado, el PC arranca como siempre sin necesidad de conectar dispositivos adicionales. En este caso, la recomendación es que se establezca un código PIN de arranque para incrementar la seguridad de la solución. Para aquellos casos en que las máquinas no incorporan un chip TPM, la clave de arranque la tendríamos que guardar en un pendrive que habría que conectar siempre durante el proceso de arranque del sistema operativo.

Mi entorno…

Mi portátil, además de ser mi entorno de escritorio que uso a diario, es  a la vez mi máquina de demos, por lo que tengo dos arranques distintos, uno con Windows 7 Ultimate y otro con Windows Server 2008 R2 Enterprise y su maravilloso Hyper-V. Las principales carpetas de mi perfil de usuario, en Windows 7, están redirigidas a una partición de datos, que es también un almacén de máquinas virtuales cuando estoy trabajando con Windows Server 2008 R2. En mi caso estaba claro que esta partición había que cifrarla y que además tenía que estar visible desde cualquiera de las instancias de sistema operativo. Para no entorpecer mi trabajo introduciendo la contraseña cada vez que accedo a esa partición y también porque una buena parte de mi perfil está ahí, lo suyo sería usar el mecanismo de desbloqueo automático, está claro que además tenía que cifrar las unidades de sistema operativo. Mi portátil cuenta con un chip TPM por lo que el desbloqueo de las unidades de sistema durante el arranque iba a ser transparente. Finalmente, y de cara a incrementar la seguridad, no prescindo del uso de un código PIN de arranque…
Esta es la “foto” a nivel de Bitlocker que tengo implementada actualmente:



Y ahora qué? Bueno, que no cunda el pánico… Hibernación, hibernación… Ahí está una característica que no uso, siempre duermo la máquina, así que esto para mí no iba a ser un impedimento. No soportado, no soportado… Aquí ya se me presentaba el dilema “ético”, pero como Evangelista me siento en la obligación de probar esto al límite para contároslo todo, tooodo. Teniendo en cuenta que tengo copias de seguridad diarias de mi portátil, tampoco iba a ser un problemón la recuperación en caso de fallo. Así que puse manos a la obra…
Lo primero, cifrar las unidades de sistema operativo. Este proceso es bastante sencillo con la ayuda del asistente de cifrado de Bitlocker (Panel de Control –> Sistema y Seguridad –> Cifrado de unidad Bitlocker). Tuve que habilitar previamente el chip TPM y asumir el control del mismo, esto requiere un reinicio. En el asistente de Bitlocker también elegí la opción de usar un código PIN, que por defecto no aparece, para que tengamos esta opción disponible en nuestro entorno es necesario habilitar una política previamente (Configuración de ordenador –> Plantillas administrativas –> Componentes de Windows –> Cifrado de unidad Bitlocker –> Unidades de sistema operativo). Teniendo en cuenta el incremento a nivel de seguridad que este mecanismo aporta, habilitar esa política es algo que recomiendo que se haga a nivel de dominio.




Una vez terminado el cifrado de las unidades de sistema operativo (C:) con Bitlocker, las claves correspondientes ya están guardadas en mi chip TPM, ya puedo seguir con el cifrado de las demás unidades, en mi caso la de datos que comparto entre los dos sistemas operativos. El cifrado de estas unidades se hace mediante el mismo asistente del paso anterior, seleccionando la opción de desbloqueo automático. Está claro que esto lo hice desde uno de los sistemas operativos (en mi caso desde Windows 7), con lo cual al arrancar por primera vez con el otro (Windows Server 2008 R2), este no sabía cómo acceder al volumen. No pasa nada, cuando nos pida la contraseña se la damos y además marcamos la opción de desbloqueo automático para que no nos la vuelva a pedir.

¡Et voilá!

¡Tchan, tchaaan!… Todo funcionando perfectamente y sin pasos adicionales para acceder a la información. Así da gusto trabajar de forma segura, uno ni se entera que toda su información por debajo está protegida una vez que la experiencia de usuario es igual a la que tenía antes del Bitlocker, sin necesidad de realizar acciones extra. El PIN inicial para mí no es ninguna molestia, todo lo contrario, es lo que me hace sentir seguro cuando uso mi PC, al igual que el PIN de la tarjeta de crédito cuando voy al cajero, o el del móvil cuando lo enciendo.
Aquí os dejo con la “foto” final de mi sistema, este es el mapa de particiones y discos para que tengáis una idea clara de cómo quedó el resultado final:







¡Ah! Si os estáis preguntando si bitlocker e Hyper-V son compatibles, por eso de tener los vhds de las máquinas virtuales en una partición cifrada, la respuesta es sí, y además de compatible y soportado es recomendable. (http://www.microsoft.com/downloads/details.aspx?FamilyID=2c3c0615-baf4-4a9c-b613-3fda14e84545&DisplayLang=en). De hecho en mi entorno, incluso las máquinas virtuales que tengo configuradas en Windows Server 2008 R2 con arranque automático, y que están almacenadas en la unidad de datos, se arrancan perfectamente como si el volumen no estuviera cifrado.
¡Acordaros, los candaditos son buenos!






viernes, 12 de noviembre de 2010

Script para buscar y borrar una impresora de red

Enjoy!

On Error Resume Next

strComputer = "."
' Set objWMIService = GetObject("winmgmts:" _
'   & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Dim objNetwork
Set objNetwork = CreateObject("WScript.Network")

strPrintServer = "\\agco_haedo\p07"
If strPrintServer = ("\\agco_haedo\p07") Then
objNetwork.RemovePrinterConnection ("\\servidor\recursocompartido")
objNetwork.AddWindowsPrinterConnection ("\\servidor\recursocompartido")

End If




' Repeat above five (5) lines for each printer

Script para exportar los usuarios del Active Directory

Les dejo este script en Visual Basic que es bastante util!

SET objRootDSE = GETOBJECT("LDAP://RootDSE")
strExportFile = "C:\temp\MyExport.xls"

strRoot = objRootDSE.GET("DefaultNamingContext")
strfilter = "(&(objectCategory=Person)(objectClass=User))"
strAttributes = "sAMAccountName,userPrincipalName,givenName,sn," & _
                                "initials,displayName,physicalDeliveryOfficeName," & _
                                "telephoneNumber,mail,wWWHomePage,profilePath," & _
                                "scriptPath,homeDirectory,homeDrive,title,department," & _
                                "company,manager,homePhone,pager,mobile," & _
                                "facsimileTelephoneNumber,ipphone,info," & _
                                "streetAddress,postOfficeBox,l,st,postalCode,c"
strScope = "subtree"
SET cn = CREATEOBJECT("ADODB.Connection")
SET cmd = CREATEOBJECT("ADODB.Command")
cn.Provider = "ADsDSOObject"
cn.Open "Active Directory Provider"
cmd.ActiveConnection = cn

cmd.Properties("Page Size") = 1000

cmd.commandtext = ";" & strFilter & ";" & _
                                   strAttributes & ";" & strScope

SET rs = cmd.EXECUTE

SET objExcel = CREATEOBJECT("Excel.Application")
SET objWB = objExcel.Workbooks.Add
SET objSheet = objWB.Worksheets(1)

FOR i = 0 To rs.Fields.Count - 1
                objSheet.Cells(1, i + 1).Value = rs.Fields(i).Name
                objSheet.Cells(1, i + 1).Font.Bold = TRUE
NEXT

objSheet.Range("A2").CopyFromRecordset(rs)
objWB.SaveAs(strExportFile)


rs.close
cn.close
SET objSheet = NOTHING
SET objWB =  NOTHING
objExcel.Quit()
SET objExcel = NOTHING

Wscript.echo "Script Finished..Please See " & strExportFile

lunes, 8 de noviembre de 2010

Grupos en AD

Introducción.
Los grupos son usados para administrar los recursos en una red los puede haber de seguridad o de distribución.
Los grupos son uno de los objetos más importantes en un domino de Active Directory.

Tipos de Grupos
Existen 2 tipos de grupos, de seguridad y de distribución.
Los grupos de distribución se utilizan para enviar mails a todos los usuarios que pertenecen a ese grupo .NO poseen SID.
Los grupos de Seguridad tienen SID por lo tanto pueden ser usados para dar acceso a recursos compartido. También pueden ser usados como listas de distribución.

Ámbito de los grupos


El ámbito de los grupos puede ser Universal, Global, Dominio Local, y Local.
Cada una de estos ámbitos que puede tener un grupo se divide en 3 características:
Replicación, Membrecía, Disponibilidad

Grupos locales

Estos grupos solo existen localmente en la maquina a la que pertenecen, son creados en la base de datos SAM de la PC.

Grupos Domino Local

Son usados principalmente para manejar los permisos de los recursos

Grupos Globales

So n usados principalmente para definir varios objetos del dominio basado en el rol en el negocio ej. Sales,marketing, Sales laptop, etc.

Ámbito del grupo Los grupos pueden incluir como miembros a…. Los grupos pueden asignar permisos en …. El ámbito de los grupos puede convertirse a ..
Universales
  • Cuentas de cualquier dominio en el bosque en el que este grupo Universal reside
  • Los grupos globales de cualquier dominio en el bosque en el que este grupo Universal reside
  • Universal de los grupos de cualquier dominio en el bosque en el que este grupo Universal reside
  • Cualquier dominio o bosque
  • Dominio Local.
  • Global(siempre y cuando no existen otros grupos universales como miembros)
Globales
  • Cuentas en el mismo dominio que el grupo global principal
  • Los grupos globales del mismo dominio que el grupo global principal
  • permisos de miembros se pueden asignar en cualquier dominio
  • Universal (siempre y cuando no es miembro de ningún grupo global de otro tipo)
Locales del dominio
  • Cuentas de cualquier dominio
  • Los grupos globales de cualquier dominio
  • Universal de los grupos de cualquier dominio
  • Grupos locales de dominio, pero sólo desde el mismo dominio que el grupo de dominio local de padres.
  • permisos miembros solo se puede asignar en el mismo dominio que el grupo de dominio local de principal
  • Universal (siempre y cuando no es miembro de ningún grupo global de otro tipo)

Configurar la infraestructura de las zonas DNS

Creación y configuración de zonas.

Una zona DNS es una base de datos que contiene registros que se asocia nombres con direcciones de IP para una porción definida del espacio de nombres DNS.
Tipos de zonas
Zona principal
Cuando una zona que hospeda el servidor DNS es una zona principal, el servidor DNS es la fuente principal de información sobre esta zona y almacena la copia maestra de los datos de la zona en un archivo local o en AD DS. Cuando la zona se almacena en un archivo, se asigna a la zona principal el nombre zone_name.dns de forma predeterminada y se ubica en la carpeta %windir%\System32\Dns del servidor.
Zona secundaria
Cuando una zona que hospeda el servidor DNS es una zona secundaria, dicho servidor DNS es una fuente secundaria de información sobre esta zona. La zona de este servidor se debe obtener de otro equipo servidor DNS remoto que también hospede la zona. Este servidor DNS debe tener acceso de red al servidor DNS remoto que suministra la información actualizada de la zona a este servidor. Puesto que una zona secundaria no es más que una copia de la zona principal hospedada en otro servidor, no se puede almacenar en AD DS.

Zona de código Auxiliar (Stub zone)

Este tipo de zona es parecida a la zona secundaria pero solo contiene los registros necesarios para identificar el servidor DNS autoritario para la zona maestra.
Una stub zone lo único que hace es apuntar a los clientes hacia un servidor DNS, a primera vista puede parecer que no tiene utilidad pero tiene gran utilidad en dos tipos de escenario:
· en el caso de que estemos realizando cambios en nuestra infraestructura DNS así no tendremos que cambiar la configuración de los clientes mientras dure este proceso
· o en escenarios donde las zonas contengan gran cantidad de registros y no queramos realizar gran cantidad trafico de replicación de DNS entre distintas localizaciones por enlace WAN.
Este tipo de zonas solo están disponibles a partir de Windows Server 2003.

Existen dos supertipos de zona según el tipo de resolución que se realice, tenemos las zonas de búsqueda directa (forward lookup zones) que es el tipo mas utilizado es decir se realiza una resolución de nombre DNS a IP. También contamos con las zonas de búsqueda inversa (reverse lookup zones) que realizan justo lo contrario, es decir, ver cual es el nombre DNS asignado a una IP. Para ello dividen los nombres de espacio por subredes, y se nombra las zonas con el estándar C.B.A.in-addr.arpa para definir un rango IP de A.B.C.x y si el rango fuera clase A o B en lugar de clase C como este se representaría como A.in-addr.arpa o B.A.in-addr.arpa respectivamente




Almacenar una zona en AD.
Si el servidor DNS es también controlador de dominio es posible configurar el almacenamiento de la zona para que se integre en el directorio activo (ADI, Active directory integrated)
En las ADI los datos de la zona son automáticamente replicados através de AD. En la mayoría de los casos esta opcion elimina la necesidad de configurar la transferencia de zona a los servidores secundarios.

Integrar las zonas con AD tiene muchas ventajas .
· No se necesita configurar la replicación de la zona
· Tolerancia a fallos
· Las zonas ADI pueden aceptar actualizaciones seguras de otros dispositivos de la red.


Zona estándar

Al contrario de una zona integrada a AD la zona estándar almacena lo información en un archivo de texto localmente en el servidor DNS.
Al contrario de una zona integrada con AD en una zona estándar solo se puede configurar una única copia de la zona primaria.

Cuando usar Forwarders?

En algunos casos no se quiere que el servidor DNS se comunique directamente con el mundo exterior.
Ejemplo:

Si la red esta conectada a Internet a través de una conexión lenta, se puede usar los forwarders para que todas las iteraciones de los servidores DNS pase por un único servidor DNS así este puede tener más peticiones en cache.



Otro uso común es tener un servidor DNS detrás de un firewall y otro delante del firewall, el primero forwardea las solicitudes que no puede resolver al segundo.





Otro uso común es para resolver dentro de la jerarquía de AD DS, en entornos multidominio o en subdominios.
De manera predeterminada el servidor DNS que esta en el subdominio no puede resolver las consultas hacia el forest root domain o hacia otro DNS en la red.



Forwarders condicionales

Un forward condicional es una configuración del servidor en la cual las consultas hacia dominios específicos son reenviadas hacia un servidor DNS específico para que las resuelva.
Cuando usar forwarders condicionales

Uno de los tantos escenarios en que son útiles los reenvios condicionales es cuando dos redes separadas se unen.

Componentes de un servidor DNS

Los componentes de un servidor DNS independientemente de la platafoma donde corra son los siguiente:


Servidor DNS

Un servidor DNS es una maquina que corre un programa servidor DNS.
Un servidor DNS contiene información sobre una parte del árbol de estructura DNS y resuelve los pedidos de resolución de nombres que los clientes le hacen.

Zonas DNS

Son porciones del espacio de nombres de dominio que almacenan los datos. Cada zona de autoridad abarca al menos un dominio y posiblemente sus subdominios, si estos últimos no son delegados a otras zonas de autoridad.

DNS Resolvers

Es un servicio que usa el protocolo de DNS para pedir información al servidor de DNS.
En Windows el DNS resolver es el servicio “cliente DNS”.

Registro de recurso
Comúnmente llamado registro DNS, es una entrada en la base de datos del servidor DNS se utiliza para contestar las peticiones que se le hacen al servidor


Métodos de resolución DNS

Las consultas DNS se resuelven de diferentes formas. A veces, un cliente responde a una consulta localmente mediante la información almacenada en la caché obtenida de una consulta anterior.
El servidor DNS puede utilizar su propia caché de información de registros de recursos para responder a una consulta. Un servidor DNS también puede consultar o ponerse en contacto con otros servidores DNS en nombre del cliente solicitante para resolver el nombre por completo y, a continuación, enviar una respuesta al cliente. Este proceso se llama recursión.
Además, el mismo cliente puede intentar ponerse en contacto con servidores DNS adicionales para resolver un nombre. Cuando un cliente lo hace, utiliza consultas adicionales e independientes en función de respuestas de referencia de los servidores. Este proceso se llama iteración.

Pasos en una consulta DNS

En general las consultas DNS tienen 2 etapas:

Una consulta de nombre se inicia en la computadora cliente y es pasada al servicio cliente DNS para que lo resuelva.
Cuando la consulta no puede ser resuelta localmente por el servicio cliente DNS este pasa la consulta al servidor DNS.

El proceso de consulta inicia cuando un nombre DNS es usado por un programa en una PC, entonces el pedido es pasado al servicio "cliente DNS" para que lo resuelva, este lo intenta resolver buscando en su propio cache, y en el host-file.
Si la consulta no se puede resolver localmente el proceso de resolución continua con una consulta al servidor DNS.
El servicio cliente DNS usa una lista de servidores DNS ordenados por preferencia.
Cuando el servidor DNS recibe la consulta primero revisa si puede contestar a la consulta de manera autoritativa es decir ,básicamente si tiene configurada esa zona localmente. Si no hay una zona que corresponda con la búsqueda se fija en su cache por si ya resolvió con anterioridad esta petición si no es así el proceso continua dependiendo de cómo este configurado, de manera predeterminada el servidor de DNS realiza recursión para resolver el nombre si la recursividad está deshabilitada en el servidor de DNS, el propio cliente realiza consultas iterativas.