[GELÖST] Updatedefinition für die Paketfreigabe: Microsoft Defender Zero Touch

Fragen zu WAPT-Paketen / Anfragen und Hilfe bezüglich WAPT-Paketen.
Forumregeln
Community-Forumregeln
* Englischer Support auf www.reddit.com/r/wapt
* Französischer Community-Support ist in diesem Forum verfügbar.
* Bitte kennzeichnen Sie gelöste Themen mit [GELÖST].
* Bitte bearbeiten Sie keine Themen, die mit [GELÖST] markiert sind. Erstellen Sie stattdessen ein neues Thema und verweisen Sie auf das alte.
* Geben Sie die installierte WAPT-Version, die vollständige Versionsnummer und die Build-Nummer (2.2.1.11957 / 2.2.2.12337 / usw.) sowie die Enterprise-/Discovery-Edition an.
* Versionen 1.8.2 und älter werden nicht mehr unterstützt. Fragen zu Version 1.8.2 werden nur beantwortet, wenn sie sich auf ein Upgrade auf eine unterstützte Version (2.1, 2.2 usw.) beziehen.
* Geben Sie das Server-Betriebssystem (Linux/Windows) und die Version (Debian Buster/Bullseye – CentOS 7 – Windows Server 2012/2016/2019) an.
* Geben Sie gegebenenfalls das Betriebssystem des Administrations-/Paketerstellungsrechners und des Rechners mit dem problematischen Agenten an (Windows 7/10/11/Debian 11/etc.).
* Vermeiden Sie es, mehrere Fragen in einem Thema zu stellen, da diese sonst möglicherweise ignoriert werden. Falls mehrere Themen relevant sind, erstellen Sie bitte separate Themen, vorzugsweise nacheinander und nicht gleichzeitig (d. h. vermeiden Sie Spam im Forum).
* Fügen Sie Code-Snippets, Screenshots und andere Bilder direkt in Ihren Beitrag ein. Links zu Pastebin, Bitly und anderen Drittanbieterseiten werden systematisch entfernt.
* Wie in jedem Community-Forum erfolgt die Unterstützung freiwillig durch die Mitglieder. Für kommerziellen Support kontaktieren Sie bitte den Vertrieb von Tranquil IT unter +44 2 40 97 57 55.
Gesperrt
Olaplanche
Nachrichten: 178
Anmeldung: 26. Januar 2017 - 11:11 Uhr

30. Januar 2025 – 16:41 Uhr

Guten Morgen,

Im Wapt-Store existiert bereits ein Paket, das ich jedoch so modifiziert habe, dass das Update dank der Audit-Funktion vollautomatisch erfolgt (wodurch die Funktion `update_package` überflüssig wird). Ziel ist es, das Update so schnell wie möglich und ohne menschliches Eingreifen bereitzustellen.
Der Code ist wahrscheinlich unübersichtlich; ich manipulte zum ersten Mal Datum und Uhrzeit :Lol:

Voraussetzungen:

Jeder WAPT-Agent sucht in seinem WAPT-Repository nach der Binärdatei mpam-fe.exe, um eine Überlastung der Internetverbindung zu vermeiden.
Auf dem WAPT-Server müssen Sie daher beispielsweise die folgende Zeile in die Crontab-Datei einfügen:
00 20 * * * wget --user-agent="Mozilla" -O /var/www/waptwua/mpam-fe.exe 'https://go.microsoft.com/fwlink/?LinkID=121721&arch=x64'
Eine kurze Zusammenfassung dessen, was die Paketprüfung umfasst:

Es prüft, ob eine neue Version der Binärdatei verfügbar ist, indem es das Datum der im Repository verfügbaren Binärdatei mit dem Datum der in c:\windows\temp\mpam-fe.xe zwischengespeicherten Binärdatei vergleicht.
Falls die Binärdatei noch nicht unter "c:\windows\temp\mpam-fe.exe" existiert, wird das Datum gefälscht, um den Download zu erzwingen.
Wenn das Datum abweicht, lädt es die neue Binärdatei herunter und überprüft dann die Signatur der Binärdatei (sie muss von der 'Microsoft Corporation' stammen).
Dann installiert er die neue Binärdatei.

Jetzt muss nur noch die Prüfhäufigkeit konfiguriert werden ;)

setup.py:

Code: Alle auswählen

# -*- coding: utf-8 -*-
from setuphelpers import *
import requests
import os
from datetime import datetime, timedelta
import time
import waptlicences

r"""
Usable WAPT package functions: install(), uninstall(), session_setup(), audit(), update_package()

"""
# Declaring global variables - Warnings: 1) WAPT context is only available in package functions; 2) Global variables are not persistent between calls


def install():
    pass

def audit():
    # Declaring local variables
    osversion = get_os_version()
    repo_url = [r for r in WAPT.repositories if r.name == 'wapt'][0].repo_url
    repo_headers = WAPT.waptserver.head('waptwua/mpam-fe.exe')
    repo_last_modified = repo_headers.get('last-modified')
    repo_last_modified_pattern = "%a, %d %b %Y %H:%M:%S %Z"
    repo_last_modified_date = datetime.strptime(repo_last_modified, repo_last_modified_pattern)
    repo_last_modified_date_loc = repo_last_modified_date + timedelta(hours=1)
    if isfile(r'c:\windows\temp\mpam-fe.exe') :
        file_modTimesinceEpoc = os.path.getmtime(r'c:\windows\temp\mpam-fe.exe')
    else :
        # fake modification time if no bin
        file_modTimesinceEpoc =  int(float('1002387810.4883926'))
    file_modificationTime_str = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(file_modTimesinceEpoc))
    file_modificationTime_date = datetime.strptime(file_modificationTime_str, '%Y-%m-%d %H:%M:%S')

    # Downloading new bin
    if repo_last_modified_date_loc != file_modificationTime_date :
        with WAPT.waptserver.get_requests_session() as session:
            wget("%swua/mpam-fe.exe" % repo_url, r'c:\windows\temp\mpam-fe.exe', requests_session=session)

    # Check signature bin
    expected_issuer = 'Microsoft Corporation'
    sign_name = waptlicences.check_msi_signature(r'c:\windows\temp\mpam-fe.exe')[0]
    if sign_name != expected_issuer:
        error('Bad issuer %s != %s ' % (sign_name,expected_issuer))

    # Installing bin
    versionfile = get_file_properties(r'c:\windows\temp\mpam-fe.exe')['ProductVersion']

    if get_windows_defender_version() < versionfile:
        run(r'c:\windows\temp\mpam-fe.exe /s')
    if get_windows_defender_version() < versionfile:
        error('AntivirusSignatureVersion not in %s' % versionfile)
    print(r'OK: Definition Version is %s' % versionfile)
    return "OK"
                
def get_windows_defender_version():
    for i in get_antivirus_info():
        if not i["name"] == "Windows Defender":
            continue
        return Version(i['AntivirusSignatureVersion'])
    return Version('0')
Vielen Dank an Simon für seine Hilfe bei der Zusammenstellung dieses Pakets.
- Installierte WAPT-Version: 2.6.0.16795 Enterprise
- Server-Betriebssystem: Linux / Debian Bookworm
- Betriebssystem des Administrations-/Paketerstellungsrechners: Windows 10
Benutzeravatar
dcardon
WAPT-Experte
Nachrichten: 1955
Anmeldung: 18. Juni 2014 - 09:58 Uhr
Ort: Saint Sébastien sur Loire
Kontakt:

7. Februar 2025 - 12:28 Uhr

Hallo Olivier,

danke fürs Teilen :-) . Zur Information: Wir arbeiten aktuell an der Integration des SOAP-MS-WUSP-Kommunikationsprotokolls zwischen dem Windows Update-Agenten und einem WSUS-Server in den WAPT-Agenten und -Server. Microsoft hat eine Referenzimplementierung [1] in .NET bereitgestellt, die dieses Protokoll implementiert. Dabei wird die Aktualisierung der Windows Defender-Definitionen berücksichtigt. Es könnten also bald einige interessante neue Funktionen verfügbar sein. :-)

Ich markiere dieses Thema vorerst als „GELÖST“.

Viele Grüße,

Denis

[1] https://github.com/microsoft/update-server-server-sync/
Denis Cardon – Tranquil IT
Teilen Sie Ihre Erfahrungen auf WAPT! Senden Sie uns Ihre Blog- und Artikel-URLs im „Ihre Meinung des Forums, und wir werden sie auf der WAPT-
Gesperrt