Como definir uma distribuição Linux para se autodestruir (para limpar tudo da partição do sistema) por meio de um script

11

Ajudarei a facilitar um curso que use software licenciado. O software é um pouco caro e permite apenas um número limitado de instalações simultâneas; portanto, o que farei é instalar uma instância em um disco virtual criptografado com o Ubuntu (ou algum outro tipo de linux) instalado. Apenas para diminuir a chance de ocorrência de pirataria desnecessária, pretendo agendar (usando o cron) um script de autodestruição para ser executado imediatamente após o último dia do curso. (Ou, o mais tardar, durante a primeira instância de inicialização após o último dia.)

Por mais que eu goste de projetos de software livre e de código aberto (e de crowdsourcing em geral), também tenho um respeito saudável pelo software comercial e pelo tempo e esforço que os desenvolvedores dedicaram para criar um bom produto - eu não querem acabar inadvertidamente contribuindo para a pirataria de sangue, suor e lágrimas.

Gostaria de ter alguma idéia de como implementar esse script de autodestruição em uma máquina Linux.

techtechmo
fonte
2
Não sei por que isso foi prejudicado. É uma pergunta legítima com valor legítimo.
BinaryMisfit 14/09/09
Boa pergunta. Obrigado por procurar desenvolvedores de software. +1
D'Arvit 14/09/09
Não tenho certeza se isso realmente vai promover seus objetivos. Se eles planejam roubar o software, provavelmente vão pegar uma cópia da VM durante o curso. Eles poderão ferrar com isso à vontade. Eles sempre podem inicializar a VM a partir de um live-cd, a fim de examinar a coisa e descobrir o que você fez.
Michael Kohne
Obrigado a todos que deram uma resposta, sou grato pela contribuição. :)
techtechmo 15/09/09

Respostas:

3

Como mencionado várias vezes, a exclusão da imagem criptografada deve ser mais do que suficiente. Outra abordagem seria instalar o aplicativo em sua própria partição e limpá-lo posteriormente com o dd.

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

Isso substituirá tudo com zero, o que é suficiente para excluir os dados além da recuperação.

OliverS
fonte
Então, só para esclarecer, uma vez que o script seja executado, o sistema se limpará da partição (neste caso virtual) e não haverá cancelamento? Isso soa como o que pretendo fazer. :) E se, por exemplo, eu disser à máquina virtual que desligue apenas alguns segundos que o comando executa? Embora o sistema possa estar acessível, ainda seria teoricamente possível montar as partes não recuperadas do disco, certo? Talvez a primeira etapa do script deva remover o software primeiro e depois executar o script de autodestruição?
Techtechmo 14/09/09
Bem, se o usuário estiver conectado como um usuário com permissões apropriadas E se souber o que está acontecendo, eles poderão, em teoria, matar o comando 'dd', mas não antes de causar muitos danos (as tabelas de partição estão perto da frente do disco, por exemplo).
Michael Kohne
6

Destruir tudo parece ser um pouco exagerado, que tal remover / desinstalar seu programa?

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

Ou você implementa um servidor de licenciamento normal com o qual o programa deve entrar em contato antes de iniciar?


Atualização : Como uma pergunta em aberto, você planeja destruir os dados dos usuários e seu programa? Ou os dados dos usuários são armazenados em outro lugar?

E talvez o usuário deva receber algum tipo de aviso de que você planeja destruir tudo! Algo como

- "Este software se autodestruirá se você não pagar mais dinheiro, você tem X dias restantes."

Como usuário, eu ficaria muito chateado se você destruísse algo no meu computador sem nem me dizer que isso estava prestes a acontecer (então eu pelo menos tive alguma chance de afetar o resultado).

É meio ruim para a sua empresa se todos os seus clientes pagantes acabassem odiando você.

Johan
fonte
Como eu havia mencionado, o software estará em uma unidade virtual criada especificamente apenas para o curso. É um ambiente isolado, sem nenhum arquivo de usuário, destinado especificamente a permitir aos participantes treinamento prático com um software. Uma coisa que eu quero evitar é que alguém copie esse Virtual Drive em, digamos, um USB Drive e acabe pirateando o software. Assim, eu intencionalmente quero definir o sistema para se autodestruir logo após o curso, a fim de minimizar a chance de algo assim acontecer. Sua preocupação é, naturalmente válidos, obrigado por compartilhar :).
techtechmo
A propósito, eles não estão de forma alguma comprando uma licença do software a ser usado. E considerando como a pirataria é notória na minha parte do mundo, prefiro fazer os preparativos assumindo o pior, mas trabalhando para o melhor. :)
techtechmo 14/09/09
2

Um pouco velho, mas ok. De acordo com essa configuração, eu preferiria apenas criptografar o sistema de arquivos da VM e, durante as sessões (supondo que elas estejam em rede), você faria o login remotamente. Se eles copiassem a VM, teriam que forçar a senha com força bruta, dificilmente o que seus usuários deveriam fazer :)

ou seja, se você não se importa, pode criptografar um ponto de montagem: Nota: esse sistema de proteção é ilegal aparentemente em alguns países / estados? (bem nos EUA, mas você parece ser da Inglaterra?):

Configurando uma montagem criptografada e com senha:

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>

Agora instale / mova seu programa para / theprogram

(Sempre que desejar acessar / o programa novamente):

montagem

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

desmontando

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

Quando terminar, faça com que a pasta do software pareça apenas um arquivo de bytes aleatórios.

Você também pode garantir que as contas de usuário que eles usam durante a sessão da VM não tenham sudireitos, caso copiem tudo.

mike-delft
fonte
0

Não sei qual é a sua configuração, mas se você pode exigir que seus usuários estejam on-line, convém adotar uma tática diferente - tente carregar o software por uma conexão de rede sempre que executá-la. Isso só é viável e depende de você poder emitir algum tipo de ID para usuários individuais. Você teria um stub na VM e o stub montaria automaticamente um servidor remoto e executaria o binário a partir daí. Nada que eles não pudessem dar a volta com um pouco de trabalho, mas seria pelo menos mais difícil do que contornar a autodestruição.

Como alternativa, o servidor remoto pode responder com chaves e manter em disco uma versão criptografada do programa - o stub consulta as chaves do servidor, descriptografa e executa o programa, excluindo o binário descriptografado conforme apropriado. Isso também seria mais difícil de contornar, mas novamente exige IDs de usuário exclusivos (o que talvez não seja possível para você).

Michael Kohne
fonte
Boa ideia, mas acho que algo assim exigiria alguma experiência e conforto na implementação do sistema que você descreveu - infelizmente não tenho esse luxo. :) O trabalho prático com o software será realizado na sala em que estarei facilitando, no entanto, não quero ter que ficar olhando por cima do ombro. Seu comentário na pergunta é exatamente o que estou antecipando - mesmo se eles pegarem uma cópia da VM, na próxima vez em que a inicializarem, a VM deve se limpar de tudo. (Eu, claro, nem mesmo mencionar a existência do script tudo acabar.)
techtechmo
O problema é que, uma vez que a VM se destrua, ela obterá outra cópia do pen drive, inicializará a VM a partir de um CD ao vivo e começará a bisbilhotar até descobrir o que faz para se matar. Desde que você se sinta confortável com o fato de que um usuário suficientemente motivado possa contorná-lo, você estará em ouro. Então tudo que você tem a fazer é atualizar a imagem VM antes de cada aula ...
Michael Kohne
Vou criptografar o sistema de arquivos da VM na instalação (espero - será minha primeira tentativa de fazê-lo), então esse é outro meio de dissuadir os possíveis ladrões. Como eu havia dito, todo esse problema provavelmente seria um exagero - o usuário médio pode não pensar que vale a pena continuar bisbilhotando. Mas eu realmente prefiro assumir o pior de qualquer maneira - a pirataria é a norma aqui. O software que vou usar é nativo do Windows: o bom é que ele funciona no Linux através do Wine. E prefiro preparar tudo no Linux, porque honestamente será muito mais difícil piratear o software a partir daí. Obrigado novamente!
Techtechmo 15/09/09