WSUS 4 Performance optimieren durch Datenbank-Reindexierung, Löschen und manuelles bearbeiten

Der WSUS unter Windows Server 2012/2012R2 und 2016 zeigt ab und zu gewisse Performance-Schwächen. Das äußert sich beispielsweise in dem berüchtigten „Serverknoten zurücksetzen“ Fehler oder dem „Fehler bei der Verbindung zur WSUS-Datenbank“ Anzeige.

Lösung

Der WSUS-Server ist tatsächlich ein Performance-Fresser. die Update-Datenbank ist riesig. Nicht immer ist hier die WID (Windows-Interne Datenbank) die richtie Lösung. Wartungsscripts und Neuindexierungsjob gibt es hier leider nicht.

Tipp 1 – WSUS-Datenbank defragmentieren und neuindexieren

  1. WSUSDBMaintenance Scripts herunterladen (nicht auf die Version achten – läuft auch unter WSUS 4)
  2. Microsoft® Command Line Utilities 11 for SQL Server herunterladen und installieren (oder alternativ das SMSS verwenden)
  3. Die Scripts ausführen:
    sqlcmd -E -S np:\\.\pipe\MICROSOFT##WID\tsql\query -i WsusDBMaintenance.sql

Tipp 2 – Cleanup-Agent laufen lassen

Der WSUS „Assistent für die Serverbereinigung“ kann die Datenbank deutlich entschlacken (und für mehr Platz sorgen). Läuft der Assistent nicht durch, hilft oft dieser Artikel.

Tipp 3 – Mehr Leistung

Ein WSUS mit vier Kernen und 8Gb RAM kann etwa 5000 Clients gut und schnell bedienen. viele WSUS-Maschinen haben aber deutlich weniger Ressourcen; eine leichte Aufstockung kann hier wunder bewirken.

Tipp 4 – Abgelaufene oder ersetzte Updates löschen

Der Fehler in diesem Artikel kann auch die Ursache für Verbindungstimeouts des Konsolenclients sein.

Dieses SQL-Script löscht die Updates direkt in der Datenbank, ohne einen externen Binärassistenten. Alle diese Updates auf einmal, ohne manuelles suchen.

DECLARE @var1 INT 
DECLARE @msg nvarchar(100) 
CREATE TABLE #results (Col1 INT) INSERT INTO #results(Col1) 
EXEC spGetObsoleteUpdatesToCleanup 
DECLARE WC Cursor FOR SELECT Col1 FROM #results 
OPEN WC 
FETCH NEXT FROM WC INTO @var1 WHILE (@@FETCH_STATUS > -1) 
BEGIN SET @msg = 'Deleting ' + CONVERT(varchar(10), @var1) RAISERROR(@msg,0,1) WITH NOWAIT 
EXEC spDeleteUpdate @[email protected] 
FETCH NEXT FROM WC INTO @var1 
END 
CLOSE WC 
DEALLOCATE WC 
DROP TABLE #results

Tipp 5 – SQL-Server Timeout für di WID/SUSDB hochsetzen/abschalten

Die meisten Konsolenaktionen laufen fehlerfrei durch, wenn man das SQL-Timout für querys entweder sehr hoch ansetzt, oder gleich ganz abschaltet. Achtung: Wenn man das Timeout abschaltet, laufen auch „tote“ Anfragen durch, bis sie fertig sind. Default sind 600 Sekunden.

USE SUSDB;  
GO  
EXEC sp_configure 'remote query timeout', 0 ;  
GO  
RECONFIGURE ;  
GO

 

Windows Server 2012/2012R2 Windows Internal Database (WID) mit dem SQL Management Studio nutzen

Die Windows Internal Database (WID) ist ein ganz normaler SQL-Server (Express Edition), der sehr verschlossen konfiguriert ist. In der Regel benötigt man auch keinen direkten Zugriff darauf, außer es treten Fehler wie zum Beispiel der WSUS „Serverknoten zurücksetzen“ Effekt auf.

Es auch weiterhin möglich, sich mit dem SQL Management Studio (ab SMSS 2012 aufwärts) oder einer anderen SQL-Konsole der Wahl mit der WID-Instanz zu verbinden. Es gibt keinen TCP/IP listern mehr, daher man muß sich auf die entsprechende WID-Instanz mit dem passenden Memory-Pipe Verbindungsalias (Connection String) verbinden.

Die aktuellen Connectionstrings für WID

  • Windows Server 2008 und höher
    \\.\pipe\mssql$Microsoft##SSEE\sql\query
  • Windows Server 2012 und höher
    \\.\pipe\Microsoft##WID\tsql\query

„Microsoft SQL Fehler 18456“ beim herstellen der Verbindung

Das SQL Managemen Studio „Als Administrator“ ausführen, sonst gibt es keine Anmeldung.

Remote Desktop (RDP) in der Registry einschalten

Problem

Man muss dringend auf die RDP-Konsole eines Windows-Server (ab 2003) oder Windows-Clients (ab Windows XP) zugreifen. doch RDP ist in der Systemsteuerung abgeschaltet,

Lösung

Via Remote-Registry, Gruppenrichtlinie, Lokale richtlinie oder die Kommandozeile kann man den RDP-Zugang direkt einschalten:
HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server
Einen REG_DWORD Namens fDenyTSConnection erstellen und diesem den Wert 0 geben – oder auf 0 ändern, falls schon vorhanden.

Update

„Wie komme ich an die Remote-Registry eines Computers?“

  • Dienst „Remoteregistrierung“ auf dem Zielcomputer starten:
    sc \\foo-server start RemoteRegistry
  • Registry-Editor (regedit) öffnen
  • Datei > mit Netzwerkregistrierung verbinden > Computer auswählen > OK

Microsoft-Übersetzung des Tages

Eine Statusseite für Flyout angezeigt, mit dem Status Analyse wird ausgeführt, und die neue Position importieren.

Quelle: https://support.office.com/../Verwenden-des-Netzwerkuploads-zum-Importieren-von-PST-Dateien…

Wir wissen auch nicht um die Bedeutung. Im englischen Original gibt es diesen Abschnitt auch überhaupt nicht, daher ist das vermutlich nicht soooo wichtig …

DHCP(-Relay) vergibt keine IP an einige Clients

Problem:

Einige Clients (in unserem Fall ein WLAN-AccessPoint von Ubiquiti und ein D-Link Printserver) erhalten keine IP Adresse vom DHCP-Server (Windows Server 2012 R2) hinter einem DHCP-Relay-Agent (Windows Server 2008 R2)
Auf dem DHCP lässt sich kein Fehler finden (Eventlog, DHCP-Log, …)
Ein Paketsniffer (in diesem Fall Wireshark) zeigt jede menge „DHCP Discover“-Pakete, allerdings kein darauf folgendes Offer.

Nach Aktivierung des erweiterten loggings auf dem DHCP-Relay (teil von Routing und RAS) lässt sich im IPBOOTP.LOG (C:\Windows\tracing\IPBOOTP.LOG) folgendes finden:

dropping REQUEST with secs-since-boot 0 on interface XX (192.168.X.X)

Laut Technet sollte das auch im Eventlog auftauchen. (Tat es in unserem fall leider nicht.)

Lösung:

Nach erneuter Betrachtung der Discover-Pakete fällt auf: Der „Seconds elapsed“-Wert steht bei sämtlichen betroffenen Geräten auf 0 

Der DHCP-Relay-Agent verwirft in der Standardeinstellung sämtliche Pakete mit einem „secs-since-boot“-Wert unter 4 Sekunden. Damit auch die hier betroffenen Pakete weitergeleitet werden muss auf dem DHCP-Relay-Interface lediglich der „Neustart-Schwellenwert“ angepasst werden:

  1. Routing und RAS MMC öffnen
  2. IPv4 -> DHCP-Relay-Agent
  3. Eigenschaften der Schnittstelle
  4. „Neustart-Schwellenwert (Sekunden)“ auf 0 herabsetzen

Outlook 2013/2016 mit einer E-Mail crashen

Ein Kunde meldet sich:

Immer wenn ich diese E-Mail öffne, stürzt mein Computer ab.

Wir, als gestandene Admins, glauben natürlich erstmal nichts und schauen uns das an. Stellt sich raus: Der Kunde hat recht. Er hat eine Mail in seinem Posteingang, die seinen Outlook-Client immer crasht, wenn er die Mail anschaut. Wir leiten uns die Mail weiter (OWA ist nicht betroffen) und stellen fest: Outlook 2013 und 2016 lassen sich mit dieser Nachricht reproduzierbar und überall crashen. Unter jedem Windows. In der Voransicht (Standardmäßig eingeschaltet), beim anklicken, als MSG- oder EML-Datei, immer. Sehr schön!

Nach genauer Analyse stellt sich heraus: Es ist „nur“ der HTML-Word-Viewer. Dieser stolpert über eine einzige Zeile:

<style>table {mso-style-name:Standardowy; width:100%;}</style><br>

Wenn man also anderen Leuten das Outlook abschießen möchte verschickt einfach diese Zeile. Eine Beispiel-Crash-Mail.eml sieht zum Beispiel so aus:

From: Teleweed <[email protected]>
To: "Anonymous" <Anonymous>
Subject: This is an outlook crashing example
Date: Fri, 2 Jun 2017 2:22:22 -0200
Content-Type: text/html;

<style>table {mso-style-name:Standardowy; width:100%;}</style><br>

Leider konnten wir den Fehler nicht an Microsoft melden, weil das praktisch unmöglich ist. Weder ein MVP, unser PAM/PSX, die Social-Foren, noch das Feedback, noch die Security noch das Support-Team, noch der Partner-Support konnten oder wollten den Bug annehmen. Also liebe Welt: Happy shooting!

Vielleicht schickt ja mal jemand eine solche Mail an Rajesh Jha oder am besten gleich Satya Nadella 🙂

Update:

Mit dem Code lässt sich scheinbar auch Word an sich zum absturz bringen: Baut man folgendes in den Head eines html-Dokuments und versucht dann, selbiges mit Word zu öffnen kommt es ebenfalls zum Absturz.

<style>table {mso-style-name:Standardowy; width:100%;}</style>

Scheinbar ist das Ganze abhängig von der verwendeten Office-Sprache: Standardowy ist polnisch für „konventionell“. Ersetzt man es z.B. mit „Normale Tabelle“ (mit Anführungszeichen, wegen dem Leerzeichen) lässt es sich mit einem deutschen Word wieder Öffnen. Ein beliebige anderer String (z.B. auch „Table Normal“ aus einem englischsprachigen Word) verursacht den Absturz trotzdem.

Wichtig ist die Kombination aus „mso-style-name:<string>;“ und „width:<size>;“ -> Verwendet man z.B. „height“ gibt es keinen crash. Für <size> spielt es allerdings keine Rolle in welcher Einheit die Angabe erfolgt, Abstürzen tut Word auch mit z.B. 300px

Beispiele (proof of concept) gibt’s hier. („normale-tabelle_prozent.html“ sollte keinen Crash verursachen, der Rest allerdings schon.)

Danke @iSnackyCracky und @teleweed fürs finden und die langwierige Analyse.

Exchange 2016 OWA/ECP leere Seite nach Login

Problem:

Bei einer On-Premise Exchange Umgebung funktionieren „plötzlich“ Outlook und OWA nicht mehr. OWA und auch die ECP-Site zeigen noch den Login, danach bleibt die Seite allerdings leer.

Im System-Eventlog gibt es massenweise folgendes Event: (Source: HttpEvent; Event-ID: 15021)

Bei der Verwendung der SSL-Konfiguration für den Endpunkt 0.0.0.0:444 ist ein Fehler aufgetreten. Der Fehlerstatuscode ist in den zurückgegebenen Daten enthalten.

Lösung:

Ursache ist eine fehlende Zuordnung des SSL-Zertifikats für die Backend-Site im IIS.

Dort das SSL-Zertifikat wieder bei der korrekten Bindung auswählen, ggfs. den IIS neustarten und schon sollte der Zugriff wieder klappen:

  1. IIS Manager öffnen
  2. Sites -> Exchange Back End
  3. Im Aktionsbereich auf Bindungen
  4. Die https Bindung *:444 Bearbeiten
  5. das SSL-Zertifikat auswählen
  6. ggfs. iisreset

Trend Micro Worry-Free Business Security (WFBS) Dashboard Fehler 401/403 nach Windows-Update

Problem

Nach einem der letzten Windows-Updates und einem Serverneustart läuft das TrendMicro Dashboard vom IIS nicht mehr. Der Browser fragt ständig nach einem Benutzernamen und einem Passwort, oder zeigt sofort eine dieser Fehlermeldungen an:

  • 401.1 – Logon failed (Anmeldung fehlgeschlagen)
  • 401.3 – Unauthorized due to ACL on resource (Aufgrund von Berechtigungen …)
  • 403.1 – Execute access forbidden
  • 403.2 – Read access forbidden
  • 403.3 – Write access forbidden
  • 403.4 – Forbidden SSL required
  • 404.0 – Not Found
  • 404.1 – Web Site not accessible on the requested port
  • 404.2 – Lockdown policy prevents this request
  • 404.3 – MIME Map policy prevents this request

Lösung

Folgende Lösung hat sich bewährt, auch wenn sie etwas rigiros erscheint. Es gehen keine Einstellungen oder Daten verloren.

  1. Im IIS-Manager die Site „OfficeScan“ löschen. Ja, vollständig und restlos löschen.
  2. In einem Administrator-CMD Fenster in dieses Verzeichnis wechseln:
    %ProgramFiles(x86)%\Trend Micro\Security Server\PCCSRV
  3. Diese Befehle nacheinander ausführen:
    svrsvcsetup -install
    svrsvcsetup -setvirdir
    svrsvcsetup -setprivilege
    svrsvcsetup -enablessl

Schon fertig. Der svrsvcsetup-Manager erstellt das virtuelle Verzeichnis, Berechtigungen, Bindungen und so weiter wieder sauber neu.

Wenn man die Bindung der IIS-Site verändert hat(te), mit einem eigenen SSL-Zertifikat, anderem Port oder ähnliches, muss man diese Einstellung nun wiederholen. NUR die Bindungen verändern, mehr nicht – hier ist das Dashboard etwas empfindlich.