mongodb 安装及安全问题

码农天地 -
mongodb 安装及安全问题
故事会前几天在线上环境用docker安装mongodb(3.4)来做测试,辛辛苦苦的添加了数据,然后今天发现被黑了库都给我删完了..哭mongodb 本身的安全隐患默认不需要账号密码就能连接操作,修改添加删除都可以mongodb 3.6 之前默认是0.0.0.0 连接,所以很容易就能通过公网连接到mongodb(3.6 之后为127.0.0.1 只能通过本机连接)解决方案设置authorization鉴权,添加用户账号密码使用mongodb3.6之后版本 (限制只能本机连接是安全的,但这样使用场景会很窄,因为我的其它应用都是使用docker容器部署的,只能localhost的话就连不上数据库了, 所以我们可以通过修改连接地址为 当前主机的内网ip来连接)屏蔽主机向外暴露mongodb的默认端口27017安装

因为国内daocloud 的mongo镜像版本没有3.6及以上的,而docker hub的连接速度完全劝退,思来想去还是在主机上直接安装一个mongodb

环境是 ubuntu 18.04

官方安装文档

添加 GPG key

wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -

添加 list file

echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list

更新数据包

sudo apt-get update

安装

sudo apt-get install -y mongodb-org
mongodb 启动 重启 停止 等命令

# 启动

sudo systemctl start mongod

# 查看状态

sudo systemctl status mongod

# 停止

sudo systemctl stop mongod

# 重启

sudo systemctl restart mongod

# 开机启动

sudo systemctl enable mongod

卸载 mongodb

# 卸载
sudo apt-get purge mongodb-org*

# 删除数据日志目录

sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongodb
操作添加用户

mongodb 每一个库都可以设置不同权限的用户

设置一个admin来管理操作所有数据库,在对要使用的库设置一个只可读写的用户来使用这个数据库


# 操作数据库

mongo

# 切换到默认的 admin 库

use admin

# 创建一个管理员用户

db.createUser({
    user: "your name",
    pwd: "your password",
    roles: [
        {
            role: "userAdminAnyDatabase",
            db: "admin"
        },
        "readWirteAnyDatabase"
    ]
})

# 切换到我们要使用的库 abc

use abc

# 创建一个只可读写的用户

db.createUser({
    user: "your name",
    pwd: "your password",
    roles: [
        {
            role: "readWirte",
            db: "abc"
        }
    ]
})

# 退出

exit

2 开启用户鉴权和绑定连接地址

打开 /etc/mongod.conf

# 连接地址

net: 
  port: 27017
  bindIp: 你的私网ip
   

# 开启鉴权

security:
  authorization: enabled

保存退出后重启mongodb


sudo systemctl restart mongod

然后你就会发现使用 mongo 来使用数据库不行了,因为默认连接地址变了,也需要账号密码来操作了


mongo --host 你绑定的私网ip --port 27017 -u "your name" -p "your password" --authenticationDatabase "db name"

最后到主机中设置不向公网暴露 27017 端口

over!

特别申明:本文内容来源网络,版权归原作者所有,如有侵权请立即与我们联系(cy198701067573@163.com),我们将及时处理。

Tags 标签

加个好友,技术交流

1628738909466805.jpg