Sicheres Linux-Desktop-Betriebssystem: Difference between revisions
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 |
* “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 |
|||
* |
** 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 > /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
- Kleiner Bootloader names „shim“ ist von Microsoft signiert
- Überprüft ob Kernel und Module signiert und startet Kernel dann
- 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
- 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
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
- Erlaubt in bestimmten Debian-Versionen Zugriff auf root-rescue-shell
- Noch aktuell? Wie lösbar? Bootparameter?
- Erlaubt in bestimmten Debian-Versionen Zugriff auf root-rescue-shell
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
- Vorher sollten Caches geleert werden:
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?