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