Comment configurer une distribution Linux pour s'autodétruire (pour tout effacer de la partition système) via un script

11

Je contribuerai à faciliter un cours utilisant un logiciel sous licence. Le logiciel est un peu cher et n'autorise qu'un nombre limité d'installations simultanées. Je vais donc installer une instance sur un disque virtuel chiffré avec Ubuntu (ou un autre type de linux) installé. Juste pour réduire les risques de piratage inutile, j'ai l'intention de programmer (à l'aide de cron) un script d'autodestruction à exécuter immédiatement après le dernier jour du cours. (Ou au plus tard, lors de la première instance de démarrage après le dernier jour.)

Bien que j'aime les logiciels gratuits et les projets open source (et le crowd sourcing en général), j'ai également un respect sain pour les logiciels commerciaux et le temps et les efforts consacrés par les développeurs à la conception d'un bon produit. vouloir finir par contribuer par inadvertance au piratage de leur sang, de leur sueur et de leurs larmes.

Apprécierait toute idée sur la façon d'implémenter ce script d'autodestruction sur une machine Linux.

techtechmo
la source
2
Je ne sais pas pourquoi cela a été voté. C'est une question légitime avec une valeur légitime.
BinaryMisfit
Bonne question. Merci d'avoir cherché des développeurs de logiciels. +1
D'Arvit
Je ne suis pas sûr que cela va vraiment faire avancer vos objectifs. S'ils envisagent de voler le logiciel, ils vont probablement récupérer une copie de la machine virtuelle pendant le cours. Ils pourront y aller à loisir. Ils peuvent toujours démarrer la VM à partir d'un live-cd afin d'examiner la chose pour comprendre ce que vous avez fait.
Michael Kohne
Merci à tous ceux qui ont répondu, je suis reconnaissant pour la contribution. :)
techtechmo

Réponses:

3

Comme mentionné à plusieurs reprises, la suppression de l'image cryptée devrait suffire amplement. Une autre approche consisterait à installer l’application sur sa propre partition, puis à l’effacer avec dd.

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

Cela écrasera tout avec zéro, ce qui est suffisant pour supprimer les données au-delà de la récupération.

OliverS
la source
Donc, pour clarifier, une fois que le script est exécuté, le système s’efface de la partition (dans ce cas virtuelle), et il n’ya pas d’annulation? Cela ressemble à ce que je compte faire. :) Et si, par exemple, je dis à la machine virtuelle de ne mettre que quelques secondes hors tension, la commande s'exécute? Bien que le système puisse être accessible, il serait théoriquement toujours possible de monter les parties non supprimées du disque, n'est-ce pas? Peut-être que la première étape du script devrait être de supprimer d'abord le logiciel, puis d'exécuter le script d'autodestruction?
techtechmo
Eh bien, si l'utilisateur est connecté en tant qu'utilisateur avec les autorisations appropriées, ET s'il sait ce qui se passe, il pourrait alors, en théorie, tuer la commande 'dd', mais pas avant qu'elle ne cause beaucoup de dommages (les tables de partition). sont près de l'avant du disque, par exemple).
Michael Kohne
5

Tout détruire semble un peu exagéré, que diriez-vous de simplement supprimer / installer votre programme.

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

Ou que diriez-vous d'implémenter un serveur de licences normal que le programme doit contacter avant de pouvoir démarrer?


Mettre à jour : En tant que question ouverte, envisagez-vous de détruire les données des utilisateurs ainsi que votre programme? Ou les données des utilisateurs sont-elles stockées ailleurs?

Et peut-être que l'utilisateur devrait recevoir une sorte de message malveillant indiquant que vous envisagez de tout détruire! Quelque chose comme

- "Ce logiciel s'autodétruira si vous ne payez pas plus d'argent, vous avez X   Jours restants."

En tant qu'utilisateur, je serais vraiment contrarié si vous détruisiez quelque chose dans mon ordinateur sans même me dire que cela était sur le point de se produire (j'ai donc au moins une chance d'affecter le résultat).

C'est un peu dommage pour votre entreprise si tous vos clients payants finissaient par vous haïr.

Johan
la source
Comme je l'avais mentionné, le logiciel sera inséré dans un lecteur virtuel spécialement créé pour le cours. Il s’agit d’un environnement isolé, sans fichier utilisateur, destiné en particulier à permettre aux participants de suivre une formation pratique avec un logiciel. Une chose contre laquelle je veux me protéger est que quelqu'un copie ce disque virtuel sur, disons, un lecteur USB et finisse par pirater le logiciel qu'il contient. Par conséquent, je souhaite volontairement mettre le système en état de s'autodétruire juste après le cours afin de minimiser les chances qu'une telle situation se produise. Votre inquiétude est bien sûr valable, merci du partage :)
techtechmo
En passant, ils n'achètent en aucun cas une licence du logiciel à utiliser. Et compte tenu de la notoriété de la piraterie dans mon coin du monde, je préférerais faire des préparatifs en supposant le pire, mais en travaillant pour le meilleur. :)
techtechmo
2

Un peu vieux mais ok. Selon cette configuration, je préférerais en effet simplement chiffrer le système de fichiers de la machine virtuelle et, pendant les sessions (à condition qu’elles soient en réseau), vous vous connecteriez à distance. S'ils voulaient copier la machine virtuelle, ils devraient forcer le mot de passe, ce que vos utilisateurs ne devraient pas faire :)

c'est-à-dire que si vous le permettez, vous pouvez chiffrer un point de montage: Remarque: ce système de protection est apparemment illégal dans certains pays / états? (bon aux USA mais vous semblez être de l'Angleterre?):

Configuration d’un montage chiffré avec mot de passe:

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>

Maintenant, installez / déplacez votre programme dans / le programme

(Chaque fois que vous souhaitez accéder au programme / recommencez):

montage

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

démonter

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

Une fois terminé, faites en sorte que le dossier du logiciel ressemble à un fichier d'octets aléatoires.

Vous pouvez également vous assurer que les comptes d’utilisateur qu’ils utilisent lors de la session de la machine virtuelle n’ont pas su droits au cas où ils copient la chose entière.

mike-delft
la source
0

Je ne sais pas quelle est votre configuration, mais si vous pouvez exiger que vos utilisateurs soient en ligne, vous voudrez peut-être adopter une tactique différente: essayez de charger le logiciel via une connexion réseau chaque fois qu'ils l'exécutent. C’est seulement viable, et cela dépend de votre capacité à émettre une sorte d’identifiant aux utilisateurs individuels. Vous auriez un stub sur la VM, et le stub monterait automatiquement un serveur distant et exécuterait le binaire à partir de là. Rien qui ne leur permette pas de travailler avec un peu de travail, mais ce serait au moins plus difficile que de contourner l'autodestruction.

Vous pouvez également demander au serveur distant de répondre avec des clés et de conserver une version chiffrée du programme sur le disque. Le module interroge le serveur pour obtenir les clés, déchiffre et exécute le programme, en supprimant le fichier binaire déchiffré, le cas échéant. Cela serait également plus difficile à utiliser, mais nécessiterait à nouveau des identifiants d’utilisateur uniques (ce qui pourrait ne pas être possible pour vous).

Michael Kohne
la source
Belle idée, mais je pense que quelque chose comme cela exigerait un peu d'expérience et de confort dans la mise en œuvre du système que vous avez décrit - malheureusement, je n'ai pas ce luxe. :) La manipulation du logiciel se fera dans la pièce où je faciliterai la tâche, mais je ne veux pas être obligé de regarder par-dessus mon épaule. Votre commentaire dans la question correspond précisément à ce que je prévois - même s’ils récupèrent une copie de la machine virtuelle, lors de son prochain démarrage, la machine virtuelle devrait s’effacer de tout nettoyer. (Bien entendu, je ne mentionnerai même pas l'existence du script de suppression de tout.)
techtechmo
Le problème est qu’une fois que la machine virtuelle se détruit elle-même, une autre copie de leur clé USB est installée, une machine virtuelle démarre à partir d’un live CD et une fouille jusqu’à ce qu’ils découvrent ce qu’elle fait pour se tuer. Tant que vous êtes à l'aise avec le fait qu'un utilisateur suffisamment motivé peut le contourner, vous êtes en or. Il ne vous reste plus qu'à mettre à jour l'image de la VM avant chaque cours ...
Michael Kohne
Je vais chiffrer le système de fichiers de la VM lors de l’installation (heureusement, ce sera ma première tentative), c’est donc un autre moyen de dissuader les voleurs potentiels. Comme je l'ai dit, tous ces problèmes seraient sans doute exagérés - l'utilisateur moyen peut ne pas penser que cela en vaut la peine de continuer à fouiller. Mais je préférerais de toute façon supposer le pire, le piratage est la norme ici. Le logiciel que je vais utiliser est natif de Windows: heureusement, cela fonctionne sous Linux via Wine. Et je préférerais tout préparer sous Linux, car honnêtement, il sera beaucoup plus difficile de pirater le logiciel à partir de là. Merci encore!
techtechmo