Get-BitlockerReport
Die Daten auf Festplatten sind gegen fremde Zugriffe zu schützen,. DAs gilt für Notebooks im Außendienst ebenso wie für Daten auf Server und in der Cloud. Bitlocker ist neben TrueCrypt/VeraCrypt ein effektiver Weg dieses Ziel zu erreichen. Wie stellen Sie aber sicher, dass alle Disks auch verschlüsselt und sie als Firma einen Recovery-Key haben?. Get-BitlockerReport liefert eine Liste der Computer und der hinterlegten Bitlocker Schlüssel. Keine 100% Lösung aber für Firmen besser als Blindflug
Vorarbeiten und Einschränkungen
Bitlocker kann nur Windows Vista/7 Enterprise/Ultimate, Windows 8/8.1/10 Enterprise/Professional oder Windows Server 2008 und höher genutzt werden. Beim Einsatz in Firmen sollten Sie aber unbedingt mit Gruppenrichtlinien dafür sorgen, dass Bitlocker auf den gewünschten Zielsystemen "zwingend" ist und die Verschlüsselung erst startet, wenn der Encryptionkey auch beim Computerobjekt im Active Directory hinterlegt ist. Beides ist eine Einstellung in den Gruppenrichtlinien. Eine ausführliche Beschreibung finden Sie auf Bitlocker.
Das hier beschriebene Skript nutzt genau dieses Wissen, um die Daten aus dem Active Directory auszulesen und daraus eine Liste der Clients zu liefern, die Bitlocker nutzen oder eben auch noch nicht nutzen.
Damit ist aber auch klar, dass Sie eben auch nur solche
Geräte aufgelistet bekommen, die zumindest per
Gruppenrichtlinie die Hinterlegung im Active Directory
vorgeschrieben bekommen. Leider wird diese Funktion auch nur
aktiviert, wenn die Bitlocker-Verschlüsselung gestartet
wird. Wenn Sie heute also schon Computer mit aktivierter
Bitlocker-Verschlüsselung einsetzen und dann erst die
Gruppenrichtlinie aktivieren, wird der Eintrag nicht mehr
nachträglich durchgeführt. Hier können Sie aber per
Komandozeile nachhelfen, um den Schlüssel wieder zu
veröffentlichen. Der Computer wird also bis dahin irrtümlich
als "unsicher" geführt.
Schlimmer ist es aber, wenn ein Computer in der Liste mit
einem Schlüssel auftaucht, der aber schon veraltet ist.
Festplatten können ausfallen und ersetzt werden und Computer
können mit dem gleichen Namen wieder installiert werden.
Wenn dann allerdings die Gruppenrichtlinie korrekt greift,
wird auch Bitlocker natürlich wieder aktiviert. Es kümmert
sich aber niemand darum, die alten Schlüssel der früheren
Installation oder Festplatte zu entfernen. Es kann also
sein, dass ein Computer mehrere Einträge hat, ob wohl es nur
eine Festplatte gibt. Aber auch mit dieser Einschränkungen
kann man leben, solange die Gruppenrichtlinie BitLocker
vorschreibt.
Der Platz im Active Directory
Objekte, die im Active Directory gespeichert werden, finden Sie sehr einfach per ADSIEDIT. In diesem Fall ist der Blick an das Computerobjekt angebracht, wo sich sehr schnell die Schlüssel zeigen
Dieser Computer hat wohl schon mindestens 10 Festplatten (oder auch USB-Keys) verschlüsselt. Welche die aktuelle Disk ist, ist so gar nicht zu erkennen. Ich habe aber hier nur die Werte anzeigen lassen, die auch beschreibbar sind. Jedes AD-Objekte hat natürlich noch zumindest die Properties "WhenCreated" und "WhenChanged", anhand derer zumindest das Datum ermittelt werden kann, wann die Partition verschlüsselt wurde. Letztlich gibt es hier aber keinen Hinweis auf die aktuelle Festplatte. Jedes per Bitlocker geschützte Speichermedium wird gleich behandelt. Auch hier gilt wieder, dass eine GPO sicherstellen muss, dass eine Festplatte auf jeden Fall verschlüsselt wird.
- Export BitLocker-information using
Windows PowerShell
http://blog.PowerShell.no/2010/10/24/export-bitlocker-information-using-windows-PowerShell/ - Retrieve BitLocker recovery information
from AD DS
http://gallery.technet.microsoft.com/scriptcenter/6ef4ba51-3738-4dd6-a80d-dd8c93ffbde6
Daten generieren
Es ist kein sehr umfangreiches Skript, um per ADSI nach den Bitlocker-Informationen zu suchen, sich dann per ADSI damit zu verbinden um das dazugehörige Parent-Objekt zu erhalten. Sicher könnte man auch aus den "DN" schon das Objekt ermitteln, aber damit kennt man noch nicht den dnsHostname und andere interessante Zusatzinformationen.
Das Skript erwartet keinerlei Eingaben und sucht sich in der aktuellen Domäne selbst einen GC um über den Filter "(objectclass=msFVE-RecoveryInformation)" alle Objekte mit dem Unterobjekt zu finden und in eine Liste einzutragen. Dann sucht das Skript ein zweites mal mit dem veränderten Filter "(objectclass=Computer)" um nun alle Computer zu finden. Dabei geht es dann alle Computer durch und ergänzt die Liste um die Anzahl der Bitlocker-Elemente, die es dann einfach ausgibt. Die Ausgabe können Sie mit weiteren PowerShell-Befehlen natürlich filtern, sortieren, gruppieren oder einfach in eine CSV-Datei schreiben, die dann später mit Power Bi oder anderen Werkzeugen ausgewertet werden kann.
Der Aufruf muss als Administrator erfolgen, damit sie die Bitlocker-Informationen auch wirklich finden können. Aktuell wird das noch nicht überprüft und sie bekommen 0 Ergebnisse und das Skript wirft einen Fehler, weil die Prozentanzeige ein "Division durch Null"-Fehler generiert.
Die vom Skript zurück gegebenen Daten sind ein PowerShell-Objekt mit den folgenden Properies:
get-bitlockercomputer: End TypeName: Selected.System.String Name MemberType Definition ---- ---------- ---------- Equals Method bool Equals(System.Object obj) GetHashCode Method int GetHashCode() GetType Method type GetType() ToString Method string ToString() bitlockervolumes NoteProperty bitlockervolumes=null computername NoteProperty System.String computername=NAWSV010 distinguishedname NoteProperty System.String distinguishedname=CN=NAWSV010,O... dNSHostName NoteProperty System.String dNSHostName=nawsv010.netatwork.de
Interessant für die weitere Betrachtung sind die vier "NoteProperty"-Felder. Der einfachste Aufruf exportiert die Daten gleich in eine CSV-Datei
get-bitlockerreport.ps1 | export-csv .\bitlockerreport.csv -notypinformation -delimiter ";" -encoding unicode
Über das Trennzeichen lässt sich die Datei in einem deutschen Excel sehr viel einfacher öffnen.
Auswertung mit Powershell
Da die Daten über die Pipeline ausgegeben werden, können Sie natürlich auch die Nachverarbeitung über die PowerShell durchführen. Sortieren und Filtern sind hier sicher die häufigsten Ansätze. Wenn sie ihre Computer in entsprechende OUs einsortiert haben, dann können Sie über den Distinguishedname hier filtern. Sehr große Umgebungen werden natürlich das Skript selbst anpassen und schon bei der Suche nach den Computern und Bitlocker-Informationen einen "BaseDN" angeben. Ich habe darauf aber aus Vereinfachungsgründen verzichtet.
Hier eine exemplarische Ausgabe gleich gruppiert nach der Anzahl der Bitlocker-Einträge an den Computern
PS C:\> C:\get-bitlockerreport\get-bitlockerreport.1.0.ps1 | group bitlockervolumes -noelements get-bitlockercomputer: Start get-bitlockercomputer: Search for Recovery Information Search for all Computers to generate list get-bitlockercomputer: End Count Name ----- ---- 56 28 1 3 10 2 3 1 5 2 4 9 2
Hier ist gut zu sehen, dass 56 Systeme zumindest keine entsprechenden Informationen veröffentlicht haben und drei Systeme wohl schon 10 Volumes hinterlegt habe,
Weiterentwicklung
Mit dieser mal schnell entwickelten Version habe ich in einer Umgebung einen entsprechenden ersten Bericht erstellen können. Wünschenswert wäre natürlich z.B. die Steuerung über Parameter z.B. bezüglich von Computername, OUs oder auch Computergruppen. Ich könnte mir auch vorstellen, dass das Skript umgekehrt funktioniert und per Pipeline eine Liste der Computer vorne eingekippt wird, für die dann die Bitlocker-Properties ermittelt werden. Letztlich hängt es davon ab, was das Skript erreichen soll um es entsprechend anzupassen.
Anhand des vorhandenen Source-Code können Sie aber sehr einfach solche Anforderungen auch selbst umsetzen, so dass ich erst einmal keine Weiterentwicklung vorgesehen habe.