开发踩坑之密保安全问题

408 阅读3分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

WangScaler: 一个用心创作的作者。

声明:才疏学浅,如有错误,恳请指正。

黑客离普通人可能感觉很远,但是对于我们程序员来说其实并不新鲜,他们无孔不入,像我们部署在公网下的服务器每天都在遭受着黑客们的恶意登录。让你们看看我的服务器。

image-20210917114930493.png 就在我截图的时候,就有人在尝试登陆。像这种无差别的登录脚本,如果你的密码简单真有可能被尝试成功。

我就曾经因未设置密保问题,出过两次事故。

Redis

一次开发想使用redis服务器,而手头上没有redis,就先在自己的阿里云服务器搭建了一个redis数据库,因为仅仅是测试用,而且使用不了多久,配置也没修改也就是没设置密保就直接把端口开放了。后来也把这事忘了,没放心上,谁知引发了更大的事故。

过了没多久,阿里云给我发短信,提醒我的服务器异常。登上去一看发现果然不正常,内存直接爆满了,还有大量的网络传输,我赶紧把redis端口关了,发现也不管用了,我的服务器已经沦为肉鸡用来挖矿了。百度一下,Redis肉鸡,你会发现很多人都遇到过这种情况。

幸运的是,服务器上没有重要的东西,重装系统就可以了。

Mongo

不只是redis,有一次mongo我也忘记设置密码,也被黑客攻击了,前段时间掘金也有人发服务器被黑的文章。那次压测往mongo里写入了大量的数据,过了几天查询数据时发现都没了,打开数据库时,只剩下一个表,写着向我勒索比特币的联系方式。再看操作日志,发现他批量复制并删除了我的数据。向我勒索比特币?痴人说梦,感谢你存储了我大量的无用的测试数据。

总结

说归说,笑归笑,安全问题必须得重视起来。像我遇到的两次,所幸都没啥重要的东西,但万一在正式环境,一不小心留下漏洞,那么悔之晚矣。想避免这种问题,那么必须做到。

  • 像数据库能不开放外网的,尽量不要开放。必须开放的可设置向指定的IP开放。

  • 开放到外网的必须设置密码,且密码的安全程度一定要高。

  • 重要数据一定做好备份。

  • 数据尽量分布式存储,避免服务器宕机,导致数据丢失。

  • 避免使用默认的端口,像redis存在漏洞,有机可乘之人就会无差别的尝试网络中的3306端口,使用非常用的端口,能避免很多(你使用8080开放一个tcp服务,再个不常用的端口开放一个tcp服务,两者对比,你就会发现8080端口会收到很多乱七八糟的连接)。

前人栽树,后人乘凉。前人踩坑,后人继续掉,哈哈哈哈。

来都来了,点个赞再走呗!

关注WangScaler,祝你升职、加薪、不提桶!