事件起因

昨天在某站看到有人提到宝塔7.4.2版本更新事件导致数据库可直接访问,当时没怎么在意,毕竟自己没有在用。差不多不到2年前搭建动态网站的时候,倒是用过。比自己手动编译安装LNMP和LAMP环境要方便多了。

21点过后打开电脑,见Q群也有人讨论这事,就想着试试看,到底是怎么回事。于是就借用知道创宇的工具,找到了几个站点,还真可以采用IP:888/pma这样的形式直接访问phpmyadmin管理的MySQL数据库。

而且权限之大可以做任何操作,直接删库都OK。尽管宝塔官网采用短信的形式通知用户及时更新修复,但总有人不重视这些问题,即便是在今上午,还是有站点没有做任何修复,甚至是现在我写文章的傍晚,某些网站还可以采用上面形式可直接访问数据库。

更详细的分析我也说不了,网上有些文章分析的也挺好,还从代码对比层面讲了它改动的业务逻辑。我想从另一个角度谈谈对此次事件的看法。

什么是宝塔面板

什么是宝塔,这里的宝塔并不是宝塔镇河妖的宝塔,而是方便快速构建程序运行环境的一种程序面板。

一般来讲,一个网站需要运行环境,网站就是Website,因此离不开Web服务器程序,如NginxApache HTTP。再看网站是由什么语言程序写的,如果是PHP语言写的,那么还需要PHP环境,而这些语言写的网站都是属于动态类型的网站,还得有个数据库,如MySQL。这三者具备了,得看你网站运行在什么系统上,如果是Linux系统,那么这一套组合就可以简称为LNMP或者LAMP,LAMP和LNMP的区别是用Apache还是Nginx而已。

而宝塔面板就是快速方便的搭建一套LAMP或者LNMP环境,当然你得先在Linux系统上安装好宝塔,然后由宝塔编译安装其他三个程序并且管理它们,简单说这就是Linux面板的作用。

而这一次的漏洞就是在管理环境出现了逻辑问题,导致数据库可直接被访问。

对宝塔漏洞事件的看法

只要是人写的代码,就会有漏洞,只要是人,就可能出现业务逻辑的BUG。而宝塔出了这么大档子事,犯得还是这么低级的错误,要说没有这样的声音,才是奇怪。

其实就算是微软,也都有人说Windows不安全,我用Linux之类的声音。不管什么事件,一旦发生,总会出现两种完全不同的声音,我想这才符合中国古代哲学的辩证思想。有阴就有阳,有人说可以,就有人说不可以。

至于谁对谁错,在某种程度上,反而不是那么重要。我更关注的是如果一件事情发生,可怕的是只有一种声音。

从昨天到今天,看到不少人说早就不用宝塔了,LNMP一键脚本它不香吗?也有的说,已经不用宝塔好久了,早几年就改用XX面板了。还有的说,今后再也不用宝塔了。总之,这些都算得上抵制或者嘲讽的声音吧。当然也有不少理智人说该用还得用,我倒是倾向于后者观点。

原因也很简单,不是所有人都是开发者和运维工程师,时间一久,很容易忘记操作步骤和某些细节。如果要处理点什么,改点什么,可能需要临时查阅笔记或者搜索引擎。这对非程序员和运维人员来说,是很麻烦也很费时间,而且时间费了未必就能解决,解决了下次遇见可能又需要重复一次查阅。

听说,这次事件中,还有几个政府网站也遭了殃。看来,帮政府管理计算机资产的人,也是图方便,另一方面很可能是水平有限。

就自己检索到的几个网站来看,用来做PC站点的反而少,多是面向移动端做小程序。或许也能说明,这些小程序的运营者,还不够有实力聘请专业的运维人员,而是自己用宝塔,研究研究,非计算机专业的人也较容易上手。

声音不同,是因为立场不同,看问题的角度自然就不一样。即便这次有不少人被删库,对宝塔也不会造成多大的冲击。因为方便容易远胜于安全,而且宝塔也不是一点都不安全,对于他们来说,没有宝塔,环境都搭建不来,那招人来做,流出的都是真金白银。

权衡之后,自然该用还是得用。我自己之前,设立了好几套密码,过于复杂,为了安全,对于不同网站采用不同密码,安全性是提高了不少,但费脑力。稍微久点不登录的站点,就想不起来是哪一套密码了。后面采用密码管理器解决后,就再也不用记密码,所以我现在QQ密码微信密码都记不住了。你看,任何事情都有它的两面性。

面向未来的运维架构

目前(2020年8月)宝塔官网写的是历经200多个版本的迭代,100多项服务器管理功能,400万安装,1000+中大型企业使用。

这个成绩看着是挺不错的,但我依旧不看好运维面板的未来,随着Serverless架构的推进,未来更是一种“无服务化”的运维模式,开发者只需对代码进行更新迭代即可,无需关注服务器的运行状况。

如果说Serverless没能挑起这个大梁,那么必将有其他类似产品出现,这是一种趋势。如同在云计算之前,几乎所有运维都要面临机房,网络设备,硬件设备打交道。而今,随着云计算的普及,多数运维人员只需要打开阿里云,腾讯云的页面,点击鼠标即可完成对服务器的申请和配置,并不需要亲自去机房部署,只有少数面向机房运维的才会接触这些。

尽管Serverless现在存在很多问题,有很多不完善,但并代表这个模式不行。因为很多软件程序的设计一开始就不是为了serverless架构而设计的,想要完全与之兼容,肯定是需要时间。

另外,随着云原生的推进,相信Serverless在未来会有更好的展现。之前在《Serverless云函数计算搭建Typecho和Wordpress网站》中讲到,搭建个人站点的wordpress和typecho几乎没什么问题,就是伪静态方面不好解决。

而且,阿里云都有一键安装WordpressServerless如果把HTTPS问题和伪静态问题解决了,难道不比宝塔方便?十年前,虚拟主机还要考虑单线,双线问题,现在你还会考虑吗?同理,现在你还考虑服务器是几G几核心的问题,未来就不需再考虑了。