Ad Widget

Collapse

Como puedo poner una alerta de actualizaciones de windows criticas de mis servidores?

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • jdiaz
    Junior Member
    • Nov 2022
    • 4

    #1

    Como puedo poner una alerta de actualizaciones de windows criticas de mis servidores?

    Como puedo poner una alerta de actualizaciones de windows criticas de mis servidores monitorizados?
    Algún script? como podría ejecutarlo?

    Gracias a todos de antemano.
  • guille.rodriguez
    Senior Member
    • Jun 2022
    • 114

    #2
    Yo tengo un script que te saca la info en JSON, luego simplemente es añadirlo a Zabbix y levantar una alerta.

    Aqui te dan el script en powershell

    PowerShell script to list the pending/missing Windows updates. - pending-updates.ps1


    , luego simplemente es hacer campos tipo

    total de actualizaciones pendientes: 2
    tamaño de actualizacioens pendientes: 300mb

    convertir a json, subir a zabbix, extraer la info con el jsonpath y saltar alerta si hay actualizaciones mandatory

    Comment

    • jdiaz
      Junior Member
      • Nov 2022
      • 4

      #3
      Hola Guille! Muchas gracias por tu respuesta, probaremos a hacer lo que nos indicas.

      Gracias por tu aportación!

      Un saludo.

      Comment

      • guille.rodriguez
        Senior Member
        • Jun 2022
        • 114

        #4
        Yo uso este en concreto (de fabricación propia :P)


        Code:
        $updateObject = New-Object -ComObject Microsoft.Update.Session
        $updateObject.ClientApplicationID = "WinUpdateCheck"
        $updateSearcher = $updateObject.CreateUpdateSearcher()
        $searchResults = $updateSearcher.Search("IsHidden=0 and IsInstalled=0")
        $mandatoryUpdates = $searchResults.Updates | Where-Object IsMandatory -eq $true
        
        $updates = [System.Collections.ArrayList]::new()
        $totalsize = 0;
        foreach($update in $mandatoryUpdates) {
            $totalsize = $totalsize + $update.MaxDownloadSize;
            
            $newUpdate = New-Object -TypeName psobject    
            $newUpdate | Add-Member -NotePropertyName title -NotePropertyValue $update.Title
            $newUpdate | Add-Member -NotePropertyName size -NotePropertyValue $update.MaxDownloadSize
            
            [void]$updates.add($newUpdate);
        }
         
        $new_obj = New-Object -TypeName psobject
        $new_obj | Add-Member -NotePropertyName count -NotePropertyValue $mandatoryUpdates.Count
        $new_obj | Add-Member -NotePropertyName updates -NotePropertyValue $updates
        $new_obj | Add-Member -NotePropertyName totalsize -NotePropertyValue $totalsize
        
        Write-Host ($new_obj | ConvertTo-Json)​
        Generará un output tal que así (le he puesto false a mandatory xq ya tengo las updates criticas instaladas para que me saque el output)

        Code:
        {
            "count":  4,
            "updates":  [
                            {
                                "title":  "Actualización de inteligencia de seguridad para Microsoft Defender Antivirus - KB2267602 (Versión 1.381.2092.0)",
                                "size":  961488592
                            },
                            {
                                "title":  "Dell Inc. - Display - Dell E198WFP(Digital)",
                                "size":  22836
                            },
                            {
                                "title":  "Realtek - Net - 7/5/2017 12:00:00 AM - 10.19.705.2017",
                                "size":  167962
                            },
                            {
                                "title":  "Lenovo - System - 1.2.0.11",
                                "size":  14593210
                            }
                        ],
            "totalsize":  976272600
        }


        Este script lo guardas en la carpeta de Zabbix Agent (crea una carpeta llamadas scripts y metelo dentro), por ejemplo con nombre GetWindowsUpdatesForInstall.ps1 y en el fichero de configuración de Zabbix Agent metes esta linea

        Code:
        UserParameter=GetWindowsUpdatesForInstall,powershell.exe -NoProfile -ExecutionPolicy bypass -File "C:\Program Files\Zabbix Agent 2\scripts\GetWindowsUpdatesForInstall.ps1"
        Reinicia el Agente Zabbix y comprueba que enciende correctamente.

        En Zabbix creas el item que guardará dicho JSON, le puedes decir que no guarde el history, o si quieres que te lo guarde un par de horas, porque al final lo que te interesa lo harás en un dependent item

        Click image for larger version

Name:	Eugkj8G.png
Views:	416
Size:	47.2 KB
ID:	457498


        Creas el dependent Item que va a obtener el numero de actualizaciones pendientes (el campo count). Como Key, le das un nombre que te parezca correcto (basicamente te lo inventas y que no exista ya en tu zabbix), y lo configuras de la siguiente manera. El el tipo le dices que es dependent item y luego en masteritem seleccionas el que has creado antes (el que contiene todo el json)

        Click image for larger version

Name:	x5WbKgi.png
Views:	390
Size:	58.4 KB
ID:	457497

        En el Preprocessing le dices que capture el campo count.

        Click image for larger version

Name:	f21Gzt7.png
Views:	496
Size:	19.0 KB
ID:	457496

        Comprueba que recibes los datos, tanto del item que guarda el json (ponle que guarde el history un par de horas, luego ya lo quitaras si todo funciona) y comprueba que en el item del count sale el valor que toca. Si todo lo recupera como debe -> crea el trigger y a campeonar


        He aprovechado para poner todos los scripts que tengo para Windows en mi git, por si sirven https://github.com/guillerg86/zabbix/
        Last edited by guille.rodriguez; 13-01-2023, 11:06.

        Comment

        • guille.rodriguez
          Senior Member
          • Jun 2022
          • 114

          #5
          jdiaz te he añadido mas cositas al post, con esto ya lo tendrías. Espero que te funcione igual de bien que a mi

          Comment

          • jdiaz
            Junior Member
            • Nov 2022
            • 4

            #6
            Muchas gracias Guille, nos has ayudado un monton!! nos ha funcionado gracias por tu aporte!!! un Saludo!

            Comment

            Working...