Cómo configurar una distribución de Linux para autodestruirse (para borrar todo de la partición del sistema) a través de un script

11

Ayudaré a facilitar un curso que use software con licencia. El software es algo costoso y solo permite un número limitado de instalaciones concurrentes, por lo que lo que haré es instalar una instancia en un disco virtual encriptado con Ubuntu (o algún otro tipo de Linux) instalado. Solo para disminuir la posibilidad de que se produzca una piratería innecesaria, tengo la intención de programar (usando cron) un script de autodestrucción que se ejecute inmediatamente después del último día del curso. (O a más tardar, durante la primera instancia de arranque después del último día).

Por mucho que me encanten los programas gratuitos y de código abierto (y el crowdsourcing en general), también tengo un gran respeto por el software comercial y el tiempo y el esfuerzo que los desarrolladores han dedicado a crear un buen producto. quieren terminar contribuyendo inadvertidamente a la piratería de su sangre, sudor y lágrimas.

Agradecería cualquier idea sobre cómo implementar este script de autodestrucción en una máquina Linux.

techtechmo
fuente
2
No estoy seguro de por qué esto fue rechazado. Es una pregunta legítima con valor legítimo.
BinaryMisfit
Buena pregunta. Gracias por buscar desarrolladores de software. +1
D'Arvit
No estoy seguro de que esto realmente va a impulsar tus objetivos. Si planean robar el software, probablemente tomarán una copia de la VM durante el curso. Podrán jugar con él cuando lo deseen. Siempre pueden arrancar la VM desde un live-cd para examinar la cosa y descubrir lo que hiciste.
Michael Kohne el
Gracias a todos los que dieron una respuesta, estoy agradecido por el aporte. :)
techtechmo

Respuestas:

3

Como se mencionó varias veces, eliminar la imagen cifrada debería ser más que suficiente. Otro enfoque sería instalar la aplicación en su propia partición y luego borrarla con dd.

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

Esto sobrescribirá todo con cero, lo cual es suficiente para eliminar los datos más allá de la recuperación.

OliverS
fuente
Entonces, para aclarar, una vez que se ejecuta el script, el sistema se borrará de la partición (en este caso virtual), y no hay cancelación. Esto suena como lo que pretendo hacer. :) ¿Qué sucede si, por ejemplo, le digo a la máquina virtual que se apague solo unos segundos después de que se ejecute el comando? Aunque el sistema puede ser accesible, teóricamente aún sería posible montar las partes no eliminadas del disco, ¿verdad? ¿Quizás el primer paso del script debería ser eliminar primero el software y luego ejecutar el script de autodestrucción?
techtechmo
Bueno, si el usuario ha iniciado sesión como un usuario con los permisos apropiados, Y si sabe lo que está sucediendo, entonces, en teoría, podría matar el comando 'dd', pero no antes de que cause mucho daño (las tablas de partición están cerca del frente del disco, por ejemplo).
Michael Kohne el
6

Destruir todo parece ser un poco exagerado, ¿qué tal si eliminas / desinstalas tu programa?

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

¿O qué tal si implementa un servidor de licencias normal que el programa debe contactar antes de que pueda comenzar?


Actualización : Como pregunta abierta, ¿planea destruir los datos de los usuarios y su programa? ¿O los datos de los usuarios se almacenan en otro lugar?

¡Y tal vez el usuario debería recibir algún tipo de aviso de que usted planea destruir todo! Algo como

- "Este software se autodestruirá si no paga más dinero, le quedan X días".

Como usuario, estaría muy molesto si acabaras de destruir algo en mi computadora sin siquiera decirme que esto estaba por suceder (así que al menos tuve alguna posibilidad de afectar el resultado).

Es un poco malo para su empresa que todos sus clientes que pagan terminen odiando.

Johan
fuente
Como mencioné, el software estará en una unidad virtual creada específicamente para el curso. Es un entorno aislado sin ningún archivo de usuario destinado en particular a permitir a los participantes una formación práctica con un software. Una cosa de la que quiero proteger es que alguien copie esa Unidad Virtual en, por ejemplo, una Unidad USB y, en última instancia, piratee el software dentro. Por lo tanto, intencionalmente quiero configurar el sistema para autodestruirse justo después del curso para minimizar la posibilidad de que algo así suceda. Su preocupación es, por supuesto, válida, gracias por compartir. :)
techtechmo
Por cierto, de ninguna manera están comprando una licencia del software que se utilizará. Y considerando lo notoria que es la piratería en mi parte del mundo, preferiría hacer los preparativos asumiendo lo peor, pero trabajando para lo mejor. :)
techtechmo
2

Un poco viejo pero bien. De acuerdo con esa configuración, preferiría cifrar el sistema de archivos VM, y durante las sesiones (suponiendo que estén conectadas en red), debería iniciar sesión de forma remota. Si copiaran la máquina virtual, tendrían que aplicar fuerza bruta a la contraseña, apenas lo que sus usuarios deberían estar haciendo :)

es decir, si no le importa, puede cifrar un punto de montaje: Nota: ¿este sistema de protección es ilegal aparentemente en algunos países / estados? (bueno en EE. UU. pero parece que eres de Inglaterra?):

Configuración de un montaje encriptado, con contraseña:

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>

Ahora instale / mueva su programa a / theprogram

(Cada vez que quieras acceder / el programa vuelve a hacerlo):

montaje

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

desmontar

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

Cuando termine, haga que la carpeta del software parezca solo un archivo de bytes aleatorios.

También puede asegurarse de que las cuentas de usuario que usan durante la sesión de VM no tengan suderechos en caso de que copien todo.

Mike-Delft
fuente
0

No sé cuál es su configuración, pero si puede exigir a sus usuarios que estén en línea, entonces es posible que desee tomar una táctica diferente: intente cargar el software a través de una conexión de red cada vez que lo ejecuten. Esto solo es viable y depende de que pueda emitir algún tipo de identificación a los usuarios individuales. Tendría un apéndice en la máquina virtual, y el apéndice montaría automáticamente un servidor remoto y ejecutaría el binario desde allí. No hay nada que no puedan hacer con un poco de trabajo, pero al menos sería más difícil que evitar la autodestrucción.

Alternativamente, puede hacer que el servidor remoto responda con claves y mantener una versión cifrada del programa en el disco: el código auxiliar consulta las claves del servidor, descifra y ejecuta el programa, eliminando el binario descifrado según corresponda. Esto también sería más difícil de solucionar, pero de nuevo requiere identificadores de usuario únicos (que pueden no ser posibles para usted).

Michael Kohne
fuente
Buena idea, pero creo que algo como esto requeriría algo de experiencia y comodidad para implementar el sistema que usted ha descrito, desafortunadamente no tengo ese lujo. :) La práctica con el software se realizará en la sala donde voy a facilitar, sin embargo, no quiero tener que mirar por encima del hombro. Su comentario en la pregunta es precisamente lo que estoy anticipando: incluso si toman una copia de la VM, la próxima vez que la inicien, la VM debería limpiarse de todo. (Por supuesto, ni siquiera mencionaré la existencia del script de borrar todo)
Techtechmo
El problema es que una vez que ven que la VM se destruye a sí misma, simplemente obtienen otra copia de su memoria USB, arrancan la VM desde un CD en vivo y comienzan a hurgar hasta que descubren lo que hace para suicidarse. Mientras te sientas cómodo con el hecho de que un usuario suficientemente motivado puede evitarlo, entonces eres dorado. Entonces todo lo que tiene que hacer es actualizar la imagen de máquina virtual antes de cada clase ...
Michael Kohne
Cifraré el sistema de archivos VM en la instalación (con suerte, será mi primer intento de hacerlo), así que ese es otro medio de disuadir a los posibles ladrones. Como había dicho, todos estos problemas probablemente serían excesivos: el usuario promedio puede no pensar que vale la pena seguir hurgando. Pero realmente preferiría asumir lo peor de todos modos: la piratería es la norma aquí. El software que usaré es nativo de Windows: bueno, funciona en Linux a través de Wine. Y prefiero preparar todo en Linux porque, sinceramente, será mucho más difícil piratear el software desde allí. ¡Gracias de nuevo!
techtechmo