„Der ausgewählte Anschluss kann nicht entfernt werden. Dieser Vorgang wird nicht unterstützt.“ beim löschen von WSD Ports

Wenn man versucht WSD-Ports unter Windows 10 (Server 2016/2019) zu löschen, erhält man die Fehlermeldung „Der ausgewählte Anschluss kann nicht entfernt werden. Dieser Vorgang wird nicht unterstützt.“

Solange en Drucker mit dem Port verbunden ist klappt da auch mit „normalen“ Ports nicht, aber WSD-Anschlüsse lassen sich auch ungenutzt nicht entfernen.

Lösung

Erstelle einen Temporären Drucker auf genau diesem Port (Treiber egal) und lösche dann den ganzen neuen TEMP-Drucker. Der WSD-Port wird damit zusammen fehlerfrei entfernt.

Windows Server 2008R2 Windows Update Fehler 0x80092004

Windows Server 2008 R2 ist zwar schon in die Jahre gekommen, läuft aber hier und da noch und soll auch Updates bekommen. Die aktuellen Updates (zum Beispiel „2020-01 Sicherheitsupdate für .NET Framework 3.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8 für Windows 7 und Server 2008 R2 für x64 (KB4534976)“ schlagen aber mit dem Fehler 0x80092004 fehl.

Grund ist die Signatur der aktuellen Patches. Der Fehlercode 0x80092004 steht für CRYPT_E_NOT_FOUND. Das Windows Update konnte einen kryptografischen Wert nicht verifizieren und lehnt das Update daher ab. Die besagten Pakete sind alle nur noch mit einem SHA2 Hash signiert – Windows 2008 R2 versteht aber kein SHA2.

Lösung

Manuell Installation des „Servicing stack update for Windows 7 SP1 and Windows Server 2008 R2 SP1: March 12, 2019“ (KB4490628) von:

http://www.catalog.update.microsoft.com/search.aspx?q=4490628

Sobald das Update SHA2ermöglichst, läuft die Installation der weiteren sofort fehlerfrei Updates durch.

Veeam Backup & Replication Console startet nicht (veeam.backup.shell.exe System.Xml.XmlException)

Problem

Die Veeam Backup & Replication Console startet „auf einmal“ nicht mehr. Gestern ging es noch, heute passiert (scheinbar) nichts mehr, es ist nicht einmal der Anmeldedialog zu sehen. Im Ereignisprotokoll sind nach jedem Versuch veeam.backup.shell.exe zu starten diese Fehler zu sehen:

  • Protokoll: Anwendung
  • Quelle: .NET Runtime
  • Ereignis-ID: 1026
Anwendung: veeam.backup.shell.exe
Frameworkversion: v4.0.30319
Beschreibung: Der Prozess wurde aufgrund einer unbehandelten Ausnahme beendet.
Ausnahmeinformationen: System.Xml.XmlException
bei System.Xml.XmlTextReaderImpl.Throw(System.Exception)
bei System.Xml.XmlTextReaderImpl.ParseText(Int32 ByRef, Int32 ByRef, Int32 ByRef)
bei System.Xml.XmlTextReaderImpl.ParseText()
bei System.Xml.XmlTextReaderImpl.ParseElementContent()

[...]

Lösung

Warscheinlich ist nur die Benutzerkonfiguration der Konsole kaputt. Das .NET Framework ist (ausnahmsweise) da mal nicht schuld.

Es hilft das Löschen der Datei:

%USERPROFILE%\AppData\Local\Veeam_Software_Group_GmbH\veeam.backup.shell.exe_Url_hu1utqnj52thvmhrg5kie2bl15o22i22\10.0.0.0\user.config

Danach startet die Konsole sofort wieder.

TEMP-Verzeichnisse aller Benutzer (und Windows) auf einmal aufräumen

Problem

Terminalserver, oder mit der modernen Bezeichnung „RemoteDesktop Sessionhosts“, neigen trotz aller Pflege dazu nach und nach „Voll zu müllen“.

Vor allem die verschiedenen TEMP-Verzeichnisse sammeln im Laufe der Zeit (meist) unnötige Daten an. Zu den „üblichen Verdächtigen“ wie %WINDIR%\Temp und %Windows%\Prefetch gesellen sich vor allem die Benutzer-Verzeichnisse Appdata\Local\Temp\.

Lösung

Mit der PowerShell kann dieses Problem in zwei Zeilen (und einem regelmäßigen Start mit enstsprechenden Rechten) gelöst werden:

$tempfolders = @("C:\Windows\Temp\*", "C:\Windows\Prefetch\*", "C:\Users\*\Appdata\Local\Temp\*" )

Remove-Item $tempfolders -force -recurse

Die erste Zeile enthält in einem Array die entsprehenden Ordner (PS versteht auch Platzhalter wie ‚*‘), die zweite Zeile den Befehl der dafür ausgeführt wird.

Privaten Schlüssel eines Zertifikat aus dem Windows Zertifikatsspeicher exportieren der als „nicht exportierbar“ markiert ist

Manchmal findet sich ein Zertifikat im Windows-Zertifikatsspeicher (Cryptostore), welches man einschliesslich des zugehörigen privaten Schlüssel benötigt.

Beispielsweise kommt das vor bei einer Migration (IIS, Webserver), einem VPN-Service (RRAS) oder Software, die selber eine Schlüsselprüfung durchführen möchte. Windows verbietet allerdings den Export direkt aus dem Cryptostore, unabhängig von den Berechtigungen auf dem Schlüssel.

Die zugehörige Option im Zertifikatsmanager-Assistenten ist daher auch ausgegraut:

Lösung

  1. Windows Defender ausschalten
  2. mimikatz herunterladen (https://github.com/gentilkiwi/mimikatz/releases), am besten den aktuellen trunk
  3. mimikatz „Als Administrator“ ausführen

In mimikatz Ausführen:

privilege::debug

crypto::cng

crypto::capi

crypto::certificates /systemstore:local_machine /store:my /export

Die Ausgabe sollte in etwa wie folgt aussehen:

mimikatz # privilege::debug
 Privilege '20' OK

mimikatz # crypto::cng
 ERROR kull_m_patch_genericProcessOrServiceFromBuild ; kull_m_patch (0x00000000)

mimikatz # crypto::capi
Local CryptoAPI RSA CSP patched
Local CryptoAPI DSS CSP patched

mimikatz # crypto::certificates /systemstore:local_machine /store:my /export
 * System Store  : 'local_machine' (0x00020000)
 * Store         : 'my'

 0. [IIS] <CERTNAME>
    Subject  : CN=<CERT-CN>
    Issuer   : C=<CERT-DATA>
    Serial   : <CERT-SERIAL>
    Algorithm: 1.2.840.113549.1.1.1 (RSA)
    Validity : <CERT-VALID>
    Hash SHA1: <CERT-HASH>
        Key Container  : {<CNG-ID>}
        Provider       : Microsoft RSA SChannel Cryptographic Provider
        Provider type  : RSA_SCHANNEL (12)
        Type           : AT_KEYEXCHANGE (0x00000001)
        |Provider name : Microsoft RSA SChannel Cryptographic Provider
        |Key Container : {<MACHINE CNG ID>}
        |Unique name   : <CERT-NAME>
        |Implementation: CRYPT_IMPL_SOFTWARE ;
        Algorithm      : CALG_RSA_KEYX
        Key size       : 3072 (0x00000c00)
        Key permissions: 0000003b ( CRYPT_ENCRYPT ; CRYPT_DECRYPT ; CRYPT_READ ; CRYPT_WRITE ; CRYPT_MAC ; )
        Exportable key : NO
        Public export  : OK - '<PATH TO DER>'
        Private export : OK - '<PATH TO PFX>'

Und schon findet man die (alle) Zertifikate aus dem lokalen Speicher im Ausführungsverzeichnis.

Einfaches WordPress Backup via Bash-Script

Bevor ich beim nächsten Fall schon wieder alles einzeln zusammensuche, hier eine kleine und schnelle Copypasta aus dem Admin-Alltag:

Sicherung einer WordPress-Instanz

Achtung: WordPress wird damit zwar vollständig eingepackt und die Datenbank gesichert, aber es gibt keine Fehlerbehandlung (Datei existiert bereits …) und auch keinen CSRF-Schutz. Die Kommandozeilen-Argumente werden un-escaped ausgeführt.

⚠ Das Backup landet automatisch in ~/priv wenn man den zweiten Parameter weglässt.

Syntax:

./wordpress-backup.sh /var/www/path-to-wordpress

Code:

#!/bin/bash
#
# SEHR einfaches WordPress-Backup

# Commandline-Argumente da?
if [ $# -eq 0 ]; then
    echo "SYNTAX: wordpress-backup.sh <path-to-WordPress> <path-to-BackupFolder> [dbonly]"
    exit 1
fi

wpdir=$1
bakdir=$2

# Backupverzeichnis angegeben?
if [ -z "$bakdir" ]; then
    bakdir="~/priv"
fi

# Verzeichnisse da?
if [ ! -d $wpdir ]; then
    echo "Directory $wpdir does not exist."
    exit 1
fi
if [ ! -d $bakdir ]; then
    echo "Directory $bakdir does not exist."
    exit 1
fi

# Sinnvolle Dateinamen zusammenbauen
db_backup_name="wp-db-backup-"`date "+%Y%m%d"`".sql.gz"
wpfiles_backup_name="wp-files-backup-"`date "+%Y%m%d"`

# Zugangsdaten aus der config suchen
db_name=`grep DB_NAME $wpdir/wp-config.php | cut -d \' -f 4`
db_username=`grep DB_USER $wpdir/wp-config.php | cut -d \' -f 4`
db_password=`grep DB_PASSWORD $wpdir/wp-config.php | cut -d \' -f 4`

# MySQLdump, gzip
mysqldump --opt -u$db_username -p$db_password $db_name | gzip > $bakdir/$db_backup_name

# Nur wenn der dbonly Parameter nicht gesetzt ist
if [ ! "$3" = "dbonly" ]; then
    # WordPress einpacken
    tar -czvf $bakdir/$wpfiles_backup_name.tar.gz $wpdir

    # Oder als zip:
    #zip -r $bakdir/$wpfiles_backup_name $wpdir
fi

„Der neue Edge“ Browser von Microsoft download

Microsoft hat den Download des neuen Edge Browsers … versteckt? Oder zumindest wirkungsvoll eingeschränkt. Man kann den Browser auf seiner eigenen Webseite nicht mehr wie gewohnt herunterladen sondern der Button will seinerseits nur noch Edge (?) öffnen (?!?).

Wir sind nicht sicher, ob diese Aktion der Verbreitung des neuen Browser wirklich zuträglich ist 🙄

Wie auch immer, mach ein Admin würde trotzdem gerne Edge auf Windows 10 oder Windows Server 2019 installieren und benötigt daher weiterhin den „MicrosoftEdgeSetup.exe“ Installer. Oder das Edge MSI zur Verteilung im Netzwerk.

Download Microsoft Edge (Setup/MSI)

MicrosoftEdgeSetup.exe (Windows 10/Server 2019) Download: https://go.microsoft.com/fwlink/?linkid=2069324&Channel=Stable&language=de

Microsoft Edge Offline-Installer X64.msi oder X86.msi