Sicheres Linux-Desktop-Betriebssystem: Difference between revisions

From
Jump to navigation Jump to search
No edit summary
No edit summary
Line 3: Line 3:
== Übersicht ==
== Übersicht ==


{| class="wikitable"
! Technologie
! Nutzen
! Kosten
! Angriff
|-
| BIOS Passwort
|
|
|
|-
| Sicheres Installationsmedium
|
|
|
|-
| BIOS Passwort
|
|
|
|-
| Readonly-Laufwerk
|
|
|
|-
| UEFI Secure Boot
|
|
|
|-
| LUKS
|
|
|
|-
| Distribution und Softwarequellen
|
|
|
|-
| Sichere Authentifizierung
|
|
|
|-
| Verschlüsseltes Backup
|
|
|
|-
| Sandboxing
|
|
|
|-
| Versiegelung
|
|
|
|-
| Sicherheitsstrategie für Plugins
|
|
|
|}


== Sicheres Installationsmedium ==
== Sicheres Installationsmedium ==
Line 105: Line 40:
** Kurzschluss an Kontakten eines Security Chips auf der Rückseite des Mainboards um Passwort zu umgehen
** Kurzschluss an Kontakten eines Security Chips auf der Rückseite des Mainboards um Passwort zu umgehen
** CMOS-Batterie vorübergehend entfernen um BIOS zurückzusetzen
** CMOS-Batterie vorübergehend entfernen um BIOS zurückzusetzen
* Laut Lenovo-Support verhindert die TPM-Technologie das zurücksetzen
** Ggf. trotzdem nützlich, um zu bemerken wenn Passwort zurückgesetzt wurde? -> Email an Lenovo-Support gesendet
** Mainboard ausbauen und flashen nötig

== Readonly-Laufwerk ==


== UEFI Secure Boot ==
== UEFI Secure Boot ==
Line 114: Line 48:
** Überprüft ob Kernel und Module signiert und startet Kernel dann
** Überprüft ob Kernel und Module signiert und startet Kernel dann
** [https://ubuntu.com/blog/how-to-sign-things-for-secure-boot Kernelmodule sind auch signiert und eigene Public-Keys können in shim enrolled werden]
** [https://ubuntu.com/blog/how-to-sign-things-for-secure-boot Kernelmodule sind auch signiert und eigene Public-Keys können in shim enrolled werden]
** Eigene Zertifikate müssen während des Bootprozesses explizit vom Nutzer genehmigt werden
** Welche garantien habe ich noch, wenn shim eigene Schlüssel zulässt?
*** Shim schreibt sie dann in einen NVRAM in den aus dem Betriebssystem nicht ohne weiteres geschrieben werden kann
*** Wer den Rechner in die Finger bekommt und Root-Zugriff auf ein gebootetes System hat, kann den Kernel trotz Secure Boot modifizieren
*** Wenn ohne BIOS-Passwort nur das verschlüsselte OS gebootet werden kann, sollten wir sicher sein

== Readonly-Laufwerk ==

* Falls anderes OS gebooted werden kann, könnte unverschlüsselte Bootpartition infiziert werden
** Da Microsoft selbst die CA für Secure Boot ist, wäre Windows besonders bedenklich
* Installation der unverschlüsselten Partition auf einem USB-Stick mit Schreibschutz-Switch
** Ist im normalen Betrieb (ggf. mehrerer Betriebssysteme) immer schreibgeschützt
** Kann nach dem Booten des sicheren OS für Updates vorübergehend entsperrt werden
* USB Stick darf nicht unbemerkt in fremde Hände fallen
** Ggf. schwerer zu sichern als die Notebook-Hardware (geht schnell, kein Werkzeug nötig)
* Für Notebook nicht sinnvoll, aber ggf. für Dualboot PC zu Hause


== Verschlüssellung ==
== Verschlüssellung ==
Line 126: Line 74:
** Verfahren ist bekannt und bietet keine besondere Sicherheit
** Verfahren ist bekannt und bietet keine besondere Sicherheit
* [https://threatpost.com/academics-find-critical-flaws-in-self-encrypting-hardware-drives/115103/ Sicherheitsbedenken] wegen Backdoors, gesetztlicher Vorgaben, achtloser Implementierung
* [https://threatpost.com/academics-find-critical-flaws-in-self-encrypting-hardware-drives/115103/ Sicherheitsbedenken] wegen Backdoors, gesetztlicher Vorgaben, achtloser Implementierung
* Zumindest für billiges Wipen der SSD vor Installation nutzbar
* Zumindest für billiges Wipen der SSD vor Installation nutzbar (sedutil)


=== LUKS ===
=== LUKS ===

* [https://gitlab.com/cryptsetup/cryptsetup LUKS] nutzt dm-crypt Kernelmodul für transparente Verschlüsselungsschichten
* Header enthält mit Passwort(en) verschlüsselten Masterkey (ohne den ist alles futsch)
* Bei SSDs bleiben alte LUKS-Header in ungenutzen Blöcken erhalten
** Daten können mit altem, deaktiviertem Passwort entschlüsselt werden
** LUKS-Header kann auf HDD ausgelagert werden
* ATA „secure erase“ nicht unbedingt vertrauenswürdig
* Das „cryptsetup“ CLI hat explizite „luksHeaderBackup“-Funktionalität
* [https://en.wikipedia.org/wiki/Initial_ramdisk initrd] bereitet Zugriff (insbesondere entschlüssellung) auf Kernel vor und lädt treiber
** Erlaubt in bestimmten Debian-Versionen [https://www.cvedetails.com/cve/CVE-2016-4484/ Zugriff auf root-rescue-shell]
*** Noch aktuell? Wie lösbar? Bootparameter?


== Distribution und Softwarequellen ==
== Distribution und Softwarequellen ==


* [https://www.youtube.com/watch?v=f4U8YbXKwog Qubes OS]
** Alle Applikationen laufen in virtuellen Maschienen
** Mehrere Betriebssysteme auf einem Desktop (einschließlich Windows)
** „Disposable VMs“ die nur für die Laufzeit eines Programms existieren
** Netzwerkzugriff und Tor-Tunnelling pro VM einstellbar
** Explizite Einstellung von USB-Passthrough zu VMs nötig
** Zusätzliche CPU- und RAM-Belastung und Verwaltungsaufwand
** [https://fossbytes.com/secure-linux-distros-privacy-anonymity/ Weitere sicherheitszentrierte Distributionen] vorhanden
** Für mich aktuell zu umständlich
* [https://www.educba.com/centos-vs-debian/ Debian und CentOS] sind zwei der stabilsten Linuxdistros
** CentOS ist etwas stabiler
** Debian hat mehr und aktuellere Software und bessere Hardwareunterstützung
* Debian
* Signierte Binaries aus Repos? Sicherheitsanforderungen?
* Signierte Binaries aus Repos? Sicherheitsanforderungen?
* Snap? pip? rpm?
* Snap? pip? rpm?
Line 139: Line 111:
== Verschlüsseltes Backup ==
== Verschlüsseltes Backup ==


* “Stehendes” Backup von externem Bootmedium
* “Stehendes” Backup von anderem Bootmedium (USB oder andere Partition)
** Z. B. Installation eines minimalen Archlinux mit Autostart von Backupscript
* Inkrementelles Backup
** Nur genutzte Blöcke betrachten und Komprimierung nutzen mit partclone und gzip
* Inkrementelles Backup auf Blockbasis
* Komprimiertes Backup durch Backup der Partitionsstruktur
** Backup muss LUKS-Header, die Partitionsstruktur und alle Partition beinhalten
** Entweder LUKS-Verschlüssellung der Zielfestplatte oder Verschlüssellung des Backups
* Netzwerkbackup mit geringer Bandbreite
* Inkrementelles Backup von $HOME
** Backup aus dem laufenden OS auf separat verschlüsselte Festplatte mit rsync
** Z. B. Speicherung jeweils einer Version aus den letzten x Jahren, y Monaten, z Wochen, w Tagen
* Backups sollten möglichst immer nochmal überprüft werden
** Vorher sollten Caches geleert werden: <code>echo 3 &gt; /proc/sys/vm/drop_caches</code>


== Sandboxing ==
== Sandboxing ==
Line 155: Line 132:
== Weitere Ideen ==
== Weitere Ideen ==


* Kontrolle über USB-Geräte?
* Sicherheitsstrategie für VIM-Plugins
* Sicherheitsstrategie für VIM-Plugins
* Git-Repository mit Konfigurationsdateien (~/.bashrc, ~/.profile, .tmux.conf, …)
* Git-Repository mit Konfigurationsdateien (~/.bashrc, ~/.profile, .tmux.conf, …)

Revision as of 13:02, 7 October 2019

Es soll untersucht werden, welche Technologien bei der Einrichtung eines möglichst sicheren und trotzdem bequem Nutzbaren Linux-Desktop-Betriebssystem von Nutzen sein können. Es soll außerdem evaluiert werden, welchen genauen Nutzen, welche Nachteile und welche Schwachstellen die Technologien haben und gegen welche Angreifermodelle sie letztendlich schützen.

Übersicht

Sicheres Installationsmedium

  • Vertrauen in alle beteiligte Hardware nötig
  • Vertrauen in Betriebssystem nötig, das Installationsimage lädt bzw. prüft
  • Absicherungsidee
    • Installationsimage auf USB-Stick mit Schreibschutz-Switch laden
    • Schreibschutz aktivieren
    • Auf unabhängigen Rechnern SHA512-Checksumme herunterladen und gegen USB-Stick prüfen
    • Es muss nur einer der Rechner „die Wahrheit“ sagen damit ein falsches Image auffällt

BIOS

  • Wake on LAN: Auf ersten Blick nicht bedenklich. Aber sicher ist sicher.
  • TPM 2.0 Modul
    • Erlaubt Secure Boot
    • Schlüsselgenerierung und -speicher
    • Verschlüssellung und Signatur
    • Random Noise Generator
    • Von aktuellen Kernels unterstützt und unter /dev/tpm0 eingebunden
  • Intel SGX: Abgesicherter bereich für Sicherheitskritische Ausführung
  • Internal Storage Tamper Detection: Fährt herunter, wenn Drive während Schlafmodus entfernt
  • UEFI only und überflüssige Booteinträge entfernen
  • „Boot Order Lock“-Option ohne verständliche Beschreibung

BIOS Passwort

  • Supervisor Passwort sperrt Zugriff auf bestimmte BIOS Einstellungen
    • Optional auf alle BIOS-Änderungen und Auswahl von Booteinträgen
    • Booten kann auch durch Passwort geschützt werden
    • Passwort für SSD Hardwareverschlüsselung (siehe Verschlüsselung)
  • Kann vor Manipulation der Einstellungen und der Booteinträge schützen
  • Sicherheitslücken:
    • Viele Hersteller haben Masterpasswörter um das BIOS bei dreifacher Falscheingabe zu entsperren
    • Kurzschluss an Kontakten eines Security Chips auf der Rückseite des Mainboards um Passwort zu umgehen
    • CMOS-Batterie vorübergehend entfernen um BIOS zurückzusetzen
  • Laut Lenovo-Support verhindert die TPM-Technologie das zurücksetzen
    • Mainboard ausbauen und flashen nötig

UEFI Secure Boot

Readonly-Laufwerk

  • Falls anderes OS gebooted werden kann, könnte unverschlüsselte Bootpartition infiziert werden
    • Da Microsoft selbst die CA für Secure Boot ist, wäre Windows besonders bedenklich
  • Installation der unverschlüsselten Partition auf einem USB-Stick mit Schreibschutz-Switch
    • Ist im normalen Betrieb (ggf. mehrerer Betriebssysteme) immer schreibgeschützt
    • Kann nach dem Booten des sicheren OS für Updates vorübergehend entsperrt werden
  • USB Stick darf nicht unbemerkt in fremde Hände fallen
    • Ggf. schwerer zu sichern als die Notebook-Hardware (geht schnell, kein Werkzeug nötig)
  • Für Notebook nicht sinnvoll, aber ggf. für Dualboot PC zu Hause

Verschlüssellung

Hardwareverschlüssellung der SSD

  • Viele moderne SSDs verschlüsseln die gespeicherten Daten mit AES-256
  • Schlüssel in SSD persistiert, kann aber vom BIOS mit Passwort verschlüsselt werden
    • Verschlüssellungsverfahren ist BIOS-Hersteller-abhängig
    • Kann nicht ohne weiteres an anderem Rechner verwendet werden
    • Verfahren ist bekannt und bietet keine besondere Sicherheit
  • Sicherheitsbedenken wegen Backdoors, gesetztlicher Vorgaben, achtloser Implementierung
  • Zumindest für billiges Wipen der SSD vor Installation nutzbar (sedutil)

LUKS

  • LUKS nutzt dm-crypt Kernelmodul für transparente Verschlüsselungsschichten
  • Header enthält mit Passwort(en) verschlüsselten Masterkey (ohne den ist alles futsch)
  • Bei SSDs bleiben alte LUKS-Header in ungenutzen Blöcken erhalten
    • Daten können mit altem, deaktiviertem Passwort entschlüsselt werden
    • LUKS-Header kann auf HDD ausgelagert werden
  • ATA „secure erase“ nicht unbedingt vertrauenswürdig
  • Das „cryptsetup“ CLI hat explizite „luksHeaderBackup“-Funktionalität
  • initrd bereitet Zugriff (insbesondere entschlüssellung) auf Kernel vor und lädt treiber

Distribution und Softwarequellen

  • Qubes OS
    • Alle Applikationen laufen in virtuellen Maschienen
    • Mehrere Betriebssysteme auf einem Desktop (einschließlich Windows)
    • „Disposable VMs“ die nur für die Laufzeit eines Programms existieren
    • Netzwerkzugriff und Tor-Tunnelling pro VM einstellbar
    • Explizite Einstellung von USB-Passthrough zu VMs nötig
    • Zusätzliche CPU- und RAM-Belastung und Verwaltungsaufwand
    • Weitere sicherheitszentrierte Distributionen vorhanden
    • Für mich aktuell zu umständlich
  • Debian und CentOS sind zwei der stabilsten Linuxdistros
    • CentOS ist etwas stabiler
    • Debian hat mehr und aktuellere Software und bessere Hardwareunterstützung
  • Debian
  • Signierte Binaries aus Repos? Sicherheitsanforderungen?
  • Snap? pip? rpm?

Sichere Authentifizierung

Verschlüsseltes Backup

  • “Stehendes” Backup von anderem Bootmedium (USB oder andere Partition)
    • Z. B. Installation eines minimalen Archlinux mit Autostart von Backupscript
    • Nur genutzte Blöcke betrachten und Komprimierung nutzen mit partclone und gzip
    • Backup muss LUKS-Header, die Partitionsstruktur und alle Partition beinhalten
    • Entweder LUKS-Verschlüssellung der Zielfestplatte oder Verschlüssellung des Backups
  • Inkrementelles Backup von $HOME
    • Backup aus dem laufenden OS auf separat verschlüsselte Festplatte mit rsync
    • Z. B. Speicherung jeweils einer Version aus den letzten x Jahren, y Monaten, z Wochen, w Tagen
  • Backups sollten möglichst immer nochmal überprüft werden
    • Vorher sollten Caches geleert werden: echo 3 > /proc/sys/vm/drop_caches

Sandboxing

  • AppArmor
  • Firejail
    • Checkpoints (ggf. git repository)

Versiegelung

Weitere Ideen

  • Kontrolle über USB-Geräte?
  • Sicherheitsstrategie für VIM-Plugins
  • Git-Repository mit Konfigurationsdateien (~/.bashrc, ~/.profile, .tmux.conf, …)
    • Schnelles und sichereres Einrichten neuer Linux-Accounts

Weitere Themen

  • Welche Maßnahmen sind auf Dual-Boot-Systeme übertragbar?
  • Lassen sich BIOS oder Netzwerkkarte von außen steuern/flashen?
    • Intel-Fernadministrierung/V-Pro?
  • RAM-Verschlüsselung auf neuen AMD Ryzen Pro
  • Hardwareverschlüsselung vs Softwareverschlüsselung (siehe BitLocker)
  • Inwiefern sind die Technologien von der Hardware/dem BIOS abhängig?