[Anleitung] Deadman-Switch mit automatischer Selbstzerstörung einrichten

13speedtest37

DDoS Gott
Teammitglied
Admin
31 Jan 2024
517
232
43
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:
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
Für Ubuntu:
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:
  • Like
Reaktionen: KronosIPTV

Über TV-Base.com

  • Willkommen bei TV-Base.com, dem Zentrum für Cardsharing und IPTV-Enthusiasten. Hier verbindet Leidenschaft für digitales Fernsehen Mitglieder aus aller Welt. Unser Forum bietet eine Plattform für Austausch, Wissen und Innovation. Egal ob Anfänger oder Experte, hier findet jeder Unterstützung und Inspiration. Treten Sie unserer Gemeinschaft bei und erkunden Sie die Zukunft des Fernsehens mit uns.

Quick Navigation

User Menu