Moin Moin!
Es geht um einen typischen Einsatz der Minirechner. Als Heizungssteuerung, Bestellsysteme etc. Hier ist eine DB unabdingbar und auch schützenswerte Daten drauf.
Datenschutz, hmm? Dann fang mal mit der physischen Sicherung an: Gehäuse um den Raspi, Gehäuse gegen unbefugten Zugriff sichern und/oder Raum gegen unbefugten Zugriff sichern.
Mein letzter Arbeitgeber hat einiges an Daten, die unter das Datenschutzgesetz fallen, entsprechend gesichert ist die Hardware: Eingesperrt in alarmgesicherte Räume, einbruchhemmende Wände und Türen, extra kleine bzw. gar keine Fenster im Raum, immer abgeschlossen, Zutrittskontrolle, Protokoll wer wann warum im Raum war, elektromagnetische Abschirmung, etc etc.
Da ich den 'Raspi' (Raspberry Pi) auch außer Hand gebe, wäre es nicht schlecht, auch den php-Quellcode zu schützen, weil doch etwas Arbeitszeit drin steckt :-). Wenn jemand das 'Prog' (Programm) gut findet,
Wenn die Software so aussieht wie Deine Postings, ... - ach, vergessen wir das und tun einfach mal so, als wäre es cool, W000rds zu verstüm udn zoo färvR3mdn. 2 7334 4u?
sollte er wenigstens fragen
Lustige Idee. Nicht mal die GPL v3 geht so weit.
und nicht einfach kopieren und anpassen
Das ist die Idee hinter Open Source. Ich finde etwas, kopiere es und passe es an meine Bedürfnisse an. Idealerweise gebe ich meine Änderungen zurück an den / die Entwickler, damit andere davon auch profitieren können UND die Änderungen in den nächsten Versionen gleich mit eingebaut sind.
In wie weit ich veränderte Software weitergeben darf oder muß, regeln die Lizenzen. Die BSD-Leute sind da sehr freigibig, quasi mach was Du willst, so lange im Sourcecode und irgendwo in der Doku steht, dass Du bei uns geklaut hast. Die GPL-Leute zwingen Dich dazu, auch den von dir veränderten Sourcecode weiterzugeben. Oder Du schreibst stumpf "Public Domain" oben drauf und jeder darf kopieren und weiter verkaufen, wie es ihm Spaß macht. Oder Du sagst stumpf: "Meins, Finger weg." Das ist in Deutschland default (Urheberrecht).
:-|
Dann benutz eben keine Scripte oder verkauf das Zeug mit passenden Lizenzbedingungen. Dem Raspi ist es egal, welche Software drauf läuft. Bau einen großen binären Blob, den Du auf die SD-Karte schreibst, zu dem niemand außer Dir den Sourcecode hat, und laß den alles erledigen, was Du bislang an Linux, PHP und MySQL delegierst.
Läuft MySQL Read-only? Wenn nein, ist es sinnfrei, die SD-Karte vor Veränderungen schützen zu wollen, denn MySQL verändert die SD-Karte! Das ist eine der Fragen. Was muss man tun, dass MySQL und PHP noch schreiben kann?
Die SD-Karte nicht vor Veränderungen schützen.
Du kannst natürlich auch das Ganze in zwei Teile teilen: Der Raspi bootet von der SD-Karte, mountet die als /, aber schreibgeschützt. Dazu kommt ein USB-Stick, auf dem legst Du die Verzeichnisse /home, /var/log, /var/lib/mysql an und mountest den unter /stick. Im Root-Dateisystem ist /home ein Symlink auf /stick/home, /var/log ein Symlink auf /stick/var/log, /var/lib/mysql ein Symlink auf /stick/var/lib/mysql. Entsprechend für weitere beschreibbare Verzeichnisse. /tmp und /var/tmp müssen schreibbar sein, enthalten aber i.d.R. kaum Daten und können quasi jederzeit weggebügelt werden. Deswegen nutzt man für /tmp und /var/tmp gerne eine RAMdisk, am einfachsten per tmpfs.
Netter Nebeneffekt: Software-Update geht einfach durch Tausch der SD-Karte.
USB-Sticks gibt's auch mit Hardware-Verschlüsselung und eigener Tastatur für den Schlüssel (viel Schrott und ein paar ernsthaft gut verschlüsselte), das schont den Raspi, macht den Boot-Vorgang aber etwas umständlich: Das System kann erst dann vollständig booten, wenn der Stick manuell freigeschaltet wurde.
Linux kann auch mit einem verschlüsselten Root-Dateisystem arbeiten. Du mußt nur irgendwann einen Schlüssel angeben. Der liegt meistens Passwort-geschützt im Bootloader bzw. der initrd, und irgendwie muß das Passwort eingegeben werden, meist per Tastatur oder SSH. Wenn Du dann verhindest, dass man auf irgendeine Art und Weise im laufenden Betrieb an das Dateisystem kommt (kein SSH, kein FTP, kein Telnet, 100% abgedichteter Webserver, 100% abgedichtete Scripte) UND dass man die Karte offline in irgendeiner Linux-Kiste entschlüsselt bekommt, hast Du gewonnen.
Du kannst Dich ja man an den alten Igel Thin Clients orientieren. Die Kisten booten Linux von einer als Harddisk angeschlossenen CF-Karte mit einem eigenen Bootloader und nutzen ein eigenes, Igel-spezifisches Dateisystem. Das ist nicht perfekt dicht, weil die Igel-Software den Zugriff auf das Dateisystem nicht komplett verhindert (es gibt eine lokale Shell), aber in einen Cardreader gesteckt kann man mit dem Igel-Dateisystem auf der CF-Karte nicht viel anfangen. Hätten die Igel-Leute zwischen ihr Dateisystem und die CF-Karte noch eine Verschlüsselungsebene gelegt und die lokale Shell abgeriegelt, gäbe es kaum eine Chance, irgendetwas vom Igel-Linux auszulesen oder zu verändern, egal ob online oder offline.
Fang mal damit an, nach truecrypt zu suchen. Zitat: "Dort erfolgt der Hinweis, dass die Entwicklung von TrueCrypt eingestellt wurde und TrueCrypt Sicherheitslücken enthalten könne. Außerdem wird nur noch die Version 7.2 von Truecrypt zum Download angeboten, welche zwar Daten entschlüsseln, aber nicht mehr verschlüsseln kann und vor ihrer eigenen Unsicherheit warnt."
Was gibt's den sonst noch bekanntes zum verschlüsseln von Verzeichnissen?
Seufz
Wikipedia TrueCrypt: "Auf TrueCrypt basierende oder kompatible Projekte: tcplay [...] VeraCrypt [...]" Der Artikel ist aus der Kategorie:Festplattenverschlüsselung", die folgende weitere Software verlinkt:
BestCrypt - Windows BoxCryptor - Windows CrossCrypt - Windows + Linux, nutzt Container, externes Programm DiskCryptor - Windows Dm-crypt - Linux, Teil des Kernels seit 2.6 ECryptfs - Linux, Teil des Kernels seit 2.6.19 Encrypting File System - Windows FileVault - MacOS X Free CompuSec - Windows FreeOTFE - Windows, Windows CE SafeGuard Easy - Windows
Alexander
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".