夏也眠的博客

自由的代价

凌晨三点的一条入侵告警,一次关于数据自持与自由代价的复盘。

凌晨3点34分35秒,一个来自日本的 IP,用一条完全正确的密码,登进了我的云服务器。
腾讯云的告警写得很平静:“中危”。我看到它的时候,已经是早上8点了。

被推开的房门

自从我启动了数据自持计划,我的笔记、看板、博客,都跑在自己租的一台香港轻量应用服务器上——自己的域名,自己的服务器,自己的数据库。不用大厂的云笔记,不把私密内容交给别人保管,想部署什么就部署什么,想怎么改就怎么改。这种“我的地盘我做主”的感觉,带来了数字生活里难得的自由与平静。

每次打开自己部署、手搓的应用,都像回到自己装修的房子,踏实、可控,自由自在。

我沉醉其中,直到今天凌晨房门被推开。

我才意识到,freedom doesn’t mean you deserve it, you have to earn it.

地垫上面的钥匙

日志显示:03:34:35,日本 IP 107.148.76.179,用户名 ubuntu,密码验证通过——登录成功。

同一秒,会话关闭。

进来,验证密码是对的,然后走了。整个过程不到一秒,没有执行任何命令。像有人捡到一把钥匙,试了一下能开门,确认有效,就揣进兜里走了——典型的撞库行为:拿泄露的密码批量试,试对的记下来,再去下一家。

密码泄露了,板上钉钉。

顺着泄露源排查,我看到了自己埋下的雷。

我的笔记应用,设过“访问密码”。我一直以为它是上了锁的。可实际上,那只是一个前端遮罩锁:数据明文躺在浏览器的 localStorage 里。这个锁,挡住的只是访客视线的第一眼。打开开发者工具,按一下 F12,全部内容一览无余。数据本身,没有加密。

就好比,你把房门钥匙放在了家门口的地垫上。是的,地垫上面,都不是地垫下面。

更离谱的是,我的笔记里明晃晃地躺着一行字,云服务器地址和对应的登录密码。

俄罗斯套娃式的漏洞

继续往下挖,挖出更多:

把整条攻击链复盘出来,其实只有五步:匿名注册 → 读到明文笔记 → 拿到服务器密码 → 登录成功 → 确认后离开。环环相扣,又环环是洞。

幸运的是,这个“来访者”没有做任何破坏。他,或她,只是确认了门能打开,亦或是单纯地想证明“我可以”。

亡羊补牢

从早上看到告警信息,到处理完毕确认闭环,花了大半天,做了很多事:

忙完坐下来整理清单的时候,有种奇妙的踏实感。像给住了很久的房子换了套锁具,装了摄像头;最关键的是,收起了本就不应该摆在家门口地垫上的房门钥匙。

关于教训

密码不应该保存在笔记里,最小暴露,定期检查,宁可多锁一道,以及,不要太相信AI。

这些不是口号,是自由人要付出的代价。

关于代价

经历了大半天的兵荒马乱,我最后依然选择数据自持,依然选择自由。

自由从来不是免费的。它的标价不是钱,而是你愿意为自己负责到什么程度。你想自己掌控一切,就得自己承担一切。

就像有人不想生活在社会中,就亲手挖了一个深2.7米、长6米的地堡用于居住;有人为了追求孤独和简单生活,就在二战废弃地堡中独自生活了32年,没有电视、没有互联网,依靠太阳能板和有限物资维持极简生活;有人在森林中独居27年,没有电话、没有互联网、没有钱,通过盗窃附近小屋的物资维生,直至最终被捕。

之于我,自由的代价是,最起码现在是,凌晨三点那条告警,发现真相时的冷汗,一个被“荒废”掉的周六光阴,以及一遍遍向AI最后确认“这次是否真的干净了”的谨慎。

茨威格在《断头王后》里面写过“She was still too young to know that life never gives anything for nothing, and that a price is always exacted for what fate bestows(她还太年轻,不知道生活不会免费给予任何东西,从命运那里得到的一切都暗中标上了价格).”

我之前以为,他说的是爱情,是政治,是一个普普通通的女人。

现在才发现,他说的,也包括自由。