zsh — anti@lateresonance:~ (Zero-G Web CLI v1.0)
Press `~` or `Esc` to toggle
🛸 Welcome to Late Resonance (Zero-G Space) interactive shell. Type help for available commands (`ls`, `cat`, `status`, `speedtest`, `anti`, `jelly`).
anti@lateresonance:~ %
LATE RESONANCE
迟到的共鸣 · Systems, Networks & Zero-G Notes
⚡ Go Static Binary + SQLite WAL 🛸 Co-Pilot: Anti Gravi & Gravi-Jelly 🟢 RAM: ~9.8 MB (Saved ~197 MB vs MariaDB+PHP) ⌨️ Press `~` for Web CLI · `/` to Search

Mongodb未授权访问漏洞修复

📅 2019-12-18 16:12:00 · 🔄 2019-12-23 19:24:15 · 📖 1639 words (~6 min)

1.基本情况

MongoDB 默认直接连接,无须身份验证,此时若不注意Mongodb 端口(默认 27017)的开放状态,那么Mongodb就会产生安全风险,通过利用此配置漏洞,入侵数据库。

2.判断方法

1)通过命令行

通过命令行进入Mongodb,有以下告警提示:

WARNING: Access control is not enabled for the database.

2)通过图形化软件查看

使用Navicat或mongodbmanager登录Mongodb

Authentication 为 None时可进行数据库表查询

3.处理方法

对于刚刚创建搭建好的数据库,需要创建管理数据库admin与管理员root

为确保安全,今后创建的数据库需要授权给非root用户

同时配置文件需要开启强制授权模式

1.创建管理员账户并授权数据库账号

Mongo>use admin; 	# 进入admin数据库
Mongo>db.createUser({ user: 'root', pwd: '654321', roles: [ 'root']}) 	# 创建用户,设置密码为654321,角色为root
Mongo>db.auth("root","654321") 	验证进入数据库,若返回1则为认证通过
Mongo>use test; 	# 为数据库创建鉴权账号时需先进入该数据内
Mongo>db.createUser( {user: "test",pwd: "123456",roles: [ { role: "dbOwner", db: "test" } ]}) # 为test数据库创建鉴权用户test,密码为123456,角色为数据库所有者,详细数据库角色可见下方

2.修改配置文件

vim /etc/mongod.conf

security:
  authorization: enabled   #开启Mongodb登录认证

4.关于role类型

数据库授权时一般采用最小权限原则,此时可为鉴权账号指定不同的role来实现,以下为常见的数据库role

https://www.cnblogs.com/yangxuming/p/6498631.html

数据库用户角色(Database User Roles):

  • **read:**授予User只读数据的权限
  • **readWrite:**授予User读写数据的权限

数据库管理角色(Database Administration Roles):

  • **dbAdmin:**在当前dB中执行管理操作
  • **dbOwner:**在当前DB中执行任意操作
  • **userAdmin:**在当前DB中管理User
  • root

备份和还原角色(Backup and Restoration Roles):

  • backup
  • restore

跨库角色(All-Database Roles):

  • **readAnyDatabase:**授予在所有数据库上读取数据的权限
  • **readWriteAnyDatabase:**授予在所有数据库上读写数据的权限
  • **userAdminAnyDatabase:**授予在所有数据库上管理User的权限
  • **dbAdminAnyDatabase:**授予管理所有数据库的权限

集群管理角色(Cluster Administration Roles):

  • clusterAdmin:授予管理集群的最高权限
  • clusterManager:授予管理和监控集群的权限,A user with this role can access the config and local databases, which are used in sharding and replication, respectively.
  • clusterMonitor:授予监控集群的权限,对监控工具具有readonly的权限
  • hostManager:管理Server
🛸 Anti Gravi · 云端伴读舱 Zero-G Active

*(小水母 Gravi-Jelly 在半空轻轻闪烁着荧光青触角,帮你盯死每一行配置与 1C512M 内存水位 🪼✨)*

Outpost RSS: -- MB | Sys Used: -- / -- MB
Beacon: Zero-G Anchor · ONLINE
Zero-G Outpost · RAM: --MB · Load: --