如何通过脚本将Linux发行版设置为自毁(擦除系统分区中的所有内容)


11

我将帮助促进使用许可软件的课程。该软件有点昂贵,并且只能进行有限数量的并发安装,因此我要做的是在安装了Ubuntu(或其他Linux风格)的加密虚拟磁盘上安装一个实例。为了减少发生任何不必要的盗版的机会,我打算安排(使用cron)自毁脚本来在课程的最后一天之后立即运行。(或者最晚在最后一天之后的首次启动期间。)

尽管我热爱免费软件和开放源代码项目(以及总体上是众包),但我也对商业软件以及开发人员投入的时间和精力投入了很好的尊重,我不愿意这样做。想要最终无意中助长其血液,汗水和眼泪的盗版。

感谢您对如何在Linux机器上实现此自毁脚本的任何想法。


2
我不确定为什么这被否决了。这是一个具有合法价值的合法问题。
BinaryMisfit

好问题。感谢您寻找软件开发人员。+1
D'Arvit

我不确定这是否会真正促进您的目标。如果他们计划窃取软件,则他们可能会在学习过程中获取VM的副本。他们将可以在闲暇时使用它。他们总是可以从live-cd引导VM,以便检查事物以弄清楚您的所作所为。
Michael Kohne

感谢所有提供答案的人,我非常感谢您的投入。:)
techtechmo

Answers:


3

如几次提到的,删除加密的图像应该绰绰有余。另一种方法是将应用程序安装在其自己的分区上,然后使用dd擦除它。

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

这将用零覆盖所有内容,这足以删除无法恢复的数据。


因此,为了澄清一下,脚本执行后,系统会从(在本例中为虚拟)分区中擦除自身,并且没有取消吗?这听起来像我打算做的。:)例如,如果我告诉虚拟机仅在几秒钟内关闭命令执行该怎么办?尽管可以访问该系统,但从理论上讲仍然可以安装磁盘的未删除部分,对吗?脚本的第一步也许应该先删除软件,然后再运行自毁脚本?
techtechmo

好吧,如果该用户以具有适当权限的用户身份登录,并且他们知道发生了什么,那么从理论上讲,他们可以杀死“ dd”命令,但是在此操作不会造成很大损害之前(分区表)例如位于磁盘的前部附近)。
迈克尔·科恩

6

销毁所有内容似乎有些过大,如何删除/卸载程序。

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

或者,您如何实现程序启动前必须联系的普通许可服务器?


更新:作为一个开放的问题,您打算销毁用户数据以及程序吗?还是用户数据存储在其他地方?

也许用户应该收到某种恶意软件的通知,说明您计划销毁所有产品!就像是

-“如果您不付更多钱,还剩下X天,该软件就会自我毁灭。”

作为用户,如果您只是破坏了计算机中的某些东西而没有告诉我这将要发生的话,我会真的很沮丧(因此,我至少有机会影响结果)。

如果您所有的付费客户最终都讨厌您,这对您的公司是不利的。


正如我之前提到的,该软件将位于专门为此课程创建的虚拟驱动器中。这是一个隔离的环境,没有任何用户文件,尤其是允许参与者使用一种软件进行一些培训。我要防止的一件事是有人将虚拟驱动器复制到USB驱动器上,并最终将其内部盗版。因此,我有意将系统设置为在课程结束后自行毁灭,以最大程度地减少发生此类事件的机会。您的关注当然有效,感谢您的分享。:)
techtechmo

顺便说一句,他们绝不购买要使用的软件的许可证。考虑到盗版在我的世界中有多臭名昭著,我宁愿在最坏的情况下做准备,但要为最好的做事。:)
techtechmo

2

有点老但是还可以。根据该设置,我确实确实希望对VM文件系统进行加密,并且在会话(假设它们已联网)期间,您将远程登录。如果他们要复制虚拟机,则必须蛮力破解密码,这几乎不是您的用户应该做什么:)

即,如果您不介意,则可以加密安装点:注意:此保护系统在某些国家/地区显然是非法的?(在美国,但是您似乎来自英国吗?):

设置加密的密码挂载:

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>

现在将程序安装/移动到/ theprogram

(每次您想再次访问/程序时都可以这样做):

安装

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

正在卸载

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

完成后,使软件文件夹看起来像只是一个随机字节文件。

您还可以确保他们在VM会话期间使用的用户帐户没有su权限,以防他们复制整个内容。


0

我不知道您的安装程序是什么,但是如果您可以要求用户在线,那么您可能希望采取其他策略-尝试在运行它们时通过网络连接加载该软件。这仅是可行的,并且取决于您能否向各个用户发出某种ID。您在VM上会有一个存根,该存根将自动挂载远程服务器并从那里运行二进制文件。他们没什么麻烦的事,但至少比绕过自动销毁更困难。

或者,您可以让远程服务器用密钥响应,并在磁盘上保留该程序的加密版本-存根向服务器查询密钥,解密并运行程序,并根据需要删除解密的二进制文件。这也将更难解决,但又需要唯一的用户ID(您可能无法使用)。


这是个好主意,但我认为类似这样的东西需要一定的经验和舒适度才能实现您所描述的系统-不幸的是,我没有那么奢侈。:)软件的动手操作将在我要协助的房间进行,但是我不想一直看着我的肩膀。您在问题中的评论恰恰是我所期待的-即使他们获取了VM的副本,下一次启动VM时,VM也应该清除所有内容。(我当然不会提到擦除所有脚本的存在。)
techtechmo

问题在于,一旦他们看到虚拟机被毁,他们将只从USB记忆棒中获得另一个副本,从实时CD引导虚拟机,然后开始四处寻找,直到他们发现它可以自己杀死自己。只要您对足够有动力的用户可以解决的事实感到满意,那么您就很成功。然后,您要做的就是在每次上课之前更新VM映像...
Michael Kohne

我将在安装时对VM文件系统进行加密(希望-这是我第一次尝试这样做),因此,这是劝阻潜在小偷的另一种方法。就像我说过的那样,所有这些麻烦都可能是过大的杀伤力-普通用户可能并不认为继续四处寻找麻烦是值得的。但无论如何,我真的想承担最糟糕的事情-盗版是这里的常态。我将使用的软件是Windows的本机:很好的一点是,它可以通过Wine在Linux上运行。而且我宁愿在Linux上做所有准备工作,因为老实说,从那里盗版软件会更加困难。再次感谢!
techtechmo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.