1.Mongodb未授权访问

描述

MongoDB 是一个基于分布式文件存储的数据库。默认情况下启动服务存在未授权访问风险,用户可以远程访问数据库,无需认证连接数据库并对数据库进行任意操作,存在严重的数据泄露风险。

加固建议

可以使用以下方法修复:

1.限制mongodb监听范围: 打开配置文件<mongod.conf>,设置bind_ip=<ip>,如果配置文件为yaml格式,则在net选项下设置bindIp: <ip1,ip2...>;其中<ip>,<ip1,ip2...>为指定的一个或多个IP地址,如mongodb只需在本地使用,则建议绑定本地ip127.0.0.1;

2.开启登录认证并增加认证用户: 若还没有用户,则登录mongodb客户端,创建新用户及密码。然后打开配置文件<mongod.conf>,设置auth=true,如果配置文件为yaml格式,则在security选项下设置authorization:enabled;

3. 设置完成后重启mongodb服务。

2.确保将新条目附加到日志文件的末尾

描述

默认情况下,新的日志条目将在重新启动mongod或Mongols服务后覆盖旧条目。 启用systemLog.logAppend设置会导致新条目附加到日志文件的末尾,而不是在mongos或mongod实例重新启动时覆盖日志的现有内容。 允许旧条目被新条目覆盖而不是将新条目附加到日志末尾可能会破坏出于各种目的所需的旧日志数据。

加固建议

编辑配置文件<conf_path>/mongod.conf将systemLog下的logAppend设置为true。

3.确保日志记录捕获尽可能多的信息

描述

SystemLog.quiet选项停止记录信息,例如:

?连接事件

?身份验证事件

?复制同步活动

?运行一些可能有影响的命令的证据(例如:drop,dropIndexes,

验证)

应尽可能记录此信息。 此检查仅适用于Enterprise

版本。

使用SystemLog.quiet可以解决问题并进行调查

安全事件要困难得多。

加固建议

编辑<conf_file>/mongod.conf文件中将SystemLog下的quiet设置为False以禁用它。

4.确保MongoDB使用非默认端口

描述

更改MongoDB使用的端口使攻击者更难找到数据库并将其作为目标。 标准端口用于自动攻击,并由攻击者用于验证服务器上正在运行的应用程序。

加固建议

将MongoDB服务器的端口更改为27017以外的数字

5.确保MongoDB仅侦听授权接口上的网络连接

描述

确保MongoDB在受信任的网络环境中运行涉及限制MongoDB实例侦听传入连接的网络接口。 MongoDB应删除任何不受信任的网络连接。 此配置阻止来自不受信任网络的连接,只允许授权和受信任网络上的系统尝试连接到MongoDB。 如果未配置,则可能导致从不受信任的网络到MongoDB的未授权连接。

加固建议

1、如果服务只允许本机访问,编辑MongoDB的配置文件<conf_path>/mongod.conf,在net区块下配置bindIp,将此项的值设置为:127.0.0.1(仅允许本机访问),并重启MongoDB服务。

2、如业务需要设置为跨服务器访问,可通过安全组配置访问规则,防止服务暴露到互联网上,然后忽略此项

6.确保在不需要时禁用服务器端脚本

描述

MongoDB支持为某些服务器端操作执行JavaScript代码:mapReduce,group和$ where。 如果不使用这些操作,则应禁用服务器端脚本。 如果不需要服务器端脚本并且未禁用,则会带来不必要的风险,即攻击者可能会利用不安全的编码。

加固建议

编辑<conf_file>/mongod.conf文件中将security下的javascriptEnabled:设置为false以禁用它。

7.确保正确设置了数据库文件权限

描述

MongoDB数据库文件需要使用文件权限进行保护。这将限制未经授权的用户访问数据库。

加固建议

将数据库文件的所有权设置为mongodb用户,并使用以下命令删除其他权限:

chmod 600 /var/lib/mongodb

sudo chown mongodb:mongodb /var/lib/mongodb

以上命令为默认数据库文件路径,请根据实际环境修改为正确数据库文件路径。

8.确保正确设置了密钥文件权限

描述

密钥文件用于分片群集中的身份验证。 在密钥文件上实现适当的文件权限将防止对其进行未经授权的访问。保护密钥文件可加强分片集群中的身份验证,并防止对MongoDB数据库的未授权访问。

加固建议

将keyFile所有权设置为mongodb用户,并通过执行以下命令删除其他权限:

chmod 600 <keyfile_path>/keyfile

sudo chown mongodb:mongodb <keyfile_path>/keyfile

9.确保使用非特权的专用服务帐户运行MongoDB

描述

MongoDB服务不应使用特权帐户(如“root”)运行,因为这会不必要地将操作系统暴露在高风险之下。 使用非特权专用服务帐户限制数据库访问MongoDB不需要的操作系统的关键区域。 这还将减少通过操作系统上受损的特权帐户进行未经授权访问的可能性。

加固建议

1.创建用于执行MongoDB数据库活动的专用用户。

2.将数据库数据文件,密钥文件和SSL私钥文件设置为只能读取 由mongod/mongos用户提供。

3.将日志文件设置为只能由mongod/mongos用户写入,并且只能由root读取。

4.切换至该专用用户,并重启MongoDB

10.确保为MongoDB数据库启用了身份验证

描述

此设置可确保所有客户端,用户和/或服务器都需要进行身份验证

在被授予访问MongoDB数据库之前。

无法对客户端,用户和/或服务器进行身份验证可以启用对服务器的未授权访问

MongoDB数据库可以防止跟踪操作返回其源。

加固建议

编辑MongoDB配置文件,在security区块下配置 authorization: enabled

Mongodb安全防护的更多相关文章

  1. 每天200亿次查询 – MongoDB在奇虎360【转】

    100多个应用,1,500多个实例,每天200亿次查询 奇虎是中国最大的安卓移动发布平台.奇虎也是中国最顶尖的病毒软件防护公司,同时为网络以及移动平台提供产品.自从2011年成为MongoDB的用户之 ...

  2. MongoDB安全及身份认证

    前面的话 本文将详细介绍MongoDB安全相关的内容 概述 MongoDB安全主要包括以下4个方面 1.物理隔离 系统不论设计的多么完善,在实施过程中,总会存在一些漏洞.如果能够把不安全的使用方与Mo ...

  3. mongodb数据库禁止外网访问以及添加账号

    未曾料到被黑客勒索比特币的戏码竟然降临到我的身上,几个月的技术积累付之一炬.怪只怪自己学艺不精,心存侥幸和无知,不过经此一役,方知网络安全防护的重要性. 一直未给自己的mongodb数据库设置账号密码 ...

  4. 从MongoDB里面取得json格式的数据,然后存为本地的json文件,然后再从json读取变为dict

    帮宣传下彩印网(www.caiyin.com) 有印刷,广告等等方面的需求就找这个网站吧,没错的. 天气预报在MongoDB中的天气预报的存储方式是: /* 1 */ { "_id" ...

  5. MongoDB 安全配置

    前言 随着MongoDB使用人群企业越来越广泛,黑客的注意力也转移到了其中.比如去年很火热的MongoDB劫持事件,很多人对MongoDB的安全也越来越重视.今天,我们就简单总结一些MongoDB的安 ...

  6. mongodb禁止外网访问以及添加账号

    未曾料到被黑客勒索比特币的戏码竟然降临到我的身上,几个月的技术积累付之一炬.怪只怪自己学艺不精,心存侥幸和无知,不过经此一役,方知网络安全防护的重要性. 一直未给自己的mongodb数据库设置账号密码 ...

  7. WebApp 安全风险与防护课堂开课了!

    本文由葡萄城技术团队于原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 2018 网络安全事故频发,从数据泄露.信息窃取,到 DDOS 攻击.勒索 ...

  8. MongoDB之Replica Sets环境搭建

    最近学习MongoDB,这两天在搭建复制集的时候碰到了不少问题,也踩了好多坑,现在在这里记录下来,以供自己和他人参考 (因为本人是初学者,所以遇到的问题也会比较初级,所以本文也比较适合初学者查阅) 背 ...

  9. MongoDB安全事件的防范与反思

    此文已由作者温正湖授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 近段时间来,全球范围内数以万计的MongoDB实例被攻击,作为旨在为用户提供最优MongoDB云服务的网易蜂 ...

随机推荐

  1. 算法学习->整数拆分问题

    动态规划典型题目/ 00 题目 将正整数n无需拆分为最大数为k的拆分方案有多少种?​要求所有的拆分方案不重复. 示例: 输入:n=5,k=5 输出:(5,5)=7 示例分析: 5=5 5=4+1 5= ...

  2. Android LayoutInflater(布局填充器)

    先来看一下LayoutInflater的基本用法吧,它的用法非常简单,首先需要获取到LayoutInflater的实例,有两种方法可以获取到,第一种写法如下: LayoutInflater layou ...

  3. redis可以设置过期key回调实现延时队列

    <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring- ...

  4. layui某个字段不让页面显示显示

    <script src="/layuiadmin/layui/layui.js"></script> <script> layui.config ...

  5. R语言与医学统计图形【4】直方图、金字塔图

    R语言基础绘图系统 基础图形--直方图.金字塔图 3.直方图 参数设置及比较. op <- par(mfrow=c(2,3)) data <- rnorm(100,10,5) hist(d ...

  6. mysql—MySQL数据库中10位或13位时间戳和标准时间相互转换

    1.字符串时间转10位时间戳 select FLOOR(unix_timestamp(create_time)) from page; #create_time为字段名 page为表名 eg:sele ...

  7. 搭建简单的SpringCloud项目三:问题及解决

    GitHub:https://github.com/ownzyuan/test-cloud 前篇:搭建简单的SpringCloud项目一:注册中心和公共层 搭建简单的SpringCloud项目二:服务 ...

  8. 从 ClickHouse 到 ByteHouse:实时数据分析场景下的优化实践

    本文来自火山引擎公众号,原文发布于2021-09-06. 近日,字节跳动旗下的企业级技术服务平台火山引擎正式对外发布「ByteHouse」,作为 ClickHouse 企业版,解决开源技术上手难 &a ...

  9. Ubuntu16.04安装 2.8.5版本Ansible

    wget https://bootstrap.pypa.io/pip/2.7/get-pip.py && python get-pip.py pip install --upgrade ...

  10. 巩固javaweb第十六天

    巩固内容: 下拉框 在注册功能中,地区的选择使用了下拉框,可以从地区选项中选择一个地区.在这个 例子中,只允许选择一个,而在有些情况下,下拉框可以进行多选.所以,从功能上来说, 下拉框具有单选按钮和复 ...