• Bygg ett webbgränssnitt för att lista och säkert förstöra hårddiskar med shred och PHP

    När undertecknad en gång i fornstora dar gjorde sin plikt för fosterlandet, var undertecknad stationerad på en ö någonstans i Sverige. På denna ö samlade man in data på dåtidens minidatorer (VAX:ar). När banden till dessa VAX:ar skulle förstöras åkte man till en hamn på ön och eldade upp banden – man förstörde dem rent fysiskt. Detta var dock ett stort resursslöseri. Med den lösning vi presenterar kan man i stället förstöra innehållet på diskarna på ett säkert sätt och sedan återbruka dem, utan att någon kan återskapa informationen.

    En Svensk tiger, förstör innehållet på gamla hårddiskar är ett måste.

    Att säkert förstöra innehållet på en hårddisk är avgörande i många sammanhang, till exempel vid återvinning, återanvändning eller avyttring av gammal IT-utrustning. Den här artikeln beskriver hur du sätter upp ett webbgränssnitt där du kan lista datorns anslutna hårddiskar och på ett säkert sätt skriva över vald disk med hjälp av shred. Lösningen är tänkt att användas lokalt på maskinen, exempelvis i en verkstad eller på en isolerad maskin.

    Förutsättningar

    För att följa guiden behöver du:

    • Ett Linux-system med:
      • Apache eller Nginx installerat
      • PHP installerat
      • lsblk, lsof och shred tillgängliga
    • Root-behörighet för att justera sudo-regler
    • Grundläggande kunskap om terminalen

    Katalogstruktur

    Alla nödvändiga filer placeras i webbserverns dokumentrot, vanligtvis /var/www/html/. Strukturen ser ut så här:

    /var/www/html/index.html
    /var/www/html/list_disks.php
    /var/www/html/check_processes.php
    /var/www/html/destroy_disk.php

    Gränssnitt och funktion

    Webbgränssnittet består av en HTML-sida med JavaScript som:

    • Hämtar lista på anslutna diskar via AJAX
    • Visar valbara parametrar för shred
    • Kontrollerar om någon process använder vald disk
    • Utför radering med shred via sudo
    • Visar realtidsutmatning från shred direkt i webbläsaren

    PHP-skript

    list_disks.php

    Returnerar en JSON-lista på tillgängliga diskar baserat på lsblk.

    check_processes.php

    Kontrollerar om någon process har öppna filer mot den valda disken via lsof.

    destroy_disk.php

    Kör shred med valda parametrar och visar utmatning i realtid. Skriptet använder sudo för att få nödvändiga rättigheter.

    Köra shred som root

    För att webbserverns användare (oftast www-data) ska kunna köra shred och lsof med root-behörighet krävs justering i sudoers.

    Öppna terminalen och kör:

    sudo visudo

    Lägg till följande rader:

    www-data ALL=(ALL) NOPASSWD: /usr/bin/shred
    www-data ALL=(ALL) NOPASSWD: /usr/bin/lsof

    Därmed kan webbservern köra just dessa kommandon utan lösenord, men ingenting annat som root.

    Starta och testa

    Öppna webbläsaren och gå till:

    http://localhost/index.html

    Om allt är rätt konfigurerat visas en lista på tillgängliga diskar. Du kan välja disk, justera parametrar för shred och påbörja raderingen. Utmatningen från shred visas i realtid.

    Säkerhetsaspekter

    Det här systemet är avsett att köras på en isolerad maskin, exempelvis i en verkstad eller i en destruktionsmiljö. Det ska inte exponeras på öppet nätverk.

    Gränssnittet innehåller grundläggande validering, men vidare säkerhetsåtgärder som inloggning eller flerstegsbekräftelser rekommenderas om systemet används utanför strikt kontrollerad miljö.

    Felsökning

    Om diskarna inte listas eller systemet inte fungerar som förväntat, kontrollera följande:

    • Testa att surfa direkt till list_disks.php. Du ska se en JSON-lista.
    • Kontrollera filrättigheter i /var/www/html.
    • Kontrollera serverns fel-loggar, exempelvis /var/log/apache2/error.log.
    • Säkerställ att shred och lsof finns i /usr/bin/ och är exekverbara.
    • Bekräfta att sudoers-regeln är korrekt.
    Skärmdump på skriptet i drift.

    Avslutning

    Med denna lösning får du ett enkelt och effektivt webbgränssnitt för att säkert förstöra hårddiskar med hjälp av shred. Rätt konfiguration av webbserver, PHP och sudo är avgörande för att systemet ska fungera säkert och pålitligt. Lösningen är avsedd för lokala miljöer och bör aldrig exponeras för internet utan ytterligare skyddsåtgärder.

    Koden : https://www.linux.se/kod/DestroDisk.tar.bz2

    Linux.se har verifierat att detta skript fungerar. Det rekommenderas starkt att köra det här projektet på en ”slaskmaskin”. Kör inte detta skript på en maskin där du har viktig data – ett misstag och du har ingen data kvar. Vi har testat det på Ubuntu Server 24.04 LTS på en gammal, sliten laptop med en inkopplad hårddiskvagga.

Bygg ett webbgränssnitt för att lista och säkert förstöra hårddiskar med shred och PHP

När undertecknad en gång i fornstora dar gjorde sin plikt för fosterlandet, var undertecknad stationerad på en ö någonstans i Sverige. På denna ö samlade man in data på dåtidens minidatorer (VAX:ar). När banden till dessa VAX:ar skulle förstöras åkte man till en hamn på ön och eldade upp banden – man förstörde dem rent fysiskt. Detta var dock ett stort resursslöseri. Med den lösning vi presenterar kan man i stället förstöra innehållet på diskarna på ett säkert sätt och sedan återbruka dem, utan att någon kan återskapa informationen.

En Svensk tiger, förstör innehållet på gamla hårddiskar är ett måste.

Att säkert förstöra innehållet på en hårddisk är avgörande i många sammanhang, till exempel vid återvinning, återanvändning eller avyttring av gammal IT-utrustning. Den här artikeln beskriver hur du sätter upp ett webbgränssnitt där du kan lista datorns anslutna hårddiskar och på ett säkert sätt skriva över vald disk med hjälp av shred. Lösningen är tänkt att användas lokalt på maskinen, exempelvis i en verkstad eller på en isolerad maskin.

Förutsättningar

För att följa guiden behöver du:

  • Ett Linux-system med:
    • Apache eller Nginx installerat
    • PHP installerat
    • lsblk, lsof och shred tillgängliga
  • Root-behörighet för att justera sudo-regler
  • Grundläggande kunskap om terminalen

Katalogstruktur

Alla nödvändiga filer placeras i webbserverns dokumentrot, vanligtvis /var/www/html/. Strukturen ser ut så här:

/var/www/html/index.html
/var/www/html/list_disks.php
/var/www/html/check_processes.php
/var/www/html/destroy_disk.php

Gränssnitt och funktion

Webbgränssnittet består av en HTML-sida med JavaScript som:

  • Hämtar lista på anslutna diskar via AJAX
  • Visar valbara parametrar för shred
  • Kontrollerar om någon process använder vald disk
  • Utför radering med shred via sudo
  • Visar realtidsutmatning från shred direkt i webbläsaren

PHP-skript

list_disks.php

Returnerar en JSON-lista på tillgängliga diskar baserat på lsblk.

check_processes.php

Kontrollerar om någon process har öppna filer mot den valda disken via lsof.

destroy_disk.php

Kör shred med valda parametrar och visar utmatning i realtid. Skriptet använder sudo för att få nödvändiga rättigheter.

Köra shred som root

För att webbserverns användare (oftast www-data) ska kunna köra shred och lsof med root-behörighet krävs justering i sudoers.

Öppna terminalen och kör:

sudo visudo

Lägg till följande rader:

www-data ALL=(ALL) NOPASSWD: /usr/bin/shred
www-data ALL=(ALL) NOPASSWD: /usr/bin/lsof

Därmed kan webbservern köra just dessa kommandon utan lösenord, men ingenting annat som root.

Starta och testa

Öppna webbläsaren och gå till:

http://localhost/index.html

Om allt är rätt konfigurerat visas en lista på tillgängliga diskar. Du kan välja disk, justera parametrar för shred och påbörja raderingen. Utmatningen från shred visas i realtid.

Säkerhetsaspekter

Det här systemet är avsett att köras på en isolerad maskin, exempelvis i en verkstad eller i en destruktionsmiljö. Det ska inte exponeras på öppet nätverk.

Gränssnittet innehåller grundläggande validering, men vidare säkerhetsåtgärder som inloggning eller flerstegsbekräftelser rekommenderas om systemet används utanför strikt kontrollerad miljö.

Felsökning

Om diskarna inte listas eller systemet inte fungerar som förväntat, kontrollera följande:

  • Testa att surfa direkt till list_disks.php. Du ska se en JSON-lista.
  • Kontrollera filrättigheter i /var/www/html.
  • Kontrollera serverns fel-loggar, exempelvis /var/log/apache2/error.log.
  • Säkerställ att shred och lsof finns i /usr/bin/ och är exekverbara.
  • Bekräfta att sudoers-regeln är korrekt.
Skärmdump på skriptet i drift.

Avslutning

Med denna lösning får du ett enkelt och effektivt webbgränssnitt för att säkert förstöra hårddiskar med hjälp av shred. Rätt konfiguration av webbserver, PHP och sudo är avgörande för att systemet ska fungera säkert och pålitligt. Lösningen är avsedd för lokala miljöer och bör aldrig exponeras för internet utan ytterligare skyddsåtgärder.

Koden : https://www.linux.se/kod/DestroDisk.tar.bz2

Linux.se har verifierat att detta skript fungerar. Det rekommenderas starkt att köra det här projektet på en ”slaskmaskin”. Kör inte detta skript på en maskin där du har viktig data – ett misstag och du har ingen data kvar. Vi har testat det på Ubuntu Server 24.04 LTS på en gammal, sliten laptop med en inkopplad hårddiskvagga.