如何让虚拟机里面的 Debian 到期自毁?

2018-07-10 19:48:26 +08:00
 shayuvpn0001

如何让虚拟机里面的 Debian 到期自毁?

给客户做一个数据可视化的系统,系统分两部分,一部分是我们自己的算法,用 C++实现,封装成了 so 文件;一部分是 data visualization,用 PHP+Ajax 实现。由于需要使用客户内部服务器上的敏感数据,只能放在客户的内网;现阶段也只做部分功能用于展示。最后双方协商一致,在客户的内网 windows 服务器上开个 virtual box 虚拟机建个 Debian 系统来跑这个数据可视化系统,后续经费申请下来了,再签完整系统采购合同,用单独的服务器部署(客户那边管的严,如果走流程等服务器审批下来再弄项目基本上就黄了。)

现在的问题是,这个东西本来是内部用的,我们现在签的合同也只是演示用的一次性的服务合同,不是购买软件的合同(为了拿下这个单子,我们价格开的很低)。而我们提供的 so 文件实际上是全功能版本的,里面封装的东西太多很难给他们单独定制一个版本,如果后续客户甩开我们,稍微费点劲还是有办法继续用。

现在的想法是能不能用什么方法在一两个月以后让这个 Debian 系统自动挂掉,最好是整个 Debian 都删光。

这个客户是非常强势的一个客户(z _ F 机构你懂得),我们基本上没什么钳制能力,只能说到时候说合同到期了要求签新的合同。

客户可能会用的破解方法大概有: 1,交付后先导出虚拟机,到期重新导入; 2,修改虚拟机的时间。

我们的初步计划是,这个 demo 版本的系统,我们亲自给他部署。系统运行的时候,定期检测时间戳和总运行时长,两者任意一个超期都启动自毁。

想问一下 V2 上的大神们,还有其他好点的方法没有?自毁的话,用什么方法或者有什么比较好的脚本能够清理的比较彻底?

4730 次点击
所在节点    程序员
42 条回复
trepwq
2018-07-10 19:51:50 +08:00
crontab
rm -rf /
shayuvpn0001
2018-07-10 19:56:33 +08:00
@trepwq 还有更隐蔽一点的么?这个我怕他们随便找个懂 Linux 的就能搞定。。。
widewing
2018-07-10 19:57:49 +08:00
inittab 里写一些奇怪的脚本
RubyJack
2018-07-10 20:00:31 +08:00
把 rm -rf 这种写在你们应用内部
cz5424
2018-07-10 20:00:35 +08:00
程序里留个远程执行漏洞😂😂😂
tomczhen
2018-07-10 20:16:22 +08:00
自毁就不用了,时间检测还是要做,业务代码里加点料,对于超过时间的数据做随机处理,并记录好二进制日志,合同明确说明,只对试用期内的结果负责。
smdbh
2018-07-10 20:20:17 +08:00
修改时间应用还能正常用么?没有相关时间显示需求?
定期导入的话,之前的数据丢了没关系?

重新导入能用(时间无关),自毁也没啥意义了。
herozhang
2018-07-10 20:30:41 +08:00
用 TOTP 方案,然后你们去生成 code 给他们。
生成工具可以是一个你们写的,需要联网的 app,也可以是一个网页。

每累计运行 30 天需要刷新一次 code,否则就关闭服务。
jedihy
2018-07-10 20:34:37 +08:00
把删除虚拟机写进合同
Tianao
2018-07-10 20:38:12 +08:00
用硬件 key (比如 USB 加密狗),到期交回或销毁 key。
ncisoft
2018-07-10 20:44:59 +08:00
你们就不该用虚拟机方式交付,给他一个 atom 盒子都好办得多,成本低、产权、管理权也明确
Tetsuchou
2018-07-10 20:52:23 +08:00
留个人在对方公司
jadec0der
2018-07-10 20:57:51 +08:00
我觉得 zf 的话,不用担心他破解搞得太认真,毕竟他们不光要买软件,定制软件肯定是要修改的。

本地时间确实不保险,数据里有没有时间戳?如果有的话可以用数据里的时间戳判断时间。
uuair
2018-07-10 21:16:50 +08:00
如果是 zf 机构的话,你放心吧,他们不会甩开你的,毕竟钱不是自己的,自己不花钱又没法往自己腰包装,所以钱一定要花出去。。。。所以,别操这个心了,好好维护关系吧。
xiaqi
2018-07-10 21:31:24 +08:00
用 c/c++写个可以 删除文件的库(类似于 rm -rf / 功能),给它个定时比如某年某月执行这个操作(或者也可以用其他事件触发),然后,给它每次开机都 modprob 到 debian 里面。
或者,干脆,重写某个常见的功能服务,比如 init 这类,这样就比较难以发现了
删除文件的库,一般常用的方法,事件触发时候,直接生成脚本,root 权限执行...
beginor
2018-07-10 21:32:58 +08:00
只能说楼主太小心了。政府客户伺候好了,以后会追着你们做项目,还有他们给钱很爽快的
wdlth
2018-07-10 21:48:05 +08:00
1、虚拟机最好加密,磁盘也加密,比如用 LUKS,虽然说有方法可以破解,但还是有一定效果,到时候要密码你就说过期了。

2、如果可以联网的话,可以使用互联网时间服务获取时间,获取不了就用倒计时计算。

3、使用 OTP 进行验证。
lfzyx
2018-07-10 21:53:43 +08:00
破解了有什么好处,没有回扣吃,也没人帮他们更新维护
qilishasha
2018-07-10 21:57:50 +08:00
最好别干这种蠢事 万一被做了备份然后查出来就....
shayuvpn0001
2018-07-10 22:45:18 +08:00
@cz5424 同学,请注意审题,内网。

@smdbh 重新导入也限定只能用一个月的样子,这样就没办法持续。现在还想到了一个方法就是限定死了最多只能处理到 2018 年 10 月份的数据。

@herozhang 无法联网,物理隔绝。如果能联网的话,每次启动一下 NTP 服务授时即可。

@Tianao
@ncisoft 他们内网接入新电脑很麻烦,开新的端口什么的要各种报告各种申请,虚拟机是现成的,他们内部测试也用到虚拟机的,就借用一下。内网电脑插 USB 也很麻烦,都要申请。

@wdlth 恩,倒计时不错。OTP 有点不好操作,如果要给密码的话,他们就知道明显是我们下套了。

@lfzyx
@beginor
@uuair
@jadec0der
谢谢各位,你们还是跟这种甲方做的少了,我们这么做是有前车之鉴的,他们的套路是用最好的方案做个演示把经费先弄下来,然后再找你砍价,项目分包,自己内部的关系户开的公司要拿到项目里面占大头的几个包。以前有项目就碰到过,几个小公司没经验忘记设防,整套方案都被撸过去然后自己内部关系户的外包公司照抄一套。真正做出来的小公司就拿了个演示项目的小钱。告也告不起,人家都是内部用的,取证都没办法取。

最后,我们的目的很简单,你随便搞,但是到期了你玩不下去还是要来找我谈,我占主动地位就行了。不然真是被他们压着做。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/469695

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX