使用Postgresql时需要注意的安全问题
本文用于记录作者云服务器被植入挖矿程序的一次经历,分享一下我猜测的黑客~~(这种能算黑客吗)~~的入侵思路,也希望大家在使用Postgresql的时候多加注意,以防造成不必要的损失。
0. 起因
星期五的一个没课的午后,鉴于前些日子睡眠有些不足,于是决定补觉。
于是乎,一觉醒来已是下午三时。
而打开手机一看,不同于往日的安静,今天居然在睡觉期间收到了数十封短信。
本以为今日必是不同寻常的一日了,打开短信一看竟全是腾讯云的安全提醒,不禁顿感失望。但想到服务器上还有一些重要的数据,于是决定起床一看。
1. 查看问题
根据腾讯云提供的信息,定位到入侵程序的安装位置为/var/temp/文件夹下
而罪魁祸首便是
.apache/和.crypto/两个文件夹,而根据文件名也可以判定本次入侵是比较常见的目的为植入挖矿程序的大规模入侵。
2.追根溯源
但是这时便产生了一个令我不解的问题——入侵者是如何入侵我的服务器的呢?
当然,这并不是我对自己的防范措施有多么自信,而是我的服务器只不过是一个小小的4c4g的轻量云服务器,绝对轮不上专业黑客为了植入挖矿程序而专门针对的地步,即:入侵我服务器的只能是使用弱口令等方式广撒网的入侵脚本。
但是虽然我平常不太注意安全问题(毕竟我这里也没啥好黑的),但是无论是服务器root密码或是其他用户的密码都绝非弱口令密码,且未在任何地方公开过密码,不应该被入侵啊,同时,通过查看.apache文件夹下的日志信息可以发现事实上挖矿程序仅运行了三分钟左右就被腾讯的防火墙给截停了,那么为什么入侵者不重新启动服务而是就此放弃了呢
3. 豁然开朗
在我百思不得其解之时,一群友提到我的root用户,而此时我已重新退回tmp文件夹下。
于是,我的余光突然扫到了一些不同寻常的东西
入侵的三个文件的创建用户全部都不是我的root账号而是
postgres!
于是我突然想起使用postgresql首次初始化的时候会创建一个postgres用户,而且为了能在服务器端使用命令行进入数据库,所以postgres用户是有系统的登录权限的!
而我因为postgresql在默认情况下只能通过本地或SSH隧道的方式访问,因此认为其非常安全,没有对postgres的初始密码进行修改,导致被弱口令脚本攻击,至此,本次入侵时间的脉络水落石出。
而之所以挖矿程序只进行了三分钟也非常明了了:腾讯云防火墙检测到挖矿程序后关闭了挖矿程序,并将高危文件的权限设置为了700,导致postgres作为普通用户不再拥有访问权限,入侵者只好放弃。
4. 总结
因此,以我为反面教材,提醒各位使用Postgresql的开发者们记得修改默认密码,平时也要多多注意,本次是由于该用户没有高级权限加上防火墙的双重功劳才使我的服务器免于惨遭毒手,但如此好运的事也不是总能发生的。
而入侵思路其实也很简单,了解到postgres的这个安全漏洞后,使用弱口令脚本无脑尝试所有服务器即可。
本次事件到此全部结束。