Windows
Managed Service Accounts (MSA) für Services unter Windows 2008 R2
0Unter Windows 2008 R2 gibt es sog. Managed Service Accounts. Diese Accounts sind für Dienste / Services gedacht. Vorteil dieser Accounts ist, das diese keine festen Passwörter mehr benötigen. Früher wurde für einen Service ein Account mit einem festen Passwort angelegt das nicht abläuft. Mit dieser neuen Funktion ist das nicht mehr notwendig da der Server selbständig in der Lage ein neues Passwort zu vergeben wenn es ausläuft.
Für die Erstellung von MSA´s benötigt man die PowerShell im Adminmodus.
Benötigt wird das Modul ActiveDirectory.
import-module activedirectory New-ADServiceAccount -name msa1 New-ADServiceAccount -name msa2 -AccountPassword (ConvertTo-SecureString -AsPlainText 1q2w3e4r%T -Force) Add-ADComputerServiceAccount -Identity romulus -ServiceAccount msa1 Add-ADComputerServiceAccount -Identity romulus -ServiceAccount msa2
New-ADServiceAccount legt einen neuen MSA an. Falls man für eine Dienstinstallation ein Passwort benötigt kann man mit dem Zusatz -AccountPasswort (siehe MSA2) ein Startpasswort definieren. Nach Ablauf der Passwortgültigtkeit wird dann ebenfalls ein neues gesetzt. Mit Add-ADComputerServiceAccount wird festgelegt für welche Maschine der Serviceaccount ist.
Auf der Maschine wo der ServiceAccount benötigt wird muss dieser noch Installiert werden.
Import-Module ActiveDirectory Install-ADServiceAccount -Identity msa1 Install-ADServiceAccount -Identity msa2
Mit dem Kommando Install-ADServiceAccount wird der Maschine der ServiceAccount bekannt gemacht. Ab diesen Moment weiß die Maschine das sie für diesen Account auch die Passwörter wechseln muss wenn es soweit ist.
Wie werden die MSA`s verwendet?
Zum Testen habe ich einfach schnell 2 Dienste über die Kommandozeile angelegt.
Wichtig sind die Leerzeichen nach dem Istgleich.
sc create Dienst1 type= own binpath= c:\dienst1.exe sc create Dienst2 type= own binpath= c:\dienst2.exe
Jetzt benötigen wir die services.msc Managementkonsole, dort tauchen jetzt auch unsere 2 neuen Dienste auf.
Einen der Testdienste mit Doppelklick öffnen und in den Reiter “Logon” gehen. Hier “This Account” auswählen und auf “Browse” gehen. In das Suchfeld msa1 oder msa2 eingeben und suchen. Das ganze mit OK bestätigen.
Der Account wird als msa1$ oder msa2$ angezeigt. Passwort kann man irgendwas eingeben, um das Passwort kümmert sich Windows selbst. Alles mit OK bestätigen.
Noch ein kleines “Nice to know”
Es gibt die Möglichkeit ACLs für Dienste selbst zu vergeben, d.H. nicht nur für Dienste die unter einem User laufen sondern auch für Dienste die im LOCAL SYSTEM laufen. Hier kann man den Diensten Rechte nehemen oder geben.
Als Location muss die Maschine selbst angegeben werden, in dem Fall “ROMULUS”. Im Suchfeld muss der entsprechende Dienst mit dem Prefix “nt service\” eingegeben werden, also “nt service\dienst1″. Ohne das Prefix findet Windows den Dienst nicht!
Auf einen Dienst können alle ACLs die auf einen User anwendbar sind ebenfalls angewendet werden.
Die PowerShell
0Dieser Artikel ist nur ein kleiner Überblick der mächtigen PowerShell. Die PowerShell wurde von Microsoft entwickelt um administrative Aufgaben effizienter erledigen zu können und um eine zentrale, einheitliche Schnittstelle zu bieten. Für viele neue Microsoft Produkte ist die PowerShell unabdingbar (z.B. Microsoft Exchange 2010).
Allgemeines
Die PowerShell besteht aus kleinen Einheiten die sich Cmdlets nennen. Die Kommandos sind alle nach dem Schema Verb-Substantiv aufgebaut, z.B. get-help. Groß-/Kleinschreibung spielt keine Rolle. Für bestimmte Kommandos und Cmdlets gibt es Aliase.
Wichtige Kommandos
| Kommando/Cmdlet | Beschreibung |
| get-help | Zeigt die Hilfe an |
| get-help <Kommando/Cmdlet> | Zeigt die Hilfe zu einem Kommando/Cmdlet an |
| get-variable | Zeigt alle gesetzten Variablen an |
| get-alias | Zeit alle gesetzten Aliase an |
| get-module -ListAvailable | Zeigt vorhandene Module an |
| import-module <modulname> | Importiert das Modul in die aktuelle Sitzung (z.B. import-module activedirectory) |
| get-command | Zeigt die verfügbaren Kommandos / Cmdlets an |
| sort-object | Sortieren einer Datenmenge |
| select-object | Einen bestimmten Bereich selektieren (z.B. select-object -First 3) |
| export-csv | Datenmenge in CSV exportieren |
| get-psdrive | Zeigt PowerShell Laufwerke an |
| invoke-command | Kommandos Remote auf anderen Server ausführen |
| enable-psremoting | Aktiviert Remote Power Shell |
| new-pssession | Baut eine Verbindung zu einem Remote Power Shell Server auf |
| enter-pssession | Geht in die Remote Verbindung rein |
| exit-pssession | Verlässt die Remote Session |
| get-credential | Frägt über einen Popup Anmeldeinformationen ab wenn man nicht die Sitzungsanmeldeinformationen verwenden will |
| get-aduser <username> | Frägt aus dem AD Informationen über einen User ab (Nur Verfügbar wenn das ActiveDirectory Modul geladen ist.) |
| get-adobject <filter> | Frägt ein Objekt aus dem AD ab (Nur Verfügbar wenn das ActiveDirectory Modul geladen ist.) |
| get-adcomputer <computer> | Frägt aus dem AD Computerinformationen ab (Nur Verfügbar wenn das ActiveDirectory Modul geladen ist.) |
| set-adaccountpassword | Setzt Passwort für einen User (Nur Verfügbar wenn das ActiveDirectory Modul geladen ist.) |
Vergleichs- und Verknüpfungsoperatoren
| Operator | Beschreibung |
| -eq | (equal) gleich |
| -ne | (not equal) nicht gleich |
| -gt | (greater than) größer als |
| -lt | (less than) kleiner als |
| -ge | (greater equal) größer gleich |
| -le | (less equal) kleiner gleich |
| -like | wie .z.B. “a*” |
| -notlike | nicht wie z.B. “a*” |
| -match | “^ABC” (Regex) |
| -AND | und |
| -OR | oder |
| -NOT | nicht |
Beispiel: get-service
get-service gibt den Status der Prozesse zurück.
Will man jetzt z.B. nur Dienste sehen die sich im Status “Running” befinden so kann man das Ergebnis an ein anderes Kommando pipen.
get-service | where-object {$_.status -eq "running"}
Das Resultat:
Alternativ für where-object gibt es einen Alias der “?” heißt. Also wäre auch folgender Befehl möglich:
get-service | ? {$_.status -eq "running"}
Das ganze lässt sich mit einem Verbindungsoperator noch erweitern:
get-service | ? {($_.name -like "A*") -AND ($_.status -like "run*")}
Als Resultat bekommen wir alle Prozesse die mit A…. beginnen und laufen.
Jetzt können wir uns noch alle Prozesse mit A ausgeben lassen und diese absteigend sortieren.
get-service | ? {$_.name -like "a*"} | sort-object displayname -Descending
Die Ausgabe können wir jetzt noch auf 3 Resultate beschränken:
get-service | ? {$_.name -like "a*"} | sort-object displayname -Descending | select-object -First 3
Das können wir jetzt noch in eine CSV Datei exportieren:
get-service | ? {$_.name -like "a*"} | sort-object displayname -Descending | select-object -First 3 | export-csv -path export.csv
Inhalt export.csv:
#TYPE System.ServiceProcess.ServiceController "Name","RequiredServices","CanPauseAndContinue","CanShutdown","CanStop","DisplayName","DependentServices","MachineName","ServiceName","ServicesDependedOn","ServiceHandle","Status","ServiceType","Site","Container" "AudioEndpointBuilder","System.ServiceProcess.ServiceController[]","False","False","True","Windows Audio Endpoint Builder","System.ServiceProcess.ServiceController[]",".","AudioEndpointBuilder","System.ServiceProcess.ServiceController[]","SafeServiceHandle","Running","Win32ShareProcess",, "AudioSrv","System.ServiceProcess.ServiceController[]","False","False","True","Windows Audio","System.ServiceProcess.ServiceController[]",".","AudioSrv","System.ServiceProcess.ServiceController[]","SafeServiceHandle","Running","Win32ShareProcess",, "AppMgmt","System.ServiceProcess.ServiceController[]","False","False","False","Application Management","System.ServiceProcess.ServiceController[]",".","AppMgmt","System.ServiceProcess.ServiceController[]","SafeServiceHandle","Stopped","Win32ShareProcess",,
PowerShell Drives
In der PowerShell kann man auf verschiedene Daten über das Filesystem zugreifen. Darunter sind unter anderem der Certificate Store und die Registry.
get-psdrive cd HKLM: cd .\SOFTWARE dir
Remote PowerShell
In der PowerShell ist es möglich einen RemoteAccess zu aktivieren. Einmal aktiviert bleibt er auch aktiviert, er lässt sich aber wieder abschalten. Der PowerShell Remote Service läuft auf 2 TCP Ports. TCP/5985 ohne SSL und TCP/5986 mit SSL.
Aktivieren der Remote Shell:

enable-psremoting
Die beide Abfragen mit “Y” bestätigen, eine automatische Firewallregel wird installiert.
Es gibt 2 Möglichkeiten mit der Remote PowerShell zu arbeiten.
1. Wir können ein Kommandosatz übermitteln und das Ergebnis verarbeiten
invoke-command -computername romulus.thoma.local -scriptblock {get-service}
2. Wir können uns eine vollständige Remote Shell öffnen
new-pssession -computername romulus
Nach dem Verbindungsaufbau muss man in die Session einsteigen
enter-pssession 1
Am Beginn der Zeile steht jetzt der Hostname der Remotemaschine. Um die Remotemaschine zu verlassen benötigt man folgendes Kommando:
exit-pssession
Die Sessions verschwinden nach 15 Minuten von alleine, wer nicht warten will kann mit
remove-pssession 1
die Session löschen.
Mit anderen Credentials Remote anmelden
Es gibt 2 verschiedene Möglichkeiten Credentials mitzugeben.
1. Im Script
Windows benötigt gehashte Passwörter für die Anmeldung.
$secpasswd = Convert-To-SecureString "1q2w3e4r%T" -AsPlainText -Force
$username="max"
$mycreds = new-object system.management.automation.pscredential ($username, $secpasswd)
invoke-command -credential $mycreds -computername romulus.thoma.local -scriptblock {get-service}
2. Per Popup
$mycreds = get-credential
invoke-command -credential $mycreds -computername romulus.thoma.local -scriptblock {get-service}
Windows 2008 R2 Server Active Directory Papierkorb aktivieren und verwenden
1In der aktuellen Windows 2008 R2 Server Version gibt es die Möglichkeit das gelöschte AD Objekte in einem Papierkorb aufbewahrt werden. Das gab es zwar schon früher, allerdings werden bei dem AD Papierkorb alle Werte erhalten incl. Passwort. Dies war bei der vorhergehenden Lösung nicht der Fall. Der AD Papierkorb setzt voraus das der Forrest Funcional Level “Windows 2008 R2″ ist. Ist die Domäne auf Windows 2003 aufgebaut und wurde zu 2008 R2 migriert werden die Objekte im Papierkorb für 60 Tage gespeichert. Ist die Domäne direkt mit Windows 2008 / 2008 R2 aufgebaut werden die Objekte für 180 Tage gespeichert. Der Wert lässt sich auch ändern.
Wichtig! Die AD Papierkorbfunktion gibt es nur unter Windows 2008 R2 Server.
Um den AD Papierkorb zu aktivieren muss auf dem Schema-Master in einer administrativen Power Shell folgender Befehl ausgeführt werden.
Wer ist der Schema-Master? Dies lässt sich mit netdom ermitteln:
C:\>netdom query fsmo
Falls keine Remote Powershell aktiviert ist muss man sich via RDP verbinden oder sich direkt an die Maschine begeben.
In der PowerShell muss das Modul ActiveDirectory nachgeladen werden. Der DN muss angepasst werden auf die entsprechende Domäne genauso wie das Target.
PS C:\>import-module activedirectory PS C:\>enable-adoptionalfeature -identity "cn=recycle bin feature,cn=optional features,cn=directory service,cn=windows nt,cn=services,cn=configuration,dc=thoma,dc=local" -scope forestorconfigurationset -target "thoma.local"
ACHTUNG! Das Feature lässt sich nicht mehr abschalten. Anschließend mit “Y” bestätigen.
Wie kann man den AD Papierkorb verwenden ?
Ich habe zum Test den User dummy1 gelöscht. Der User befindet sich jetzt in diesem Papierkorb.
Mit einer administrativen PowerShell können wir den User suchen.
PS C:\>import-module activedirectory
PS C:\>get-adobject -filter {name -like "*dummy1*"} -includedeletedobject
Will man diesen User jetzt wiederherstellen so muss man folgenden Befehl verwenden:
PS C:\>get-adobject -filter {name -like "*dummy1*"} -includedeletedobject | restore-adobject
Ruft man jetzt erneut den “get-adobject -filter {name -like “*dummy1*”} -includedeletedobject” Befehl auf sieht man das der User nichtmehr das Flag “Deleted” besitzt und wieder seinen orginalen DN hat.
Windows 2008 Active Directory Snapshot erstellen und mounten
0Windows 2008 / 2008 R2 Server bietet ein cooles Feature um regelmäßig und schnell das Active Directory zu sichern. Die Sicherung kann im Betrieb erfolgen. Für den Snapshot wird der Volume Shadow Service verwendet.
Zum Anlegen des Snapshots wird das mitgelieferte Tool ntdsutil verwendet.
Wichtig! Das Tool benötigt Admin Rechte. cmd Box mit Adminrechten starten!
Mit dem Kommando
ntdsutil "ac i ntds" "sn" "cr" "q" "q"
verbindet sich das Tool zum Active Directory und startet das Anlegen des Snapshots.
Die bereits erstellten Snapshots kann man sich mit
ntdsutil "sn" "l a" "q" "q"
anzeigen lassen.
Um einen Snapshot zu verwenden muss er gemountet werden. Das Mounten erfolgt mit dem Kommando:
ntdsutil "sn" "l a" "mo 10" "q" "q"
10 gibt die Version an die sich auf die Nummer aus der Liste der Snapshots bezieht.
Nach dem Mounten ist der Snapshot unter C:\$SNAP_201107141124_VOLUMEC$\ verfügbar. Der Name ist abhängig vom Snapshot.
Aus dem Snapshot können wir jetzt das gesicherte Active Directory parallel starten. Hierzu muss man in den Ordner C:\$SNAP_201107141124_VOLUMEC$\Windows\NTDS\ wechseln. Der Ordner kann abweichen je nachdem wo man die AD Informationen abgelegt hat.
Mit dem Tool dsamain lässt sich die Kopie parallel starten.
Dem Tool dsamain werden 2 Parameter beim Start mitgegeben. Dem Parameter dbpath geben wir unser Active Directory aus dem Snapshot mit. Mit dem Parameter ldapport geben wir noch einen freien Port mit auf den wir uns dann mit einem LDAP Explorer oder mit der dsa.msc verbinden können. Per Default wird das AD aus dem Snapshot im Read Only Modus gestartet.
dsamain -dbpath ntds.dit -ldapport 6500
Jetzt können wir uns mit der dsa.msc auf das gemountete AD verbinden.
Um unser Snapshot AD sehen zu können müssen wir uns lokal auf Port 6500 verbinden.
Hiezu auf die Domäne einen Rechtsklick und “Change Domain Controller” auswählen.
In diesem Fenster muss bei <Type a Directory Server name[:port] here> localhost:6500 eingetragen werden.
Das ganze mit Ok bestätigen.
Wir sind jetzt mit dem Snapshot AD verbunden und können alles ansehen. Öffnet man ein Objekt stellt man fest das die Objekte, wie oben bereits erwähnt, Read Only sind.
Natürlich kann man auf dieses gemountete AD auch mit anderen Tools wie ldifde, csvde, usw. arbeiten.
Nach der Arbeit sollte man den Snapshot noch unmounten.
Der Unmount kann mit dem folgenden Befehl durchgeführt werden. Hier ist wieder die richtige Index ID einzugeben.
ntdsutil "sn" "l a" "un 10" "q" "q"
Einrichten einer NPS Policy für HP Procurve Geräte
0-
Im Baum auf „Netzwerkrichtlinien“ einen Rechtsklick und „Neu“ auswählen
-
Einen Policy Namen festlegen z.B. „HP Device Access“
-
Folgende Bedinungen werden benötigt
-
Windows-Gruppe: radius_nw_equipment_access
-
NAS-Porttyp: Virtuell (VPN)
-
-
Zugriff gewähren
-
Haken von MS-CHAPv2 und MS-CHAP entfernen und nur PAP auswählen
-
Hier wird nichts verändert, Weiter…
-
Framed-Protocol und Service-Type entfernen
-
Unter „Standard“ den Typ „Service-Type“ mit dem Attributwert „Administrative“ (Manager) oder „NAS Prompt“ (Operator) hinzufügen
-
Fertigstellen
-
Die Policy mit Rechtsklick „Nach oben“ in die oberste Position befördern
Einrichten einer NPS Policy für Cisco Geräte
0-
Im Baum auf „Netzwerkrichtlinien“ einen Rechtsklick und „Neu“ auswählen
-
Einen Policy Namen festlegen z.B. „Cisco Device Access“
-
Folgende Bedinungen werden benötigt
-
Windows-Gruppe: radius_nw_equipment_access
-
Clientanzeigename: CISCO-R?
-
NAS-Porttyp: Virtuell (VPN)
-
-
Zugriff gewähren
-
Haken von MS-CHAPv2 und MS-CHAP entfernen und nur PAP auswählen
-
Hier wird nichts verändert, Weiter…
-
Framed-Protocol und Service-Type entfernen
-
Unter „Herstellerspezifisch“ den Typ „Cisco-AV-Pair“ mit dem Attributwert „shell:priv-lvl=15“ hinzufügen
-
Fertigstellen
-
Die Policy mit Rechtsklick „Nach oben“ in die oberste Position befördern
Fertig.
Installation des Radiusservers (NPS Rolle)
0- Öffnen Sie den Servermanager
-
Klicken Sie „Rollen hinzufügen“ an
-
Wählen Sie „Netzwerkrichtlinien- und Zugriffsdienste“ aus
-
Wählen Sie „Netzwerkrichtlinienserver“ aus und schließen Sie die Installation ab
Vorbereitungen im AD
-
Einrichten einer Sicherheitsgruppe für die berechtigten User
-
Im User muss der Haken „Kennwort mit umkehrbarer Verschlüsselung speichern“ ausgewählt sein
-
Nach dem setzen des Hakens muss das Passwort zurückgesetzt werden !!!
-
Den User der Sicherheitsgruppe hinzufügen


























































