====== pam_panic ======
pam_panic ist ein Softwareprojekt, welches unter mindestens zwei verschiedene Linux-Distributionen getestet wurde. Es wurde auf dem [[https://media.ccc.de/v/35c3chaoswest-26-pampanic-a-linux-authentication-module-for-people-in-distress|35C3]] präsentiert.
===== Idee =====
Das Ziel ist, Daten in einer verschlüsselten LUKS-Partition zu zerstören, sobald man ein bestimmtes Passwort oder ein bestimmten USB-Stick am bereits kryptogaphisch geöffneten System eingibt; wie zum Beispiel bei einem Login-Screen oder Screensaver.
Es soll im Falle einer Bedrohung helfen, mögliche wichtige Daten, wie Zugangsschlüssel oder Passwörter zu vernichten. (Oder halt ein ganzes System, wenn wir gerade dabei sind.)
===== Rechtliche Voraussetzung =====
Man sollte sich im Rechtsstaat befinden und sicher sein, dass von exekutiver Seite keine Spiegelung der Festplatte erstellt worden ist.
===== Systemvoraussetzung =====
Ein Linux, welches eine Partition enthält, die mit LUKS verschlüsselt wurde. Ubuntu-Systeme bieten dies beim Installieren an.
Wenn man eines der folgenden Systeme benutzt, existiert dafür ein fertiges Paket, was man sich installieren kann:
  * [[https://aur.archlinux.org/packages/pam_panic|Arch Linux (AUR)]]
  * [[https://launchpad.net/~bandie/+archive/ubuntu/pampanic|Ubuntu (Launchpad)]]
===== Bau des Paketes =====
Falls dein Betriebssystem nicht dabei ist und es dennoch ausprobieren/verwenden möchtest, muss es für das Betriebssystem gebaut werden.
Wenn du ein altes Ubuntu Xenial benutzt, siehe dir [[https://github.com/pampanic/pam_panic/wiki/Building-from-source-with-Ubuntu-Xenial-(if-you-really-want-it)|das hier]] an.
Allgemein gesprochen gibt es folgende Abhängigkeiten:
  * git
  * automake
  * autoconf
  * make
  * m4
  * fakeroot
  * which
  * gcc
  * groff
  * gettext
  * gawk
  * pam (developer, auch libpam0g-dev)
  * cryptsetup
  * dialog
Wer schon mal Dinge gebaut hat, für denen ist diese Liste kaum eine Überraschung. 
"dialog" wird für das Konfigurationsmenü gebraucht.
Mit einem
git clone https://git.chaospott.de/Bandie/pam_panic
holen wir uns das Projekt.
Anschließend gehen wir mit ''cd pam_panic'' in das Projekt rein und führen dieses in der Reihenfolge aus:
autoreconf -i
./configure
make
sudo make install
===== Konfiguration =====
In der Kommandozeile führt man ''sudo pam_panic_config'' auf.
Dieses Menü erstellt eine gültige pam_panic-Konfiguration.
Dabei stellt es dich vor die Wahl, ob du ein Passwort oder ein USB-Stick einrichten möchtest. Die USB-Sticks müssen GPT-formatiert sein.
Anschließend muss pam_panic noch in das gegebene System durch includes in anderen Dateien der /etc/pam.d erfolgen. Man beachte dabei die Hinweise des Konfigurationsprogramms.
Ein Beispiel für xscreensaver:
#%PAM-1.0
auth       include      pampanic
account    include      pampanic
auth       include      system-auth
account    include      system-auth
Nachdem man dieses hinzugefügt hat, ist pam_panic sofort aktiv.
In der obigen Beispiel-Konfiguration bedeutet das, dass xscreensaver zu erst nach dem pam_panic USB-Gerät oder Passwort fragen wird, bevor es das normale Benutzerpasswort verlangt.
===== Tipp: Zusätzliche Sicherheit durch Memory-Poisoning =====
Man kann den Kernel anweisen bei einem Herunterfahren bzw. Neustart den Speicher mit random-Daten zu überschreiben.
Dazu fügt man in ''/etc/default/grub'' dem Parameter ''GRUB_CMDLINE_LINUX'' folgendes an:
GRUB_CMDLINE_LINUX="[...] page_poison=on slub_debug=P"
Anschließend sollte die Config von GRUB neu erzeugt werden: 
sudo grub-mkconfig -o /boot/grub/grub.cfg