ATA-Security-Features moderner Platten und SSDs nutzen

braverabbit, 123RF

Daten im Tresor

Moderne ATA-Festplatten und SSDs bieten Sicherheitsoptionen, mit deren Hilfe man den Zugriff auf die Daten regeln und sie auch sicher vernichten kann.
ADMIN 11/13 stellt die besten Lösungen vor und klärt, ob Browser-Plugins, Anonymisierer sowie Verschlüsselung wirklich helfen. Weitere Themen: Small ... (mehr)

Das Konzept der ATA-Security-Features ist wohldurchdacht, allerdings bringt kaum ein Betriebssystem eine eng integrierte Toolchain mit, um dieses Konzept konsistent auszunutzen. Mit dem Linux-Tool »hdparm« , das bei nahezu allen Distributionen zum Standard-Installationsumfang gehört, lassen sich die ATA-Security-Features aber zumindest manuell beziehungsweise skriptbasiert steuern. Auf vielen Laptops können die Features darüber hinaus zum Teil auch über das BIOS genutzt werden – denn der Ursprungsgedanke der ATA-Security-Features ging in der Tat von mobilen Geräten aus. Wer die Features nutzen will, sollte sich zuvor jedoch besser erst ein Verständnis des zugrundeliegenden Sicherheitskonzepts erarbeiten.

Ein wenig Theorie

Kauft man sich heutzutage eine HDD oder SSD, so sind alle Sicherheitsfeatures zunächst einmal deaktiviert. Eine Abfrage mit »hdparm« als User »root« liefert Informationen über eine herkömmliche 2.5-Zoll-Notebook-SSD wie in Listing 1 (die relevanten Zeilen sind fett markiert).

Listing 1

hdparm-Infos

 

Hier ist ersichtlich, dass die SSD das ATA-Security-Command-Set unterstützt, alle Sicherheitsfeatures allerdings inaktiv sind (»not enabled« ) und die SSD Änderungen am Sicherheitszustand zulässt (»not frozen« ). Im ATA-Jargon wird dieser Zustand SEC1 genannt, das ist der Auslieferungszustand (der ausgeschaltete Zustand hieße SEC0). Um nun zu verhindern, dass entweder aus Versehen oder durch Malware mit Root-Rechten sicherheitsrelevante Manipulationen an der SSD durchgeführt werden, beispielsweise Passwörter gesetzt werden oder das Device für sämtlichen I/O gesperrt wird, lässt sich das Device einfrieren:

root # hdparm --security-freeze /dev/sdb

Das Device ist nun im Zustand SEC2. Den zugehörigen »hdparm -I« -Output zeigt Listing 2.

Listing 2

Im Zustand SEC2

 

Das Gegenstück zum Einfrieren, gewissermaßen ein Auftauen, gibt es nicht. Erst nach einem neuerlichen Hardware-Reset oder Power Cycle ist der Zustand wieder SEC1 (Abbildung 1).

Abbildung 1: Die möglichen Übergänge zwischen den Sicherheitszuständen des ATA Security-Konzepts.

Hier ist aber gleich ein Hinweis auf eine mögliche Falle nötig: die BIOSse vieler Notebooks setzen zum Schutz vor Manipulationen beim Booten das ATA-Kommando »SECURITY_FREEZE_LOCK« ab. In diesem Falle ist es dann im laufenden System gar nicht möglich, irgendwelche weitere Änderungen am Sicherheitszustand durchzuführen. In der Tat hat der Autor bereits an dieser Stelle schon etwas mogeln müssen: Sein Laptop friert nämlich auch beim Booten per BIOS die eingebaute SSD ein. In diesem Falle hilft nur der Einbau der Platte in einen PC, dessen BIOS die Platte oder SSD nicht automatisch einfriert, sonst ist das Tutorial an dieser Stelle schon zu Ende.

Daten einsperren

Deshalb gehen wir einmal davon aus, dass die Platte nicht eingefroren ist. Zum weiteren Verständnis ist wichtig: das ATA-Sicherheitskonzept kennt zwei unterschiedliche Passwörter: das User- und das Master-Passwort, jeweils 32 Byte lang. Per Factory-Default ist das User-Passwort NULL (also 32 Null-Bytes) und das Master-Passwort herstellerspezifisch und undokumentiert, obwohl im Web allerlei Informationen über Factory Presets existieren. Mehr zu Funktion und Verwendung des Master-Passworts weiter unten.

Die ganze Parade beginnt nun mit dem Setzen des User-Passworts:

root # hdparm --user-master u  --security-set-passwd "Geheim" /dev/sdbsecurity_password="Geheim"/dev/sdb:
Issuing SECURITY_SET_PASS command, password="Geheim", user=user, mode=high

Die Option »--user-master u« legt fest, dass im folgenden das User-Passwort referenziert wird. Da dies der Default ist, kann sie an dieser Stelle auch weggelassen werden. Danach sieht man Ausgaben wie in Listing 3.

Listing 3

Mit User-Passwort

 

Die Platte oder SSD befindet sich nun im Sicherheitszustand SEC5 (wäre sie nun ausgeschaltet: SEC3). In diesem Zustand kann man mit diesem Device nun zwei Dinge tun: man kann sie für jeglichen I/O sperren oder vollständig löschen. Das Sperren erfolgt nach einem Reboot automatisch. Die SSD lässt so lange keinen Daten-I/O zu (Zustand: SEC4), bis ein »SECURITY_UNLOCK« -Kommando unter Angabe des Passworts abgesetzt wurde (das Absetzen von ATA-Steuerungskommandos und damit auch beispielsweise S.M.A.R.T.-Kommandos funktioniert weiterhin), entweder wieder direkt beim BIOS-Prompt (wenn die Platte zum Booten notwendig ist) oder mit »hdparm« , wozu natürlich erst einmal ein Betriebssystem geladen sein muss, was also nur für zusätzliche Datenplatten geeignet ist:

root # hdparm --user-master u--security-unlock "Geheim" /dev/sdb

Auch hier die Anmerkung: da in diesem Zustand (jetzt wieder SEC5) durch Malware mit Root-Rechten Passwörter wieder geändert werden könnten, bietet sich ein sofortiges Einfrieren der HDD/SSD an, wie das eben die meisten Notebook-BIOSse auch tun. Danach ist die SSD gegen weitere sicherheitsrelevante Manipulationen gesichert (Zustand: SEC6). Nebenbei: ein Counter in der Festplatten-Elektronik lässt nur fünf Eingabeversuche für das User-Passwort zu. Sonst bleibt das Device im Zustand SEC4 gesperrt. Jeder weitere Versuch des Entsperrens ist erst nach erfolgtem Power Cycle oder Hardware-Reset wieder möglich. »hdparm« liefert dann den Output aus Listing 4.

Listing 4

Platte gesperrt

 

comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2019