So setzen Sie eine Linux-Verteilung über ein Skript auf Selbstzerstörung (um alles von der Systempartition zu löschen)

11

Ich werde helfen, einen Kurs zu ermöglichen, der lizenzierte Software verwendet. Die Software ist etwas teuer und erlaubt nur eine begrenzte Anzahl gleichzeitiger Installationen. Ich werde also eine Instanz auf einer verschlüsselten virtuellen Festplatte mit Ubuntu (oder einer anderen Linux-Variante) installieren. Um die Wahrscheinlichkeit unnötiger Raubkopien zu verringern, beabsichtige ich, (mithilfe von cron) ein Selbstzerstörungsskript zu planen, das unmittelbar nach dem letzten Tag des Kurses ausgeführt wird. (Oder spätestens während des ersten Startvorgangs nach dem letzten Tag.)

So sehr ich Freeware- und Open-Source-Projekte (und Crowd-Sourcing im Allgemeinen) liebe, habe ich auch einen gesunden Respekt vor kommerzieller Software und der Zeit und Mühe, die die Entwickler in die Entwicklung eines guten Produkts gesteckt haben - das tue ich nicht wollen am Ende versehentlich zur Piraterie ihres Blutes, Schweißes und ihrer Tränen beitragen.

Würde mich über jede Idee freuen, wie dieses Selbstzerstörungsskript auf einem Linux-Computer implementiert werden kann.

techtechmo
quelle
2
Ich bin mir nicht sicher, warum dies abgelehnt wurde. Es ist eine legitime Frage mit legitimem Wert.
BinaryMisfit
Gute Frage. Vielen Dank, dass Sie sich nach Softwareentwicklern umgesehen haben. +1
D'Arvit
Ich bin mir nicht sicher, ob dies Ihre Ziele wirklich fördern wird. Wenn sie vorhaben, die Software zu stehlen, werden sie wahrscheinlich während des Kurses eine Kopie der VM abrufen. Sie werden in der Lage sein, nach Belieben damit zu schrauben. Sie können die VM jederzeit von einer Live-CD booten, um die Sache zu untersuchen und herauszufinden, was Sie getan haben.
Michael Kohne
Vielen Dank an alle, die eine Antwort gegeben haben, ich bin dankbar für die Eingabe. :)
Techtechmo

Antworten:

3

Wie bereits mehrfach erwähnt, sollte das Löschen des verschlüsselten Bildes mehr als ausreichend sein. Ein anderer Ansatz wäre, die Anwendung auf einer eigenen Partition zu installieren und anschließend mit dd zu löschen.

dd if=/dev/zero of=/dev/TARGETPARTITION bs=1M

Dadurch wird alles mit Null überschrieben, was ausreicht, um die Daten bis zur Wiederherstellung zu löschen.

OliverS
quelle
Nur zur Klarstellung: Sobald das Skript ausgeführt wird, löscht sich das System von der (in diesem Fall virtuellen) Partition und es gibt keinen Abbruch? Das klingt nach dem, was ich vorhabe. :) Was ist, wenn ich zum Beispiel der virtuellen Maschine sage, dass sie den Befehl nur wenige Sekunden lang ausschalten soll? Obwohl auf das System zugegriffen werden kann, wäre es theoretisch immer noch möglich, die nicht gelöschten Teile der Festplatte zu mounten, oder? Vielleicht sollte der erste Schritt des Skripts darin bestehen, zuerst die Software zu entfernen und dann das Selbstzerstörungsskript auszuführen?
Techtechmo
Nun, wenn der Benutzer als Benutzer mit den entsprechenden Berechtigungen angemeldet ist UND wenn er weiß, was los ist, kann er theoretisch den Befehl 'dd' beenden, aber nicht bevor er großen Schaden anrichtet (die Partitionstabellen) befinden sich beispielsweise in der Nähe der Vorderseite der Festplatte).
Michael Kohne
6

Alles zu zerstören scheint ein wenig übertrieben zu sein. Wie wäre es, wenn Sie einfach Ihr Programm entfernen / deinstallieren.

rm -rf /path/to/your/program/ 

Oder wie wäre es, wenn Sie einen normalen Lizenzserver implementieren, den das Programm kontaktieren muss, bevor es gestartet werden kann?


Update : Planen Sie als offene Frage, die Benutzerdaten sowie Ihr Programm zu zerstören? Oder werden die Benutzerdaten an anderer Stelle gespeichert?

Und vielleicht sollte der Benutzer eine Art Nagware-Hinweis erhalten, dass Sie planen, alles zu zerstören! Etwas wie

- "Diese Software zerstört sich selbst, wenn Sie nicht mehr Geld bezahlen. Sie haben noch X Tage Zeit."

Als Benutzer wäre ich wirklich verärgert, wenn Sie nur etwas in meinem Computer zerstören würden, ohne mir zu sagen, dass dies passieren würde (also hätte ich zumindest eine Chance, das Ergebnis zu beeinflussen).

Es ist irgendwie schlecht für Ihr Unternehmen, wenn alle Ihre zahlenden Kunden Sie am Ende hassen würden.

Johan
quelle
Wie bereits erwähnt, befindet sich die Software auf einem virtuellen Laufwerk, das speziell für den Kurs erstellt wurde. Es handelt sich um eine isolierte Umgebung ohne Benutzerdateien, die den Teilnehmern insbesondere das praktische Training mit einer Software ermöglichen soll. Eine Sache, vor der ich mich schützen möchte, ist, dass jemand dieses virtuelle Laufwerk beispielsweise auf ein USB-Laufwerk kopiert und letztendlich die darin enthaltene Software raubkopiert. Daher möchte ich das System absichtlich so einstellen, dass es sich direkt nach dem Kurs selbst zerstört, um die Wahrscheinlichkeit zu minimieren, dass so etwas passiert. Ihr Anliegen ist natürlich gültig, danke für das Teilen. :)
techtechmo
Übrigens kaufen sie in keiner Weise eine Lizenz für die zu verwendende Software. Und wenn man bedenkt, wie berüchtigt Piraterie in meinem Teil der Welt ist, würde ich lieber Vorbereitungen treffen, wenn ich das Schlimmste annehme, aber für das Beste arbeite. :)
Techtechmo
2

Ein bisschen alt aber ok. Nach diesem Setup würde ich das VM-Dateisystem lieber verschlüsseln, und während Sitzungen (vorausgesetzt, sie sind vernetzt) ​​würden Sie sich remote anmelden. Wenn sie die VM kopieren würden, müssten sie das Passwort brutal erzwingen, kaum was Ihre Benutzer tun sollten :)

Wenn es Ihnen nichts ausmacht, können Sie einen Mountpoint verschlüsseln: Hinweis: Dieses Schutzsystem ist anscheinend in einigen Ländern / Staaten illegal? (Nun, in den USA, aber Sie scheinen aus England zu kommen?):

Einrichten eines verschlüsselten, kennwortgeschützten Mount:

dd if=/dev/urandom of=/home/user/virtualfolder bs=16065b count=100  
modprobe loop  
modprobe cryptoloop  
modprobe aes  
losetup -e aes /dev/loop1 ./virtualfolder  
password: <enter your password here which you don't show to the users>  
mkreiserfs /dev/loop1  
mkdir /theprogram  
mount -o loop,encryption=aes,acl ./virtualdrive /theprogram  
password:<enter the same passy>

Installieren / verschieben Sie nun Ihr Programm in / theprogram

(Jedes Mal, wenn Sie auf das Programm zugreifen möchten, tun Sie dies erneut):

Montage

mount -o loop,encryption=aes,acl ./virtualdrive /theprogram  
password:<enter the same passy>

Abmontage

umount /theprogram  
losetup -d /dev/loop1  
rmmod aes  
rmmod cryptoloop  
rmmod loop 

Wenn Sie fertig sind, lassen Sie den Softwareordner wie eine Datei mit zufälligen Bytes aussehen.

Sie können auch sicherstellen, dass die Benutzerkonten, die sie während der VM-Sitzung verwenden, keine suRechte haben , falls sie das Ganze kopieren.

mike-delft
quelle
0

Ich weiß nicht, was Ihr Setup ist, aber wenn Sie verlangen können, dass Ihre Benutzer online sind, möchten Sie möglicherweise eine andere Taktik anwenden - versuchen Sie, die Software über eine Netzwerkverbindung zu laden, wenn sie ausgeführt wird. Dies ist nur möglich und hängt davon ab, ob Sie den einzelnen Benutzern eine ID ausstellen können. Sie hätten einen Stub auf der VM, und der Stub würde einen Remote-Server automatisch mounten und die Binärdatei von dort aus ausführen. Nichts, was sie mit ein bisschen Arbeit nicht umgehen könnten, aber es wäre zumindest schwieriger, als die automatische Zerstörung zu umgehen.

Alternativ können Sie den Remote-Server mit Schlüsseln antworten lassen und eine verschlüsselte Version des Programms auf der Festplatte speichern. Der Stub fragt den Server nach den Schlüsseln ab, entschlüsselt und führt das Programm aus und löscht die entschlüsselte Binärdatei entsprechend. Dies wäre auch schwieriger zu umgehen, erfordert jedoch wiederum eindeutige Benutzer-IDs (die für Sie möglicherweise nicht möglich sind).

Michael Kohne
quelle
Gute Idee, aber ich denke, so etwas würde etwas Erfahrung und Komfort bei der Implementierung des von Ihnen beschriebenen Systems erfordern - leider habe ich diesen Luxus nicht. :) Das praktische Arbeiten mit der Software wird in dem Raum durchgeführt, in dem ich moderieren werde, aber ich möchte nicht weiter über meine Schulter schauen müssen. Ihr Kommentar in der Frage ist genau das, was ich erwarte - selbst wenn sie eine Kopie der VM abrufen, sollte sich die VM beim nächsten Start von allem selbst löschen. (Ich werde natürlich nicht einmal die Existenz des Wipe-Everything-Skripts erwähnen.)
techtechmo
Das Problem ist, dass sie, sobald sie sehen, dass sich die VM selbst zerstört, einfach eine weitere Kopie von ihrem USB-Stick holen, die VM von einer Live-CD booten und herumstöbern, bis sie herausfinden, was sie tut, um sich selbst zu töten. Solange Sie mit der Tatsache vertraut sind, dass ein ausreichend motivierter Benutzer es umgehen kann, sind Sie golden. Dann müssen Sie nur noch das VM-Image vor jeder Klasse aktualisieren ...
Michael Kohne
Ich werde das VM-Dateisystem bei der Installation verschlüsseln (hoffentlich - es wird mein erster Versuch sein, dies zu tun), also ist dies ein weiteres Mittel, um potenzielle Diebe davon abzubringen. Wie ich bereits sagte, wäre all dieses Problem wahrscheinlich übertrieben - der durchschnittliche Benutzer glaubt möglicherweise nicht, dass es sich lohnt, weiter herumzustöbern. Aber ich würde wirklich lieber das Schlimmste annehmen - Piraterie ist hier die Norm. Die Software, die ich verwenden werde, stammt ursprünglich aus Windows: Gut, dass sie unter Linux über Wine funktioniert. Und ich würde lieber alles unter Linux vorbereiten, weil es ehrlich gesagt viel schwieriger sein wird, die Software von dort aus zu raubkopieren. Danke noch einmal!
Techtechmo