Categories

Import eines Server Zertifikates auf IIS

Ein Server SSL Zertifikat zu importieren ist keine komplizierte Aufgabe, aber was, wenn die Zertifikat Anforderung nicht auf dem Server wo das Zertifikat installiert werden soll, gemacht wurde? Hier ist eine Anleitung.

Continue reading Import eines Server Zertifikates auf IIS

Powershell – wie füge ich Rechner aus einer Liste einer AD Gruppe zu

Angenommen, haben wir eine Liste mit Rechnern die wie in eine AD Gruppe automatisch zufügen wollen.

pc1
pc2
pc3
pc4
...

Mit Powershell ist das ziemlich einfach

1
2
Get-Content "C:\file.txt" | ForEach-Object {Get-QADComputer $_ |`
 Add-QADGroupMember -Credential $usercredential -Identity "our_ad_group" }

Dieser Einzeiler braucht wohl keine Erklärung, vielleicht nur kurz zu -$usercredential Variable. In der sind die Anmeldedaten des Benutzers, der das Recht hat die Gruppen im AD zu verwalten. Gesetzt kann man die mit

1
$UserCredential = Get-Credential

Ich setzte die schon beim starten des Powershells in dem die Abfrage in Powershell Profil gespeichert ist.

BSOD Process1_initialization_failed Stop: 0x0000006B

Wieder mal ein Fall, bei dem ich mir selbst gratulieren kann, dass ich mich für eine Exchange 2010 Ausfallsicherheit dank DAG entschieden habe. Ich musste neulich ein paar Windows Updates (KB2494016, KB2520235, KB2521907) auf meinem Server installieren. Installation problemlos gelaufen, danach natürlich ein Neustart des Servers. Selbstverständlich alles fern gesteuert, schon war ich glücklich wieder eine Aufgabe hinter mich zu haben. Die Freude kam aber zu früh, Viertelstunde später Ping auf den Server ging immer noch nicht, so ein Mist. So, ich musste doch an die Konsole und da, siehe mal, ein Bluescreen.
PROCESS1_INITIALIZATION_FAILED
STOP: 0X0000006B
usw.

Nach einigen üblichen Versuchen das Problem zu lösen, wie Start mit F8 und „Last known Good Configuration“, „Safe Mode“, oder sogar mit der Deaktivierung von Treiber Signaturen, war der Fehler leider immer noch nicht behoben. Dann eine Idee aus dem Internet, die ich aber nicht 1 zu 1 umgesetzt habe, und voila es hat geklappt. So hier die Schritte:

  1. Nach dem Bluescreen soll der Server neugestartet werden, dann beim Starten kommt eine Option den Server in „Recovery Modus“ zu starten.
  2. Danach schnell zur gewünschten Sprachauswall, und wir können uns mit dem lokalen Administrator anmelden.
  3. In dem Fenster mit Optionen für Recovery starten wir nun Command Prompt.
  4. Dann schnell auf das Laufwerk wo Windows installiert ist (meistens C:) \windows\system32\codeintegrity und dort finden wir Datei bootcat.cache. Die sollte man löschen, ich habe die nur umbenannt (also eine weitere Erweiterung .old zugefügt) und das hat leider nicht funktioniert. Dann habe ich noch die Datei mit einer anderen aus dem zweiten DAG Member ausgetauscht – das hat erstaunlicherweise funktioniert.
  5. Nach dem Austausch wieder ein Neustart und siehe da, der System läuft. Exchange Ausfallsicherheit hergestellt und alle sind zufrieden.

Ob die Datei bootcat.cache bei der Installation von Microsoft Patches zerschossen wurde ist fraglich, zu den KBs habe ich keine ähnliche Fälle finden können. Der Server wurde schon seit längerer Zeit nicht neugestartet also kann das Problem schon länger vorhanden sein.

 

 

Nicht vorhandene Netzwerkkarten bereinigen

Manchmal beim Tausch von Netzwerkkarten in Systemen Windows kommt es zu Problemen, und die Informationen von der Karten, obwohl die physisch nicht mehr vorhanden sind, bleiben im Register. Solche Informationen verursachen verschiedene unerwartete Situationen, wo man die neue Netzwerkkarte nicht wie die alte konfigurieren kann, sei es Verbindung Namen Konflikt, IP Adresse Konflikt oder sogar, doppelte Standard Gateway, die in Wirklichkeit nicht existiert.

Die sogenannten Ghost Netzwerkkarten lassen sich über Geräte Manager nicht entfernen, das aus dem einfachen Grund, die sind dort nicht sichtbar, auch nicht wenn man das Anzeigen von versteckten Geräten einschaltet. Um das umzugehen braucht man ein anderes Tool, devcon.

Continue reading Nicht vorhandene Netzwerkkarten bereinigen

Exchange 2010 Services mit Wildcard Zertifikaten

Viele Exchange 2010 Administratoren haben Probleme mit der Konfiguration von Exchange und Wildcard Zertifikaten. Das Thema ist noch komplizierter, weil nicht alle Dienste werden gleich konfiguriert und man muss auch die Konfiguration in verschiedenen Stellen anpassen. In diesem kurzen Artikel versuche ich paar Tipps zu geben, wie so eine Wildcard Konfiguration aussehen könnte.

Wir fangen an mit SMTP und IIS. Um erst mal zu sehen was für Zertifikate auf dem Exchange Server installiert sind und welche von denen aktuell verwendet werden, führen wir das PS cmdlet get-exchangecertificate. Wichtig ist den Befehl auf dem Exchange selbst auszuführen und nicht über Remote Powershell von Management PC.

[PS] C:\Users\administrator.IN\Desktop>Get-ExchangeCertificate
 
Thumbprint                                Services   Subject
----------                                --------   -------
BC413FCE3830A0D4CDF793BDD4E9F5AC1348E93A  ......     CN=Ex2010.contoso.com
95C280E27ADF33C6A0D726C622DCDCCCA4A10272  ...WS.     CN=*.contoso.com, OU=Home, O=Home, L=MUC, S=BY, C=DE

Wie oben zu sehen,  auf dem Server sind 2 Zertifikate installiert, und eins ist für IIS (W) und für SMTP (S) aktiviert. Es ist auch ein Wildcard Zertifikat, das sehen wir durch * in dem Subject. Um das Zertifikat für diese Dienste zu aktivieren, habe ich den Befehl enable-exchangecertificate -services -thumbprint verwendet, wo Thumbprint von Get-ExchangeCertificate genommen werden kann.

Man würde auch für andere Dienste dieses Verfahren nutzen um die Zertifikate zu aktivieren, das würde auch bei normalen nicht-wildcard Zertifikaten gehen.Mit Wildcard Zertifikat, sollen wir für POP3 und IMAP4 andere cmdlets verwenden, nämlich set-imapsettings -X509CertificateName und set-popsettings -X509CertificateName

[PS] C:\Users\administrator.IN\Desktop>Get-PopSettings
 
UnencryptedOrTLSBindings  SSLBindings                       LoginType                         X509CertificateName
------------------------  -----------                       ---------                         -------------------
{:::110, 0.0.0.0:110}     {:::995, 0.0.0.0:995}             SecureLogin                       mail.contoso.com

Oben sieht man die Einstellungen für POP3. Mit set-popsettings Befehl sollte man nicht beispielsweise *.contoso.com als X509CertifcateName verwenden, sondern den richtigen Namen den wir auch von Clients nutzen wollen, in dem Fall mail.contoso.com. Exchange sucht sich selbständig das richtige Zertifikat, das mit dem Namen funktionieren wird.

Auch für federation Vertrauensstellungen sollte man nicht enable-exchangecertificate cmdlet nutzen, sondern new-federationtrust oder set-federationtrust cmdlets.

Nun, haben wir Exchange konfiguriert und wollen wir uns mit den Clients zum Postfach verbinden. Das erste zu beachten ist, dass das Zertifikat auf den Clients vertrauenswürdig ist. Mit einem 3rd-Party Zertifikat wird das wohl ein Fall werden, mit einem Zertifikat das beispielsweise von einem internen CA erstellt wurde, muss man eben dafür sorgen, dass die Clients das Zertifikat vom CA in Trusted Root Certification Authorities installiert bekommen.

Angenommen, das Zertifikat ist vertrauenswürdig, starten wir die Konfiguration für Outlook Anywhere. Erstens muss Outlook Anywhere auf dem Exchange aktiviert werden, zweitens müssen wir dem Exchange mitteilen das unser Wildcard Zertifikat für Outlook Anywhere verwendet werden soll. Dafür gibt es wieder ein PS Cmdlet

Set-OutlookProvider EXPR -CertPrincipalName msstd:*.contoso.com

Das ist aber noch nicht alles, wir müssen noch Outlook für diese Konfiguration auch anpassen. Outlook 2010 wird diese Anpassung automatisch dank Autodiscover vornehmen, ältere Outlook Versionen wie 2003 muss man manuell um konfigurieren.

Wichtig ist die Zeile „msstd:*.contoso.com.

Damit haben wir jetzt die Konfiguration auf dem Exchange angepasst, so dass unser Wildcard Zertifikat unterstützt wird.

Falscher HomeMTA Attribut, Event ID 2937

Nach einer Migration zu Exchange 2010 und einer Löschung den alten Servern Exchange 2003 oder Exchange 2010, kann es zu Warnungen im Event Log kommen, die von MSExchange ADAccess sind und das ID 2937 haben. Ähnlich wie unten kann man sehen, dass der Attribut HomeMTA bei manchen Objekten, meistens Usern falsche nicht mehr aktuelle Werte hat.

Process w3wp.exe () (PID=5884). Object [CN=User1,OU=!Users,DC=dc,DC=test,DC=com]. Property [HomeMTA]
is set to value [dc.test.com/Configuration/Deleted Objects/Microsoft MTA
DEL:e5d442f7-b37a-4b80-84e2-4212b78db7bf], it is pointing to the Deleted Objects container in Active Directory.
This property should be fixed as soon as possible.

Es betrifft Anwenter die natürlich aktiv Exchange nutzen und deren Accounts in der Active Directory vorhanden sind. Um das Problem zu lösen sollte man unter Exchange die Objekte aktualisieren und dadurch den Wert für HomeMTA entsprechend richtig setzen.

Get-Mailbox [user] | Update-Recipient

Bei mehreren Objekten könnte man die mit einem Einzeiler auch aktualisieren:

Get-QADUser -IncludeAllProperties | where {$_.homemta -match "del"} | Get-mailbox | Update-Recipient

 

Reset Abwesenheitsassitenten status für Postfächer

Manchmal ist es nicht ausreichend, dass die Abwesenheitantwort nur einmal an den Absender geschickt wird. Oft wird es gewünscht die Nachricht beispielweise jeden Tag zu verschicken. Damit das funktioniert, muss der Abwesenheitsassistent zurückgesetzt werden. Das können wir leicht mit einem Powershell Script erreichen.

foreach ($obj in (Get-Mailbox  | Get-MailboxAutoReplyConfiguration |`
where {($_.autoreplystate -eq "enabled")`
-or ($_.autoreplystate -eq "scheduled" -and $_.starttime -le ([DateTime]::Now) -and $_.endtime -ge ([DateTime]::Now))}))
{      if ($obj.autoreplystate -match "Enabled")`
           {Set-MailboxAutoReplyConfiguration $obj.identity -AutoReplyState "disabled"
           ;Set-MailboxAutoReplyConfiguration $obj.identity -AutoReplyState "enabled"}
       elseif ($obj.autoreplystate -match "Scheduled")`
           {Set-MailboxAutoReplyConfiguration $obj.identity -AutoReplyState "disabled";
           Set-MailboxAutoReplyConfiguration $obj.identity -AutoReplyState "scheduled";}
}

Das Script in Task Scheduler einstellen und jede Nacht laufen lassen, voilà.

Cisco CLI Role basierte Administration + Radius (Teil I)

Hallo, diesmal versuche ich euch zu zeigen wie man eine Radius Authentifizierung auf Cisco Geräten konfigurieren kann. Als Radius Server habe ich Windows 2008 NPS gewählt. In dem Teil werde ich erst mal nur reine Radius Authentifizierung konfigurieren, in Teil II zeige ich wie man den Zugriff auf Cisco Gerät beschränkt und wie verschiedene Administratoren Gruppen Zugriff zu unterschiedlichen Befehlen haben.

Continue reading Cisco CLI Role basierte Administration + Radius (Teil I)

Sending als Verteiler Liste

Es ist nicht schwierig die Berechtigungen anzupassen, um einem Anwender die Möglichkeit zu geben, als anderer User die E-Mails zu verschicken. Das kann man sogar über Exchange Management Console konfigurieren. Die einfache Aufgabe wird aber komplizierter wenn der Anwender E-Mails als eine Verteiler Liste verschicken will. Da reichen die Exchange 2010 GUI tools nicht. Lösung natürlich im Powershell. Einfach folgendes CMD-let nutzen:

Set-DistributionGroup test_dg -GrantSendOnBehalfTo "new_user"

Und wenn du schon welche Anwender berechtigt hast, und weitere schnell dazu fügen willst, kannst du ähnlichen Script verwenden.

$dl = Get-DistributionGroup (Read-Host "DL Name")
$dl.grantsendonbehalfto += read-host "new email"
Set-DistributionGroup $dl -GrantSendOnBehalfTo $dl.grantsendonbehalfto

 

 

Suche nach Postfächer, die für längere Zeit nicht benutzt wurden

Wenn du nach Postfächer suchen musst, die für längere Zeit nicht benutzt wurden, unabhängig davon wer die genutzt hat, ob es der Eigentümer oder auch delegierte Person war, kannst du deine Aufgabe schnell mit einem einfachen Powershell Script erledigen.

get-mailbox -IgnoreDefaultScope | Get-MailboxStatistics |` 
where {$_.lastlogontime -le ((Get-Date).Adddays(-180))} |` 
ft displayname,lastlogontime,totalitemsize -AutoSize

Oben ein Beispiel wo das Script nach Postfächer sucht, die mindestens 180 Tage nicht benutzt wurden, also niemand sich an die angemeldet tat.