Sicheres Linux-Desktop-Betriebssystem: Difference between revisions

From
Jump to navigation Jump to search
Content deleted Content added
Rink (talk | contribs)
No edit summary
Rink (talk | contribs)
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?