Mongdb被攻击,修复记录

缘由

最近翻出之前写的代码,使用了阿里云上面的mongdb服务,结果运行一直报错,经过多处排查发现是数据库请求返回为空,通过Robo 3T登录看了下mongdb数据库,结果如下:


mongodb.png

惨遭攻击,被索要Bitcoin,幸好只是不重要的数据,不过以此为例,对之前做的东西进行反思,是不是没有一点安全意识?尽管只是一个练习项目。

查看mongod日志 /var/log/mongodb/mongod.log,可以看的有法国/荷兰/韩国等的PyMongo, mongo-go-driver等的客户端的连接,连接后对方就开始丧心病狂的先drop file admin local weather 等数据库。

chaxun.png
drop1.png
drop2.png

观察推测对方使用软件扫描端口,一旦发现有机可乘,便通过修改/etc/mongod.conf, 修改net bindIp,以便其能通过不同IP访问,然后建立多个连接进行删库操作。

改进

  1. 修改默认端口,mongodb默认是27017,改成一个自定义的端口,并且绑定本机,编辑/etc/mongod.conf下的配置信息。
# mongod.conf
net:
 port: 12121
 bindIp: 127.0.0.1 

security:
    authorization: enabled

上面设置新端口为12121,你也可以用其他端口,查询一个端口是否被使用可以使用以下命令

$ nc -l 3000
nc: Address already in use
$ nc -l 23456
Listening on [0.0.0.0] (family 0, port 23456)

使用lsof -i :port可以查询哪个进程服务(pid)使用了特定的port,(关于lsof的详细使用,可以参考这里
) 然后可以kill -9 pid 杀掉对应的进程。

  1. 编辑好后需要重启服务才能生效
sudo service mongod restart

遇到上述命令无法执行,编辑sudo vim /etc/systemd/system/mongodb.service 写入以下内容:

[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target

[Service]
User=mongodb
ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf

[Install]
WantedBy=multi-user.target
  1. 开启mongodb权限验证
mongo --port 12121
use admin
db.createUser( { user: "*******", pwd: "********", roles: [ { role: "readWriteAnyDatabase", db: "admin" }, { role: "userAdminAnyDatabase", db: "admin" } ] } )

db.auth("username", "password") // 对用户角色进行授权
db.system.users.find()

后续计划

开启主从复制
https://zhuanlan.zhihu.com/p/50597960
https://blog.csdn.net/Mr_EvanChen/article/details/80408750
https://blog.csdn.net/ycy258325/article/details/84767053
https://lihaoquan.me/2018/9/29/postgresql-master-slave-ha.html

你可能感兴趣的:(Mongdb被攻击,修复记录)