Domando WSUS con Ansible y más


Bueno, ahora es el momento de hacer que Windows actualice amigos con el mundo de código abierto. En este artículo, diversificamos la vida integrando Ansible con todas las fuentes posibles de actualizaciones para máquinas Windows. Aunque las capacidades del sistema son mucho más amplias que la simple implementación de actualizaciones en servidores y estaciones de trabajo, debe comenzar en alguna parte.


Al mismo tiempo, eliminaremos los molestos inconvenientes de WSUS si prefiere la "vieja escuela".


¿Por qué no nos gusta WSUS?


No hablaré sobre la configuración de Windows Server Update Services, ya que es trivial. Centrarse en los contras.



La interfaz WSUS no ha cambiado mucho a lo largo de la historia.


Incapacidad para instalar bajo demanda . De hecho, WSUS funciona bien para el funcionamiento regular: las actualizaciones se configuran e instalan fácilmente en la red local cuando las computadoras están apagadas. Pero si necesita instalar urgentemente parches de seguridad, tendrá que salir con scripts y soluciones para ejecutar estos mismos scripts. Nuestro material " 1000 ++ forma de ejecutar comandos en una computadora remota " puede ayudar con esto.


La falta de una forma regular de instalar actualizaciones de software de terceros . Si hay un servidor de actualización, parece razonable usarlo no solo para actualizaciones de software de MS, sino también para otras soluciones. Por ejemplo, las vulnerabilidades no se descubren regularmente en el mencionado Adobe Flash Player a intervalos regulares, y también me gustaría deleitar a los usuarios con las nuevas funciones de FireFox. Para instalar actualizaciones a través de WSUS, debe utilizar soluciones de terceros como WSUS Package Publisher . Puede ver ejemplos de configuración en el artículo " Instalación de cualquier software utilizando WSUS - 2 ".


Usando la base de datos de Windows incorporada . En una instalación estándar, WSUS usa el WID - Base de datos interna de Windows. Esto es esencialmente un pequeño servidor SQL incorporado con una base de datos. En caso de mal funcionamiento o conflicto, por ejemplo, si tiene Remote Desktop Connection Broker y WSUS en el mismo servidor, debe reparar esta base de datos, configurar los derechos de acceso y divertirse en todos los sentidos. Sí, y el respaldo no dolería. Afortunadamente, WSUS también puede usar SQL clásico. Para migrar la base de datos WSUS, puede usar la instrucción Migrar la base de datos WSUS de WID a SQL de Microsoft.


La necesidad de servicio y la configuración no obvia de clientes fallidos. Como es el caso con los productos de Microsoft, tarde o temprano, WSUS comienza a disminuir: los clientes no pueden obtenerlo durante mucho tiempo y descargar actualizaciones. Se puede encontrar una colección de consejos y optimizaciones en el artículo " Acelerar WSUS " y en los comentarios al mismo.


Por supuesto, puede vivir con estas desventajas, pero también puede facilitarle la vida con otras herramientas, usándolas conjuntamente con WSUS y sin ellas.


Instalar actualizaciones usando Ansible


Casi cualquier sistema de gestión de configuración puede facilitar el trabajo con actualizaciones. Analicemos un ejemplo basado en Ansible para instalar actualizaciones a pedido.


Organizar un holivar, que es mejor a partir de sistemas libres: Ansible, Chef, Puppet o incluso Salt, no existe el más mínimo deseo. Ansible fue elegido por la falta de necesidad de agentes y por la facilidad de configuración. Y, por supuesto, debido a Python: después de todo, este lenguaje es mucho más fácil de aprender para la automatización de principiantes, a diferencia de Ruby.

Vale la pena señalar que, además de resolver el problema, será de gran ayuda familiarizarse con los principios de funcionamiento de dichos sistemas. A menos, por supuesto, que todavía se haya divertido instalando Streisand , especialmente cuando algo en el proceso sale mal. Y si ya usa Ansible u otras soluciones de moda, puede instalar actualizaciones fácilmente. Recomiendo leer los conceptos básicos de Ansible en el artículo " Manual de Ansible ", y a continuación encontrará instrucciones paso a paso para trabajar con las actualizaciones.


Primero, prepare el servidor Ansible. Casi cualquier distribución GNU \ Linux funcionará, pero daré ejemplos de comandos para Ubuntu Server (como ha sido históricamente).


Primero, instale el administrador de paquetes para aplicaciones Python:


apt-get install python-pip pip install --upgrade pip pip install --upgrade virtualenv 

Luego, necesitamos instalar el paquete pywinrm para conectarnos a los sistemas Windows y al sistema Ansible directamente:


 sudo pip install pywinrm sudo pip install ansible 

Puede verificar la instalación utilizando el comando ansible --version .



Verificación de la instalación.


En lugar del paquete en la teoría pywinrm, puede usar cualquier otra herramienta para administrar Windows desde una máquina Linux. Algunos de ellos se analizan en el artículo " Polinización cruzada: gestión de Linux desde Windows y viceversa ".

Ahora necesita habilitar la conexión a Windows a través de WinRM. Para hacer esto, hay un script ConfigureRemotingForAnsible.ps1 listo para usar disponible en GitHub . Bueno, ya sabes cómo ejecutar scripts en máquinas remotas.


Puede verificar la conexión a Windows con el comando:


 ansible windows -m win_ping 


Verificación de conexión exitosa.


Ahora puedes comenzar a crear un libro de jugadas. El hecho de que los desarrolladores de Ansible ya hayan pensado en nosotros y hayan creado el módulo win_updates , solo para resolver tales problemas, nos facilitará la vida.


El Playbook es una "instrucción" que le dice al sistema de gestión de la configuración qué hacer. Paso a paso, por supuesto.

Cualquier libro de jugadas es un archivo yml y es un conjunto de directivas: cada módulo tiene el suyo. El módulo winupdate le permite usar las siguientes directivas (los valores predeterminados están en negrita):


TituloValorDescripción
nombres_categoríaSolicitud
Conectores
Actualizaciones críticas
Definición Actualizaciones
Kits de desarrollador
Paquetes de funciones
Orientación
Actualizaciones de seguridad
Servicepacks
Herramientas
UpdateRollups
Actualizaciones
Categoría de actualizaciones.
lista blancaActualizar número o plantilla de nombre.El número de actualizaciones instaladas directamente es KB01234 o el patrón de nombre de expresión regular de PowerShell.
lista negraActualizar número o plantilla de nombre.Directamente el número de actualizaciones que no es necesario instalar, como KB01234 o la plantilla de nombre en forma de una expresión regular de PowerShell.
reiniciarsi
no
¿Es necesario reiniciar después de la actualización?
reboot_timeoutsegundos, 1200¿Cuál es el momento de esperar el auto después de reiniciar?
estadoinstalado
buscado
Ya sea para instalar actualizaciones o simplemente buscar.
log_pathruta de archivoEl registro de instalación y la carpeta deben existir.

Por lo tanto, el siguiente libro de jugadas es adecuado para instalar ciertas actualizaciones:


 - name: Install specific updates based on the KBs for those updates win_updates: category_name: - SecurityUpdates whitelist: - KB4073819 - KB4074228 

Y si solo necesita calcular cuántas actualizaciones faltan, el libro de jugadas será así:


  – name: Check for missing updates win_updates: state=searched register: update_count 

Para instalar todas las actualizaciones disponibles, seguido de un reinicio, habrá un libro de jugadas similar:


 - name: Install all critical and security updates win_updates: category_names: - CriticalUpdates - SecurityUpdates - UpdateRollups state: installed register: update_result - name: reboot host if required win_reboot: when: update_result.reboot_required 

Permítame recordarle que necesita un archivo de inventario para trabajar con la lista de servidores. Por ejemplo, esto:


 [DCs] dc1.mydomain.local dc2.mydomain.local [AppServers] app1.mydomain.local app2.mydomain.local [DBServers] db1.mydomain.local db2.mydomain.local 

Y ahora, para instalar actualizaciones solo en controladores de dominio, puede usar el libro de jugadas:


 - hosts: DCs tasks: - name: Choose which Windows updates to install win_updates: category_names: - SecurityUpdates - CriticalUpdates - UpdateRollups 

El equipo que realizará todas estas operaciones será así:


 ansible-playbook -i inventory.yml -s windowsupdates.yml 

Un lector atento puede preguntar sobre la fuente de las actualizaciones descargadas. La fuente será la que esté configurada en la computadora: ya sea Windows Update en Internet o WSUS local. Incluso si sus manos no han alcanzado la configuración de WSUS, puede dar el comando para instalar las actualizaciones urgentes necesarias, especialmente si las partes de Lego ya se han derramado bajo sus pies.


Queda por añadir que no es necesario utilizar exactamente Ansible. Por ejemplo, para el sistema de administración de configuración de Chef, puede usar el Cookbook Wsus Client o el boxstarter más sofisticado . Existen módulos similares para Puppet. En general, casi cualquier sistema de gestión de configuración puede hacer algo similar, incluido MS SCCM.


Finalmente, daré algunas herramientas más que me interesan.


Otros sistemas y soluciones


WSUS fuera de línea . Un programa que le permite descargar las actualizaciones necesarias en un paquete, si es necesario, puede empaquetarse en ISO. También puede colocar el paquete en una carpeta de red e instalar actualizaciones con scripts, sin implementar WSUS completo.


Gestión de parches por Comodo. El sistema para instalar actualizaciones para Windows y otro software. A diferencia de otras soluciones, es gratis.



Interfaz Comodo Patch Management.


Opsi Un sistema gratuito e interesante que admite la instalación no solo de actualizaciones, sino también de sistemas operativos, junto con el inventario.


BatchPatch . El único sistema pagado en la lista. Le permite instalar software, actualizarlo, como Windows, y mucho más. Difiere en el diseño de la vieja escuela, así como en el costo, no para la cantidad de hosts alojados, sino para los usuarios del programa, es decir, los administradores. Quizás esta sea una de las pocas soluciones que se posicionan como un análogo de WSUS. El precio comienza en $ 400.



Interfaz BatchPatch.


En los comentarios, agregue sus herramientas favoritas para trabajar con actualizaciones y más.

Source: https://habr.com/ru/post/es414751/


All Articles