数据库安全的那点事儿, 可能是每个DBA都会遇到的问题, 同时也是最容易忽略的事。因为大多数开发团队都将精力放在了功能的实现上,很少去考虑安全相关的事儿,这也就给了黑客可乘之机。
我最初在一家小型BBS社区工作,主要是管理BBS的数据库系统。这家公司人数不多,主营业务在行业内竞争比较激烈。我还清晰的记得,某天中午正在吃饭,就被叫回公司,同事焦急地说:“我们可能被黑了,所有BBS注册用户的金币都多了10倍。”这意味着凭空而来的金币会导致社区用户对人民币充值的热情降低,直接影响公司的收入。
我首先想到的是有人入侵了数据库修改了数据,所以仔细的查了一下数据库的情况,看有没有留下一点痕迹。其实对于一个刚工作不久的DBA来说,我的经验不多,遇到问题还是有些措手不及。在忙乱中了1个多小时,最后我终于想到了mysql的查询日志(query log),仔细查看这个日志,发现从10.10.1.23这个IP发过来这样一条sql语句:update account set jinbi=jinbi10。对了!就是它了,正是这个sql语句导致了所有BBS用户的金币都多了10倍。接下来我检查了10.10.1.23这个IP,这台机器其实是一台备机,还没有启用,所以操作系统安全等方面做的不够全面,黑客正是通过这台机器来操作数据库的。同时我又检查了一下mysql的权限,其中主机IP写的是10.10.,写的是一个段的IP,正是因为这个设置,导致了黑客使用了有漏洞的机器来进行修改数据库的操作。
这个案例深刻的告诉我mysql的权限控制有多重要。如果当时mysql的访问权限将IP设置为只允许