Letsencrypt Zertifikate in Exchange verwenden

Ich betreibe z.Z. eine Linux-Maschine als Reverse-Proxy. NGINX habe ich dabei als Applikation verwendet weil ich es in dieser Hinsicht einfacher zum konfigurieren empfinde.

Per CRON-Job wird zyklisch geprüft, ob das Zertifikat abgelaufen ist. letzencrypt-Zertifikate haben eine Gültigkeit von 90 Tagen. Somit ist Automatisierung hier Pflicht.

„Letsencrypt Zertifikate in Exchange verwenden“ weiterlesen

Update für Click-to-Run

Mit den Office 365 Deployment-Tool kann man zentralisiert Updates fürs Netz bereitstellen: Technet-Artikel 

Per Task-Scheduler lässt man dann folgendes Script laufen. Damit werden dann aktuelle Updates heruntergeladen und alte Updates gelöscht…

Vorher muss natürlich per XML-File das Tool korrekt konfiguriert werden. Im verlinkten Artikel sind alle Infos dafür zu finden.

„Update für Click-to-Run“ weiterlesen

Crypto härten unter Windows

Windows akzeptiert mehr Algorithmen als man eigentlich braucht. Unter anderem akzeptiert Windows auch solche, die inzwischen als unsicher gelten.

Getestet sind die folgenden Einträge für Windows Server 2012R2, Windows Server 2016 und Windows 10 (1607).
Vor dem ändern sollte man sich natürlich bewusst sein, dass durch das abschalten bestimmter Ciphers, Hashes usw. evtl. etwas nicht mehr funktioniert. Daher bitte das System vorher sichern und dann testen, testen, testen…

„Crypto härten unter Windows“ weiterlesen

WSUS mit PowerShell managen

Um besser zu steuern welche Updates auf einem WSUS-Server liegen bzw. wieder gelöscht werden sollen und dies natürlich in Abhängigkeit welche Updates von Clients benötigt werden, bietet sich PowerShell an. Auf der GUI lassen sich diese Einstellungen leider nicht sehr detailliert realisieren.

Folgendes Script übernimmt die Synchronisierung und das Approvment aller Patches eines WSUS-Servers. Da nur benötigte Patches heruntergeladen werden, ist dies unproblematisch.
Die WSUS-Datenbank wächst dadurch jedoch auf 7,5 GB
Je nach Patch-Status der Clients werden initial unter 10 GB geladen und man kann sich sicher sein, dass alle Patches die durch WSUS bereitgestellt werden, im Bedarfsfall auch ausgerollt werden! „WSUS mit PowerShell managen“ weiterlesen

PKI – Nützliche Befehle

Register:
Certutil -setreg CA\DSConfigDN „CN=Configuration,DC=Fabrikam,DC=com“
(aproved)

CRL:
Certutil -setreg CA\CRLPeriodUnits 1
Certutil -setreg CA\CRLPeriod Weeks
Certutil -setreg CA\CRLDeltaPeriodUnits 0
(aproved)

CRL Overlap:
Certutil -setreg CA\CRLOverlapPeriodUnits 48
Certutil -setreg CA\CRLOverlapPeriod Hours
(aproved)

Max Period:
Certutil -setreg CA\ValidityPeriodUnits 5
Certutil -setreg CA\ValidityPeriod Years
(aproved)

AIA:
certutil -setreg CA\CACertPublicationURLs „1:C:\Windows\system32\CertSrv\CertEnroll\%1_%3%4.crt\n2:ldap:///CN=%7,CN=AIA,CN=Public Key Services,CN=Services,%6%11\n2:http://pki.fabrikam.com/CertEnroll/%1_%3%4.crt“
(not aproved)

PowerShell Basic Funktionen

Anbei ein paar nützliche Code-Snipsel:

Ein Snipsel zum Händeln von Log-File

  • Automatisches Logrotate
  • Größenbegrenzung

 

Ein Snipsel zum befüllen der Logs:

  • Funktion zur Ermittlung der Aktuellen Script-Zeilennummer
  • Funktion write-log zum schreiben ins Log-File mit Zeitstempel
  • Ausgabe auf den Bildschirm wenn „$debug“ gesetzt ist.

„PowerShell Basic Funktionen“ weiterlesen

Falsche Servereinträge im Outlook-Profil

Manchmal kommt es vor, dass durch vorkonfigurierte Office-Installationen ein falscher Exchange-Server im Outlook-Profil steht.
Denn wird bei der Installation von Office das Profil mitgeliefert (Admin-Switch) wird beim Start von Outlook kein Autodiscover durchgeführt.

Folgendes Script könnte diese Problem beheben:

$Path = "Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles"
$Search = "oldserver.powershell.pub"

If ( -not ( Test-Path -Path $Path ) )
	{ exit }

$PROs = Get-ChildItem -Path $Path | select Name -expand name

foreach ( $PRO in $PROs )            #Profile
	{
	$Found = $False
	$Keys = Get-ChildItem -Path $( "Registry::" + $PRO )
	
	foreach ( $Key in $Keys )              # Hexadezimale Schlüssel
	   {
	   $VALS = $Key.GetValueNames()
	   foreach ( $VAL in $VALS )             # Namen der Werte
		   {
		   if ( $Key.GetValue( $VAL ) -contains $Search ) # Vergleich der Werte mit Suchstring
			   {
			   $Found = $True
			   break
			   }
		   }
	   if ( $Found )
		   {
		   break
		   }
	   }
	if ( $Found )
	   {
	   Remove-Item -path $( "Registry::" + $PRO ) -Recurse -Force -Confirm:$false -whatif
	   }
	}

In Zeile 32 wird das fehlerhafte Profil rekursiv gelöscht. Aktuell ist hier noch ein „-whatif“ damit man erst mal testen kann, was gelöscht werden würde 😉