January 28, 2018

Aunque Cisco diga que no...

Hace unos días me encontré con un escenario muy interesante, el despliego de un software de Cisco, el AnyConnect mediante GPOs.
Esto desde luego para acelerar el proceso, lo curioso es que el fabricante dice esto no se pude hacer por este medio, únicamente con un componente propio.
Leyendo foros encontré lo mismo y una gran cantidad de ingenieros que tropezaron con esto, así que les comparto el proceso.


Preparación de los paquetes


Punto de distribución


Cree una unidad compartida, considere su topología, cantidad de clientes, enlaces, utilización y aspectos similares para decidir sobre este tema.
Como necesitamos que prácticamente todo usuario acceda el software los permisos en la unidad compartida se pueden brindar a Authenticated Users.

Personalización de los paquetes


Por los diferentes parámetros que requieren los paquetes la forma más segura de personalizarlos es mediante un archivo de transformación (tipo MST) el cual se realiza con el software ORCA o similares.
Básicamente lo que hacemos es abrir el instalador e insertar una o varias propiedades nuevas en el archivo diferencial, el MST.
No existe un instalador separado para ORCA, este es parte del SDK de Windows.
1.       Ejecute ORCA y especifique el instalador que desea personalizar.

2.       En el panel izquierdo seleccione la opción llamada Property



3.       Seleccione la opción Transform / New Transform para crear su archivo de transformación.

4.       Posicione el curso en la tabla de propiedades, clic derecho agregar línea.

5.       Estas líneas son simplemente los parámetros que hubiesen especificado en el comando de instalación, por ejemplo PRE_DEPLOY_DISABLE_VPN=1 para suprimir el módulo de VPN. Simplemente inserte el nombre de la propiedad y el valor de esta.



6.       Otras propiedades son:
a.       LOCKDOWN para deshabilitar la posibilidad de que el usuario modifique algún parámetro del software una vez instalado.
b.      RebootYesNo para especificar si desea reiniciar el equipo.
c.       DISABLE_CUSTOMER_EXPERIENCE_FEEDBACK para deshabilitar que automáticamente se envíe información de uso y experiencia del producto al fabricante.



Para más información refiérase a la documentación de CISCO.

7.       Salve los cambios en el archivo MST.

8.       Ubique los archivos MST junto con los instaladores y otros necesarios.

Creación de los GPOs

Creación de la política de distribución de software


Este es el método sugerido tanto por seguridad como rendimiento del mismo.
En la consola de administración de políticas cree una política nueva en el nivel de su preferencia.
1.       Navegue en la consola a la sección: Computer Configuration / Policies / Software Settings / Software Installation.



2.       Dar clic derecho  New / Package.

3.       Especifique la ruta UNC al paquete de instalación, seleccione Open y luego Advanced.

4.       Navegue a la etiqueta Deployment y de clic en el botón de Advanced.

5.       Active la opción Ignore Language when deploying this package. Presione OK.

6.       Navegue a la etiqueta Modifications y de clic en el boton Add.



7.       Especifique la ruta UNC al paquete de modificación. Presione Ok.
  
Su política de instalación de software se verá como la siguiente.



* Nótese que esta se ejecuta al iniciar el equipo.


Creación de los archivos de configuración


1.       Navegue en la consola a la sección Computer Configuration / Preferences / Windows Settings / Files

2.       Clic derecho New / File.

3.       Seleccione la acción, en este caso Create (este método permite actualizar, remover  o bien reemplazar archivos.



4.       Especifique la ruta UNC del archivo a enviar y la ruta local de donde gusta este se cree. No olvide el nombre del archivo y su terminación.



En este caso los archivos a enviar son el de configuración (configuracition.xml) que se debe almacenar en “C:\ProgramData\Cisco\Cisco AnyConnect Secure Mobility Client\Network Access Manager\system\configuration.xml”.

También se debe enviar el archivo de traducción de idioma (AnyConnect.mo) que se debe de almacenar en “C:\ProgramData\Cisco\Cisco AnyConnect Secure Mobility Client\l10n\es\LC_MESSAGES\AnyConnect.mo”.

Consulte la documentación de Cisco para más información sobre estos.

Una vez configurada la política esta lucirá de la siguiente forma.



Creación de llaves de registro (Windows Registry)


Por una recomendación de Cisco (CSCuw01496) es necesario crear una llave de registro tipo DWORD con el valor 1, llamada LsaAllowReturningUnencryptedSecrets. Esta debe almacenarse en la ruta HKLM\SYSTEM\CurrentControlSet\Control\Lsa.

1.       Navegue en la consola a la sección Computer Configuration / Preferences / Windows Settings / Registry

2.       Clic derecho New / Registry Item.

3.       Seleccione la acción, en este caso Create (este método permite actualizar, remover  o bien reemplazar ítems del Registro de Windows).

4.       Especifique la ruta, nombre del ítem, tipo y valor del mismo, esto según la información provista al inicio de la sección.

Una vez configurada esta sección de la política esta lucirá de la siguiente forma.




Creación de la política de distribución de software (por archivo BAT)


Este es un método alternativo, por temas de seguridad y rendimiento el método sugerido es el anterior.
En la consola de administración de políticas cree una política nueva en el nivel de su preferencia.
1.       Navegue en la consola a la sección: Computer Configuration / Policies / Windows Settings / Scripts / Startup.

2.       Dar clic en Add.

3.       Especifique la ruta UNC al archivo de comandos.

Detalle del archivo de comandos


Las siguientes líneas de código realizas la validación e instalación del software, utilizando como insumo los archivos MSI y MST mencionados anteriormente, salvar como archivo tipo BAT en la ruta UNC donde residen los otros archivos.

IF EXIST "C:\Program Files (x86)\Cisco\Cisco AnyConnect VPN Client\vpndownloader.exe" GOTO :dae
ELSE
msiexec /i \\dae-rwdc-100\ISE\anyconnect-win-4.5.03040-core-vpn-predeploy-k9.msi TRANSFORMS=\\dae-rwdc-100\ISE\anyconnect-win-4.5.03040-core-MOPT.mst /quiet /passive
msiexec /i \\dae-rwdc-100\ISE\anyconnect-win-4.5.03040-nam-predeploy-k9.msi TRANSFORMS=\\dae-rwdc-100\ISE\anyconnect-win-4.5.03040-nam-reboot.mst  /quiet /passive
shutdown /t 120 /c "Shutting down, save and close your documents"
exit
:dae
exit

Código con comentarios en color verde.

IF EXIST "C:\Program Files (x86)\Cisco\Cisco AnyConnect VPN Client\vpndownloader.exe" GOTO :dae
ELSE SECCION DE VALIDACION, SI ENCUENTRA EL ARCHIVO vpndownloader.exe VAYA AL PUNTO :dae Y CONCLUYA. DE EXISTIR DICHO ARCHIVO ES PORQUE EL SOFTWARE YA FUE INSTALADO EN EL EQUIPO.
msiexec /i \\dae-rwdc-100\ISE\anyconnect-win-4.5.03040-core-vpn-predeploy-k9.msi TRANSFORMS=\\dae-rwdc-100\ISE\anyconnect-win-4.5.03040-core-MOPT.mst /quiet /passive SE INVOCA EL ARCHIVO DE INSTALACION Y EL DE MODIFICACION CON LOS PARAMETROS ADECUADOS PARA OMITIR LA INTERVENCION DEL USUARIO
msiexec /i \\dae-rwdc-100\ISE\anyconnect-win-4.5.03040-nam-predeploy-k9.msi TRANSFORMS=\\dae-rwdc-100\ISE\anyconnect-win-4.5.03040-nam-reboot.mst  /quiet /passive SE INVOCA EL ARCHIVO DE INSTALACION Y EL DE MODIFICACION CON LOS PARAMETROS ADECUADOS PARA OMITIR LA INTERVENCION DEL USUARIO
shutdown /t 120 /c "Shutting down, save and close your documents" ORDEN DE APAGADO EN 120 SEGUNDO, CON COMENTARIO PARA EL USUARIO, ESTE ES OPCIONAL.
exit ORDEN DE SALIDA
:dae PUNTO DEFINIDO EN EL AREA DE VALIDACION
exit ORDEN DE SALIDA

Esto también se podría lograr con un archivo tipo PS1, el cual se puede firmar digitalmente y agregar otros temas de seguridad.

Combine esto con los pasos anteriores de los archivos de configuración y llaves del registro.

Policita deshabilitado UAC


Aunque la recomendación del fabricante es mantener habilitado el UAC existen escenarios en donde la capa adicional de seguridad que este crea puede entorpecer el proceso de instalación de algunos productos, por ende se sugiere crear una política con los siguientes parámetros para facilitar el despliegue del software.
Dicha política contempla parámetros que buscan ajustar ligeramente el comportamiento del sistema operativo y procesamiento de las políticas.
En la consola de administración de políticas cree una política nueva en el nivel de su preferencia. Este se sugiere concuerde con los anteriores.
1.       Navegue en la consola a la sección: Computer Configuration / Policies / Windows Settings / Security Settings / Local Policies / Security Options.



2.       Modifique los siguientes 3 parámetros de acuerdo a la imagen.



3.       Navegue en la consola a la sección: Computer Configuration / Policies / Administrative Templates / System / Group Policy y modifique el valor detallado.



4.       Navegue en la consola a la sección: Computer Configuration / Policies / Administrative Templates / System / Logon y modifique el valor detallado.



5.       Navegue en la consola a la sección: Computer Configuration / Policies / Administrative Templates / Windows Components / Windows Instaler y modifique el valor detallado.



6.       Navegue en la consola a la sección Computer Configuration / Preferences / Windows Settings / Registry

7.       Clic derecho New / Registry Item.

8.       Seleccione la acción, en este caso Create (este método permite actualizar, remover  o bien reemplazar ítems del Registro de Windows).

1.       Cree una llave de registro tipo DWORD con el valor 0, llamada HiberbootEnabled. Esta debe almacenarse en la ruta HKLM\SYSTEM\ CurrentControlSet\Control\Session Manager\Power
Una vez configurada esta sección de la política esta lucirá de la siguiente forma.


Filtrado de clientes


La políticas grupales pueden ser filtradas de diferentes formas, por su ubicación (a nivel de dominio, sitio o bien unidad organizativa), por membresía de grupos (mantenga presente el concepto me membresías anidadas) o bien por medio de consultas WMI.

En este escenario se utilizaremos filtros WMI, esto para no tener que mantener uno o varios grupos y sus membresías y poder discriminar sistemas operativos en versión Server de una forma eficaz.

Filtros utilizados:

select * from Win32_OperatingSystem WHERE ProductType="1" AND NOT Version like "10.%"

select * from Win32_OperatingSystem WHERE Version like "10.%" AND ProductType="1"

Código con comentarios en color verde.

select * from Win32_OperatingSystem WHERE ProductType="1" AND NOT Version like "10.%" ESTE FILTRO BUSCA EQUIPOS CON SISTEMA OPERATIVO DE ESTACION DE TRABAJO, NO SERVIDORES. ADICIONALMENTE QUE SU VERSION NO SEA LA 10.*, LO CUAL SE TRADUCE A CUALQUIERA MENOS WINDOWS 10.
select * from Win32_OperatingSystem WHERE Version like "10.%" AND ProductType="1" ESTE FILTRO BUSCA EQUIPOS CUYO SISTEMA OPERATIVO SEA VERSION 10.* EN ADELANTE, EXPLICITAMENTE AQUELLOS CON VERSION DE ESTACION DE TRABAJO, ESTO PARA EVITAR QUE LA POLITICA APLIQUE A LAS ULTIMAS VERSIONES DE WINDOWS SERVER.

CREACION DE FILTRO WMI


1.       Navegue en la consola de administración de políticas a la sección: WMI FIlters.

2.       Clic derecho New

3.       Especifique un nombre, adicionalmente una descripción (para futuras referencias) y presione Add.

4.       Ingrese el texto del filtro, documentado en el paso anterior.


APLICACIÓN DEL FILTRO WMI


1.       Navegue en la consola de administración de políticas a la política donde desea aplicar el filtro WMI, en la parte inferior de la etiqueta Scope encontrará la opción WMI Filtering.



2.       Seleccione el filtro a aplicar.

Resolución de problemas


Los siguientes enlaces contienen información y procedimientos útiles para la resolución de problemas con las políticas, estos pueden deberse a múltiples factores, desde permisos, resolución de nombres,  productos de terceros, bloqueos de herencia, temas propios del diseño de la jerarquía de unidades y/o más.
Herramientas como GPResult, GPUppdate y las bitácoras de UserEnv también son de gran ayuda.

¡Feliz inicio de semana!


~d

May 14, 2017

#WannaCry… de hecho, tú mismo quisiste llorar.

Entonces, el pánico del momento es derivado de un protocolo que se empezó a utilizar en mayor escala allá en 1990… y muchos administradores a pesar de la obsolescencia del mismo y la múltiple documentación de sus carencias lo continúan utilizando o bien permitiendo en sus ambientes. Esto sumado a equipos sin actualizaciones. ¿No les suena esto como a negligencia?
Cuántas veces he escuchado un sinfín de escusas respecto a las actualizaciones, cuántas veces se encuentran cosas hechas en la forma "fácil" como por ejemplo deshabilitar el firewall de Windows, claro es más rápido que configurarlos apropiadamente.
¡¿Cuántos gerentes de TI piensan que vivir en la obsolescencia es igual a maximizar el ROI?!
Esto es un tema de no acabar, los banderines de seguridad se muestran y luego son ignorados, una y otra vez... he aquí un artículo de otra vulnerabilidad hace unos meses https://blogs.technet.microsoft.com/filecab/2016/09/16/stop-using-smb1/ esta también relacionada a SMB v1.
Ahora, quizás con ese temor latente imagino ya han descargado y distribuido los archivos del MS17-010… o ¿van también a ignorarlo?
Seamos responsables con nuestros ambientes, con nuestros clientes.
Es una llave de registro la que desactiva este protocolo, que en muchos casos inclusive es innecesario.


Hasta pronto.

June 20, 2015

Políticas para terceros.

Bueno esto es algo que un buen amigo me pidió y la verdad se lo debía hace ya tiempo… a veces las 24 horas del día no alcanzan.
Los siguiente parámetros funcionan para deshabilitar las actualizaciones de varios productos de terceros que la verdad aunque sabemos las actualizaciones son parte de cualquier producto a veces es también necesario deshabilitarlas con productos como estos por temas de compatibilidad y similares. En lo personal muchas veces he escuchado la frase “mi producto X no funciona con la nueva versión de Java”.
Ok entonces tenemos una serie de llaves de registro para deshabilitar Java (32 y 64 bits) y luego Acrobat Reader versiones 10 y 11 respectivamente
Todas las llaves son tipo DWORD con el valor 0.

Hive                      HKEY_LOCAL_MACHINE
Key path              SOFTWARE\JavaSoft\Java Update\Policy
Value name         EnableJavaUpdate

Hive                      HKEY_LOCAL_MACHINE
Key path              SOFTWARE\Wow6432Node\JavaSoft\Java Update\Policy
Value name         EnableJavaUpdate

Hive                      HKEY_LOCAL_MACHINE
Key path              SOFTWARE\Policies\Adobe\Acrobat Reader\10.0\FeatureLockDown
Value name         bUpdater

Hive                      HKEY_LOCAL_MACHINE
Key path              SOFTWARE\Policies\Adobe\Acrobat Reader\11.0\FeatureLockDown
Value name         bUpdater

Estas las vamos a distribuir tomando ventaja de las GPP https://technet.microsoft.com/en-us/library/cc731892(v=ws.10).aspx
Una gran ventaja de estas es que podemos utilizar el Item Level Targeting http://www.windowsnetworking.com/articles-tutorials/common/Group-Policy-Preferences-Understanding-Implementing-Item-Level-Targeting.html para así discriminar las diferentes arquitecturas (y mucho más).
Ahora para el Flash Player debemos hacer algo ligeramente diferente, crear un archivo que contiene el parámetro para deshabilitar las actualizaciones y enviarlo a los equipos.
Afortunadamente esto es relativamente sencillo por medio también de GPPs, el único punto con que debemos ser cuidadosos en con la codificación del archivo pues debe ser UTF-8 y llamarse mms.cfg.
El contenido de este es una simple línea “AutoUpdateDisable=1”.


Como podemos ver lo he salvado en el SYSVOL para que así todas las maquinas del dominio tengan acceso a este.

Navegue en el editor de políticas a “Computer Configuration \ Preferences \ Windows Settings \ Files” y agregue los parámetros necesarios indicando la ruta fuente del archivo y la ruta destino que debe ser “C:\Windows\System32\Macromed\Flash\mms.cfg



Despliegue la política y listo.
Que tengan un excelente fin de semana!
~daemonR00t

June 18, 2015

Migrando DHCPs

Por algunas razón en el cosmos últimamente he tenido que migrar unos cuantos DHCPs hacia Windows 2012 R2… quizás por el final de soporte de Windows Server 2003 en menos de un mes?! Créanme… eso nos tiene corriendo a muchos.
Desde 2003 hacia 2012 este proceso se debe de hacer con el viejo y fiel netsh… oh sí! Aunque en 2012 te dice que ya va de salidita aún tiene su utilidad.
netsh
dhcp server \\tuServidor2003
export C:\exports\miDhcpDb all
Como imaginaran con algo muy similar se hace el importado en el servidor 2012 donde previamente instalamos la función de DHCP.
netsh
dhcp server \\tuServidor2012
import C:\exports\miDhcpDb all

En el caso de Windows Server 2008 en adelante este proceso se pude hacer con Powershell. Desde el mismo equipo 2012 simplemente ejecuta los cmdlets para exportar e importar el DHCP.
Export-DhcpServer https://technet.microsoft.com/en-us/library/jj590659(v=wps.630).aspx
Import-DhcpServer https://technet.microsoft.com/en-us/library/jj553823.aspx

Otra de las cosas que se encuentra uno mucho en la calle es el DHCP junto con tu DC, lo cual sabemos no es lo mejor pero sucede y muy a menudo. Si lo vas a hacer protégete asignando una cuenta de servicio al DHCP. Este articulo https://support.microsoft.com/en-us/kb/255134 aunque un poco viejito aun aplica.

Otro punto interesante es el balance de carga, pues desde luego tienes mínimo dos controladores y por ende dos DHCPs en tu ambiente, ¿verdad???
Acá tenemos dos equipos SERVER A y SERVER B.
Ambos tienen el mismo ámbito configurado (176.22.0.0/24) solo que en uno de ellos el rango de IPs disponibles es mucho mayor que en el otro, buscando así cierto nivel de tolerancia y balanceo y a su vez designando un equipo como primario para un rango específico. Inclusive se podrían alternar y que un servidor sea primario para algunos rangos y secundario para otros, o bien segregar los rangos de forma equitativa entre ellos.




En este ejemplo se observa lo siguiente:
Mismo rango de reservas en ambos equipos, misma puerta de enlace y otro parámetros que no varían pues es un mismo rango.
SERVER A = asignación de IPs entre la 176.22.0.21 y la 176.22.0.165
SERVER A = DNS primario SERVER A, DNS secundario SERVER B
SERVER B = asignación de IPs entre la 176.22.0.166 y la 176.22.0.253
SERVER B = DNS primario SERVER B, DNS secundario SERVER A

Bueno, espero este les ayude un poco en sus tareas de migración y también a tener un servicio de DHCP más saludable.
¡Hasta pronto!

~daemonR00t

September 19, 2014

Lync Server, arreglando el MS14-055

Bueno pues lamentablemente el las cosas salieron mal con el MS14-055 (https://support.microsoft.com/kb/2990928) y algunos servidores por ahí no pueden arrancar servicios como Lync Server Audio/Video Authentication y el Lync Server Audio/Video Edge.

Esto sucede en Windows Server 2008R2 con Lync Server 2010. Por ahí se muestran EventIDs 7024, 50007 y/o 12331.

Ahora para solucionarlo basta reinstalar las actualizaciones, esto con la versión del Abril pues la de Setiembre dado los inconvenientes ha sido temporalmente retirada.

lync04

El punto es que al ejecutar el LyncServerupdateInstaller este mostrara que no ningún componente requiere actualización, tampoco existe la opción de reinstalarlos. Lo que debemos hacer es descomprimir los instaladores que este contiene y así proceder con la reinstalación de forma individual.

Simplemente invoque el instalador desde la consola de comando con el parámetro /ExtractAll

lync00

Esto creara una carpeta llamada Extracted en la ruta actual, su contenido es los diferentes instaladores que necesitamos.

lync01a

Proceda y ejecute los archivos OcsCore.msp y Server.msp.

lync02

A continuación reinicie los servicios de Lync Server.

lync03

Luego relájese y cómase un sabroso postre lleno de azúcar para alegrar su día :P

Saludos mi gente!

chilenaMod

1 GPO + muchos gpLink

Sabemos que las mejores prácticas y sugerencias del fabricante no siempre son acatadas, hoy por ejemplo miraba un ambiente donde hay N bloqueos de herencias de políticas en una estructura ligeramente compleja de OUs.

Surgió la necesidad de aplicar un GPO nuevo, el cual debía ubicarse justamente en los mismos lugares que otro ya existente.

Pensando que (en forma simplificada) los GPOs en AD simplemente tienen punteros que utilizan el atributo GPLink (http://msdn.microsoft.com/en-us/library/cc219956.aspx) pensé esto sería sencillo, hacer un barrido de los objetos que contuviesen los valores adecuados en dicho atributo y utilizarlo como insumo para el siguiente comando que agregaría el nuevo GPO al atributo, más por la naturaleza del atributo no me fue tan fácil.

gpo00

Luego de varios intentos tuve que recurrir a PowerShell, lo cual no es mi fuerte pero si el de unos amigos :) En fin, la siguiente orden busca los OUs donde el GPO1 está aplicado y ese insumo lo utiliza para ligar el GPO2.

(Get-ADObject -LDAPFilter “(gplink=*{GPO1 | Select-Object Name -ExpandProperty DistinguishedName) | ForEach-Object {New-GPLink -GUID GPO2 -Target $_}

Explicado es algo como, busque el objeto de AD, donde el GPLink contiene GPO1 | almacene su distinguishedName | ahora por cada uno de estos enlazo la nueva política.

(Get-ADObject -LDAPFilter “(gplink=*{6AC1786C-*)” | Select-Object Name -ExpandProperty DistinguishedName) | ForEach-Object {New-GPLink -GUID AE154AC3-B643-4E10-950E-26404961A2A5 -Target $_}

Nótese que acá estoy identificando los objetos por el GUID. Este lo obtiene fácilmente desde el GPMC en la etiqueta Details de cada GPO involucrada tal como muestra la siguiente imagen.

gpo01

Hasta pronto!

Problemas con el Visor de Sucesos.

Normalmente el Visor de Sucesos (Event Viewer) es un componente muy noble que no nos causa problemas, curiosamente hace unos días encontré ciertos casos donde este presentaba inconvenientes a nivel funcional y/u operativo.

evetView00

Algunas de las bitácoras no estaban disponibles, en otros casos el servicio (EventLog) no se podía manipular o bien ni tan siquiera iniciaba.
Luego de filosofar un poco me percate que faltaba una entrada en la lista de control de accesos de la carpeta C:\Windows\System32\WinEvt.

evetView01

Al agregar dicha entrada y reiniciar el equipo todo volverá a su normalidad. Ese ACE se puede agregar por medio de la interfaz gráfica, únicamente asegúrese de seleccionar el equipo en la opción “Locations” y escriba el nombre de la entidad “NT Service\EventLog” brindándole permisos FULL.

evetView02

Otra forma de hacerlo es mediante la consola de comandos [icacls C:\Windows\System32\winevt /grant “NT Service\EventLog”:(F)]

evetView03

Saludos!

March 19, 2014

Analizador de Internet Headers

Mediante los internet headers de un correo se logra obtener información sobre la ruta que siguió este así como el tiempo que le tomo dar el paso de un servidor u organización a otra.
Estos se pueden mirar fácilmente desde OWA, Outlook más en algunas ocasiones la poca familiaridad con las cabeceras hace que los administradores no las utilicen apropiadamente.
Para solventar esto los amigos de MXToolBox an creado un formidable analizador web gratuito le cual puedes encontrar acá http://mxtoolbox.com/EmailHeaders.aspx
El resultado se obtiene en segundos y de una forma muy detallada.

mailHeaderA

421 Transmission channel timeout.
Connection to host lost ;-)

Owa para iPhone

Estaba yo jugando con el flamante Exchange 2013 SP1 lo cual me llevo a descubrir Owa para iPhone (si, las manzanitas también derecho de disfrutar de una plataforma de correo corporativo robusta).
Realmente me pareció algo excelente, la experiencia es nítida y totalmente funcional. No tengan temor, pues aunque la página de descarga habla de que este app es para aquellos que tienen su cuenta en Office365 usted también puede disfrutarlo al tener su Exchange 2013 on-premises.
La configuración es algo sumamente sencillo, gracias a temas como al famoso AutoDiscover, no obstante encontré problemas con algunas cuentas, el app simplemente parpadeaba al inicio y no terminaba de cargar, o bien lo hacía por un instante y luego se reiniciaba. Desde luego acá el primer pensamiento es “algo en el dispositivo” pero no fue asi.
Mirando las bitácoras encontré esto:
EventID 1035
Description: Exchange ActiveSync doesn’t have sufficient permissions to create the “CN=Danny Castillo,CN=userAccounts,DC=daemonroot,DC=com” container under Active Directory user “Active Directory operation failed on cri-wdc-01.daemonroot.com. This error is not retriable. Additional information: Access is denied.
Active directory response: 00000005: SecErr: DSID-03152492, problem 4003 (INSUFF_ACCESS_RIGHTS)…
Recordemos que los dispositivos móviles que están ligados a tu buzón se representan por medio de un objeto tipo msExchActiveSyncDevice, el cual yace debajo de nuestra cuenta de usuario en un tipo de contenedor llamado msExchangeActiveSyncDevices. En este caso el usuario en cuestión tiene derechos elevados en el directorio, por lo cual el adminSDHolder le reguarda
Basta con hacer un reset al ACL del objeto usuario para que así Exchange pueda crear los objetos requeridos y listo!

easDevice

Para más información refiérase a esta antiguo post http://telnet25.blogspot.com/2009/12/el-mito-del-adminsdholder.html
Y si gusta comparar los diferentes dispositivos móviles y sus prestaciones refiérase a
http://en.wikipedia.org/wiki/Comparison_of_Exchange_ActiveSync_clients
Hasta pronto!

March 12, 2014

Convertir grupos universales a mail enabled.

Si usted, al igual que este servidor ha pasado parte de su valioso tiempo buscando como habilitar un grupo universal existente para que este reciba correo pues le comparto la simple solución.
Gracias al orden que mantenemos en nuestro AD todos los objetos tipo group se encuentran en un mismo OU, lo cual facilita mucho el trabajo, entonces lo que haremos es efectuar una búsqueda en dicho contenedor y habilitar los grupos mediante el cmdlet apropiado.

tlcGroups

Get-Group -OrganizationalUnit nombreOU | Enable-DistributionGroup
Listo, así de fácil y rápido es el Power del Shell ;-)

January 17, 2014

Cacería de brujas… problemas de rendimiento.

Es relativamente regular que afrontamos temas de “el sistema esta lento” y pues debemos dedicarnos a la cacería de brujas para determinar porque ese componente de nuestro ambiente no da un rendimiento óptimo.

Sinceramente esto no es tan simple pues la mezcla de componentes agrega complejidad a nuestra ecuación, además existen tareas previas a la implementación de un servicio que muchas veces no son ejecutadas.

Veamos algunos puntos que considero le pueden ayudar:

Análisis de capacidad.

Previo a cualquier implementación o cambio es altamente sugerido evaluar la capacidad actual de los sistemas y su rendimiento, tanto en la actualidad como en la proyección estimada.

Además se deben contemplar temas como proyectos (tanto actuales como futuros), así como crecimiento promedio de la institución y otros. Esto debe cotejarse con planes similares de otras áreas para que dicho estudio sea más asertivo.

Así con estos datos se podrá pronosticar de una mejor manera las necesidades de los sistemas para poder satisfacer a los clientes.

Desde luego junto a esto se debe desarrollar la documentación apropiada de los cambios, evaluación de riesgo, procesos de reversión, criterios de satisfacción y demás.

Configuración para un rendimiento óptimo.

Según la función que vaya a ejecutar el equipo es altamente sugerido realizar ciertos ajustes explícitos para así obtener el máximo rendimiento, Microsoft ha publicado una serie de artículos para este fin, los cuales contemplan diferentes escenarios o funciones según la versión de sistema operativo que se esté utilizando.

· Performance Tuning Guidelines for Windows Server 2012R2

· Performance Tuning Guidelines for Windows Server 2012

· Performance Tuning Guidelines for Windows Server 2008R2

· Performance Tuning Guidelines for Windows Server 2003

Adicionalmente se sugiere consultar la documentación del producto así como aquella del vendedor del hardware.

Puntos como por ejemplo deshabilitar RSS y TCP Chimney pueden tener un gran impacto en el rendimiento general.

Virtualización?

Wow esto a veces se presenta como la cura de todos los males, pero estamos conscientes de las recomendaciones y limitaciones de la virtualización?

Algo así de simple como que usted deberá asignar entre un 110% y 125% de los recursos que antes tenía a un equipo virtual para obtener un rendimiento similar al que obtenía cuando era basado en metal.

A continuación tres artículos que le aseguro serán muy útiles.

6 Best Practices for Physical Servers Hosting Hyper-V Roles

http://technet.microsoft.com/en-us/magazine/dd744830.aspx

Hyper-V: Deployment Best Practices

http://social.technet.microsoft.com/wiki/contents/articles/215.hyper-v-deployment-best-practices.aspx

Planning for Hyper-V

http://technet.microsoft.com/en-us/library/dd283088(v=WS.10).aspx

Mejoras al MaxConcurrentApi

Esto se refiera a un parámetro que aumenta la cantidad de hilos para autenticación que maneja el equipo, con lo cual se mejora la experiencia de usuario final. No es algo estrictamente relacionado a rendimiento pero si a cómo se maneja el proceso de autenticación, sin el cual no tenemos acceso a nuestros preciados datos.

http://blogs.technet.com/b/ad/archive/2008/09/23/ntlm-and-maxconcurrentapi-concerns.aspx

http://support.microsoft.com/kb/326040

Optimización de los perfiles de poder

Como parte de las iniciativas de “Green IT” y otras similares que buscan ahorrar en temas de consumo energético, el perfil de poder por defecto es el “Balanceado”.

Dicho conjunto de parámetros busca un consumo responsable de energía pero limita por ejemplo la utilización del procesador (down clocking), lo cual no permite obtener el rendimiento máximo de este.

Es por esto que se sugiere utilizar el perfil de poder de “Alto Rendimiento”.

Para asegurar una configuración homogénea es sugerido aplicar estos parámetros por medio de una política grupal o GPO.

clip_image002

Más información sobre este tema puede encontrarse en el siguiente enlace http://support.microsoft.com/kb/2207548

Configuración SMB v2.0

Server Message Block (SMB) es el protocolo por defecto para compartir archivos en equipos Windows. Su última versión la 2.0 fue dimensionada para satisfacer las necesidades de los archivos de servidores actuales y futuros, esta versión permite enviar múltiples comandos en un mismo paquete (reduciendo así la cantidad de paquetes enviados entre cliente-servidor), tamaños de buffer mucho mayores, más conexiones concurrentes al igual que una cantidad mayor de recursos compartidos, soporte de Symbolic Links y Durable Handles entre otros.

Ahora bien existen casos donde por ejemplo la coexistencia de múltiples versiones de sistemas operativos, así como diferentes capacidades de tarjetas de red y otros que ameritan SMB v2.0 sea deshabilitado.

Esto se puede lograr con un rápido cambio en el Windows Registry, específicamente en la llave HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\SMB2

clip_image004

De hecho los mismos documentos de “Performance tuning” sugieren no habilitar otros servicios y/o prestaciones de SMB a menos que sean estrictamente necesarios/sugeridos tal como SMB signing, cache de lado de clientes, minifiltros, compresión NTFS, encriptado NTFS y otros.

Para mayor información refiérase a la sección “Tuning Parameters for SMB File Servers” de dicho documento.

Adicionalmente tareas de copiado de archivos pueden ser también optimizadas por ejemplo con los parámetros /Q y /K de xcopy, el primero ayuda a reducir la carga al procesador al reducir la información que se muestra en la consola y el segundo reduce el tráfico en la red.

http://technet.microsoft.com/en-us/library/bb491035.aspx

Otro ejemplo útil es la utilización del parámetro /MT en robocopy el cual mejora los tiempos de transferencia de archivos al utilizar múltiples threads.

http://technet.microsoft.com/en-us/library/cc733145(v=WS.10).aspx

Aplicación de actualizaciones.

Parte del procedimiento de mantenimiento de los equipos es la instalación de las actualizaciones en un tiempo apropiado.

Microsoft publica las actualizaciones el segundo Martes de cada mes, adicionalmente existen excepciones donde una actualización es publicada fuera de este periodo por su alta prioridad.

Deben también contemplarse las actualizaciones de productos de terceros así como del fabricante de hardware.

Este es un tema tabú, pero ya luego escribiré un poco sobre todo el largo proceso que Microsoft ejecuta previo a la publicación de las actualizaciones.

Recuerde también que la carencia de estas puede llevarle inclusive a un punto de no obtener soporte por parte del fabricante.

En el caso de máquinas virtuales también contemplarse las actualizaciones de las herramientas y controladores propios de estos llamados Integration Services.

En la siguiente imagen se muestra como obtener el número de versión del Integration Services de un equipo o bien visite el siguiente enlace para conocer otro método.

clip_image006

http://technet.microsoft.com/en-us/library/ee207413(v=WS.10).aspx

Otro recurso valioso es el sitio Microsoft Update Catalog donde usted puede obtener información de las actualizaciones y también descargarlas individualmente.

Configuración del antivirus.

No, instalar un antivirus y dar media vuelta no basta.

Dichos productos pueden tener un gran impacto en el rendimiento y operación de sus equipos, para más información visite:

http://support.microsoft.com/kb/822158

Veamos por ejemplo algunas de las recomendaciones para los equipos que ejecutan Hyper-V:

· Default virtual machine configuration directory (C:\ProgramData\Microsoft\Windows\Hyper-V)

· Custom virtual machine configuration directories

· Default virtual hard disk drive directory (C:\Users\Public\Documents\Hyper-V\Virtual Hard Disks)

· Custom virtual hard disk drive directories

· Custom replication data directories, if you are using Hyper-V Replica

· Snapshot directories

· Vmms.exe (Note: This file may have to be configured as a process exclusion within the antivirus software.)

· Vmwp.exe (Note: This file may have to be configured as a process exclusion within the antivirus software.)

Almacenaje

Esto del almacenaje corporativo no es lo mío, simplemente paso molestando a los señores que lo administran solicitando más espacio (lo cual creo todos hacemos) pero veamos un par de cosas...

Según las mejores prácticas es altamente recomendado implementar discos que funcionen a 10,000RPM para así obtener un alto rendimiento de estos.

También creo van a querer recordar que si hacen un análisis de rendimiento y este muestra un cuello de botella en las colas de disco, pero los tiempos de respuesta de escritura/lectura están bien es sugerido mirar a los HBAs o fabrics, si por el contrario no hay colas en los discos, pero los tiempos de lectura/escritura están por arriba de los 15 (preocupante) o 25 (muy preocupante) milisegundos entonces esto sugiera revisar el almacenamiento en sí.

Quizás su aplicativo/servidor necesita discos dedicados versus un volumen X, también hay casos donde un pass-thru disk puede ser la solución, esto cuando tenemos virtualización presente.

Como dije esto no es lo mío pero acá encontraran bastante información http://mcpmag.com/articles/2011/05/12/how-to-speak-san-ish.aspx

Y la red?

Ya sea físico o virtual, tener tarjetas de red dedicadas nos puede ayudar muchísimo por ejemplo escenarios donde necesitas replicar información, dedícale una tarjeta!

Y si hablamos de Hyper-V pues aún más, no creo que vayas a obtener un rendimiento óptimo si en una misma tarjeta de red están tu Exchange y ese aplicativo clave al que N usuarios de la compañía se conecta.

Ahora, que hay entre los servidores? E visto casos donde un equipo de ruteo no está configurado apropiadamente y este causa un cuello de botella. No les va a agradar, pero igual contacta a los compañeros de redes y verifica esto.

Modificar VMQ (Hyper-V)

Parte de las prestaciones del sistema operativo en conjunto con las tarjetas de red permiten la optimización del control del tráfico en estas, dicha prestación debe manipularse explícitamente en la o las tarjetas donde es requerido, esto es llamado Virtual Machine Queue.

http://technet.microsoft.com/en-us/library/gg162704(v=ws.10).aspx

https://social.technet.microsoft.com/wiki/contents/articles/13066.hyper-v-vmq-should-be-enabled-on-vmq-capable-physical-network-adapters-bound-to-an-external-virtual-switch.aspx

Bueno, ahora creo que la próxima vez que alguien le cuestione sobre el rendimiento de algún componente del ambiente usted se divertirá un buen rato mientras analiza los N ingredientes de esta dulce receta.

Hasta pronto!

~danny (aka daemonR00t)