Komplette Anleitung: Deadman-Switch mit automatischer Selbstzerstörung
Einleitung:
In dieser Anleitung lernen Sie, wie Sie einen Deadman-Switch einrichten. Dieses System ermöglicht es, ein Lebenszeichen zu setzen, das täglich überprüft wird. Bleibt das Lebenszeichen aus, wird eine sichere Selbstzerstörungsroutine ausgelöst.
---
1. Voraussetzungen und Basisinstallation
Falls Sie es noch nicht getan haben:
1. Laden Sie das Programm PuTTY herunter, um eine SSH-Verbindung zu Ihrem Server herzustellen.
2. Öffnen Sie PuTTY und geben Sie im Feld "Host Name (or IP address)" die IP-Adresse oder Domain Ihres Servers ein. Klicken Sie anschließend auf "Open".
3. Melden Sie sich mit Ihrem Root-Zugang an.
Führen Sie die folgenden Schritte aus:
PHP-Paketquelle hinzufügen:
Für Debian:
Für Ubuntu:
Aktualisieren Sie die Paketlisten:
Installieren Sie Apache2 und PHP:
Installieren Sie MariaDB:
---
2. Einrichtung des Deadman-Switch
2.1 Verzeichnis erstellen:
2.2 PHP-Skript erstellen:
Erstellen Sie die Datei `/var/www/deadman/index.php`:
Fügen Sie den folgenden PHP-Code ein:
Setzen Sie die Berechtigungen:
---
3. Passwortschutz hinzufügen
Erstellen Sie die Datei `/var/www/deadman/.htaccess`:
Inhalt:
Erstellen Sie die Passwort-Datei:
---
4. Apache Virtual Host anpassen
Ändern Sie den DocumentRoot des Standard-Virtual-Hosts auf `/var/www/deadman`:
Ändern Sie den Inhalt wie folgt:
Starten Sie Apache neu:
---
5. Deadman-Check-Skript erstellen
Erstellen Sie die Datei `/home/deadman/deadman_check.sh`:
Inhalt:
Setzen Sie die Berechtigungen:
---
6. Selbstzerstörungsskript erstellen
Erstellen Sie die Datei `/home/deadman/self_destruct.sh`:
Inhalt:
Setzen Sie die Berechtigungen:
---
7. Cron-Job einrichten
Richten Sie den Cron-Job ein, um das Deadman-Check-Skript täglich auszuführen:
Eintrag:
---
8. Nutzung
1. Öffnen Sie `http://<deine-server-ip>/`.
2. Melden Sie sich mit dem Passwort an und klicken Sie auf **"Jetzt Lebenszeichen geben"**.
3. Das System prüft täglich automatisch, ob das Lebenszeichen gesetzt wurde. Andernfalls wird die Selbstzerstörung ausgelöst.
Einleitung:
In dieser Anleitung lernen Sie, wie Sie einen Deadman-Switch einrichten. Dieses System ermöglicht es, ein Lebenszeichen zu setzen, das täglich überprüft wird. Bleibt das Lebenszeichen aus, wird eine sichere Selbstzerstörungsroutine ausgelöst.
---
1. Voraussetzungen und Basisinstallation
Falls Sie es noch nicht getan haben:
1. Laden Sie das Programm PuTTY herunter, um eine SSH-Verbindung zu Ihrem Server herzustellen.
2. Öffnen Sie PuTTY und geben Sie im Feld "Host Name (or IP address)" die IP-Adresse oder Domain Ihres Servers ein. Klicken Sie anschließend auf "Open".
3. Melden Sie sich mit Ihrem Root-Zugang an.
Führen Sie die folgenden Schritte aus:
Bash:
apt update
apt upgrade -y
apt install ca-certificates apt-transport-https lsb-release gnupg curl nano unzip -y
PHP-Paketquelle hinzufügen:
Für Debian:
Bash:
curl -fsSL https://packages.sury.org/php/apt.gpg -o /usr/share/keyrings/php-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/php-archive-keyring.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list
Bash:
apt install software-properties-common -y
add-apt-repository ppa:ondrej/php -y
Aktualisieren Sie die Paketlisten:
Bash:
apt update
Installieren Sie Apache2 und PHP:
Bash:
apt install apache2 php8.2 php8.2-cli php8.2-common php8.2-curl php8.2-gd php8.2-intl php8.2-mbstring php8.2-mysql php8.2-opcache php8.2-readline php8.2-xml php8.2-xsl php8.2-zip php8.2-bz2 libapache2-mod-php8.2 -y
Installieren Sie MariaDB:
Bash:
apt install mariadb-server mariadb-client -y
mysql_secure_installation
---
2. Einrichtung des Deadman-Switch
2.1 Verzeichnis erstellen:
Bash:
mkdir -p /var/www/deadman
chown www-data:www-data /var/www/deadman
chmod 700 /var/www/deadman
2.2 PHP-Skript erstellen:
Erstellen Sie die Datei `/var/www/deadman/index.php`:
Bash:
nano /var/www/deadman/index.php
Fügen Sie den folgenden PHP-Code ein:
PHP:
<?php
// Pfad zur Lebenszeichen-Datei
$deadman_file = "/home/deadman/deadman.lock";
$message = "";
// Prüfen, ob der Button geklickt wurde
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (file_exists($deadman_file)) {
$message = "Lebenszeichen wurde bereits gesetzt: " . date("Y-m-d H:i:s", filemtime($deadman_file));
} else {
if (touch($deadman_file)) {
$message = "Lebenszeichen erfolgreich gesetzt: " . date("Y-m-d H:i:s");
} else {
$message = "Fehler: Lebenszeichen konnte nicht gesetzt werden.";
}
}
}
?>
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Deadman-Switch</title>
</head>
<body>
<h1>Deadman-Switch</h1>
<p>Bestätige dein Lebenszeichen, um den Server zu sichern.</p>
<form method="POST">
<button type="submit">Jetzt Lebenszeichen geben</button>
</form>
<?php if (!empty($message)): ?>
<p><strong><?php echo htmlspecialchars($message); ?></strong></p>
<?php endif; ?>
</body>
</html>
Setzen Sie die Berechtigungen:
Bash:
chown www-data:www-data /var/www/deadman/index.php
chmod 644 /var/www/deadman/index.php
---
3. Passwortschutz hinzufügen
Erstellen Sie die Datei `/var/www/deadman/.htaccess`:
Bash:
nano /var/www/deadman/.htaccess
Inhalt:
Code:
AuthType Basic
AuthName "Geschützt"
AuthUserFile /var/www/deadman/.htpasswd
Require valid-user
Erstellen Sie die Passwort-Datei:
Bash:
htpasswd -c /var/www/deadman/.htpasswd username
chown www-data:www-data /var/www/deadman/.htpasswd
chmod 600 /var/www/deadman/.htpasswd
systemctl restart apache2
---
4. Apache Virtual Host anpassen
Ändern Sie den DocumentRoot des Standard-Virtual-Hosts auf `/var/www/deadman`:
Bash:
nano /etc/apache2/sites-available/000-default.conf
Ändern Sie den Inhalt wie folgt:
Code:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/deadman
<Directory /var/www/deadman>
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Starten Sie Apache neu:
Bash:
systemctl restart apache2
---
5. Deadman-Check-Skript erstellen
Erstellen Sie die Datei `/home/deadman/deadman_check.sh`:
Bash:
mkdir -p /home/deadman
chown www-data:www-data /home/deadman
chmod 700 /home/deadman
nano /home/deadman/deadman_check.sh
Inhalt:
Bash:
#!/bin/bash
# Pfad zur Lebenszeichen-Datei
DEADMAN_FILE="/home/deadman/deadman.lock"
# Aktuelles Datum (im Format YYYY-MM-DD)
CURRENT_DATE=$(date +%Y-%m-%d)
# Prüfen, ob die Lebenszeichen-Datei existiert
if [ -f "$DEADMAN_FILE" ] && [ "$(date -r "$DEADMAN_FILE" +%Y-%m-%d)" == "$CURRENT_DATE" ]; then
echo "Lebenszeichen ist aktuell. Server bleibt sicher."
echo "Entferne Lebenszeichen-Datei..."
rm -f "$DEADMAN_FILE"
else
echo "Kein aktuelles Lebenszeichen gefunden. Starte Selbstzerstörung."
/home/deadman/self_destruct.sh
fi
Setzen Sie die Berechtigungen:
Bash:
chmod +x /home/deadman/deadman_check.sh
---
6. Selbstzerstörungsskript erstellen
Erstellen Sie die Datei `/home/deadman/self_destruct.sh`:
Bash:
nano /home/deadman/self_destruct.sh
Inhalt:
Bash:
#!/bin/bash
echo "Starte unwiderrufliche Selbstzerstörung..."
# 1. Tools prüfen und installieren
check_and_install_tools() {
echo "Prüfe, ob alle notwendigen Tools vorhanden sind..."
REQUIRED_TOOLS=("shred" "dd" "umount" "lvchange" "vgchange" "wipefs" "fuser" "lsblk")
for TOOL in "${REQUIRED_TOOLS[@]}"; do
if ! command -v $TOOL &>/dev/null; then
echo "Tool '$TOOL' fehlt. Versuche, es zu installieren..."
apt-get update && apt-get install -y coreutils util-linux lvm2 || {
echo "Fehler: Konnte Tool '$TOOL' nicht installieren. Abbruch."
exit 1
}
else
echo "Tool '$TOOL' ist vorhanden."
fi
done
}
check_and_install_tools
# 2. Temporäres RAM-Dateisystem erstellen
RAMDISK="/mnt/ramdisk"
echo "Erstelle RAM-Disk für temporäre Tools..."
mkdir -p $RAMDISK
mount -t tmpfs -o size=128M tmpfs $RAMDISK || {
echo "Fehler: RAM-Disk konnte nicht erstellt werden."
exit 1
}
# Kopiere notwendige Tools ins RAM
echo "Kopiere Tools ins RAM..."
cp $(command -v shred) $RAMDISK/
cp $(command -v dd) $RAMDISK/
cp $(command -v umount) $RAMDISK/
cp $(command -v lvchange) $RAMDISK/
cp $(command -v vgchange) $RAMDISK/
cp $(command -v wipefs) $RAMDISK/
cp $(command -v fuser) $RAMDISK/
cp $(command -v lsblk) $RAMDISK/
export PATH=$RAMDISK:$PATH
# 3. Alle gemounteten Partitionen finden
echo "Finde alle gemounteten Partitionen..."
MOUNTED_PARTITIONS=$(awk '{print $1}' /proc/mounts | grep '^/dev/' | sort | uniq)
for PART in $MOUNTED_PARTITIONS; do
echo "Unmount Partition: $PART ..."
umount -f $PART 2>/dev/null || echo "Fehler beim Unmounten von $PART."
done
# 4. Logical Volumes deaktivieren
echo "Deaktiviere Logical Volumes..."
LVS=$(lvs --noheadings -o lv_path 2>/dev/null)
for LV in $LVS; do
echo "Deaktiviere Logical Volume: $LV ..."
lvchange -an $LV 2>/dev/null || echo "Fehler beim Deaktivieren von $LV."
done
echo "Deaktiviere Volume-Gruppen..."
vgchange -an 2>/dev/null || echo "Keine LVM-Gruppen zu deaktivieren."
# 5. Root-Dateisystem ins RAM verschieben und unmounten
echo "Wechsle ins RAM..."
mkdir -p $RAMDISK/root
mount --bind / $RAMDISK/root
pivot_root $RAMDISK/root $RAMDISK/root/old_root || {
echo "Fehler: Wechsel ins RAM fehlgeschlagen."
exit 1
}
# 6. Überschreiben aller Geräte
echo "Überschreibe alle Geräte..."
DEVICES=$(lsblk -dno NAME | grep -E '^vd|^sd')
for DEVICE in $DEVICES; do
echo "Überschreibe Gerät: /dev/$DEVICE ..."
shred -v -n 3 -z /dev/$DEVICE || echo "Fehler beim Überschreiben von /dev/$DEVICE."
done
# 7. RAM-Disk aufräumen
echo "Räume RAM-Disk auf..."
umount $RAMDISK/root/old_root
rm -rf $RAMDISK
# 8. System anhalten
echo "System wird angehalten."
echo 1 > /proc/sys/kernel/sysrq
echo o > /proc/sysrq-trigger
Setzen Sie die Berechtigungen:
Bash:
chmod +x /home/deadman/self_destruct.sh
---
7. Cron-Job einrichten
Richten Sie den Cron-Job ein, um das Deadman-Check-Skript täglich auszuführen:
Bash:
crontab -e
Eintrag:
Code:
0 0 * * * /home/deadman/deadman_check.sh
---
8. Nutzung
1. Öffnen Sie `http://<deine-server-ip>/`.
2. Melden Sie sich mit dem Passwort an und klicken Sie auf **"Jetzt Lebenszeichen geben"**.
3. Das System prüft täglich automatisch, ob das Lebenszeichen gesetzt wurde. Andernfalls wird die Selbstzerstörung ausgelöst.
Zuletzt bearbeitet: