MongoDB基线
支持3.X版本的MongoDB
访问控制
1.高危-确保使用非特权的专用服务帐户运行MongoDB
描述:
MongoDB服务不应使用特权帐户(如“root”)运行,因为这会不必要地将操作系统暴露在高风险之下。 使用非特权专用服务帐户限制数据库访问MongoDB不需要的操作系统的关键区域。 这还将减少通过操作系统上受损的特权帐户进行未经授权访问的可能性。
加固建议:
- 创建用于执行MongoDB数据库活动的专用用户。
- 将数据库数据文件,密钥文件和SSL私钥文件设置为只能读取 由mongod/mongos用户提供。
- 将日志文件设置为只能由mongod/mongos用户写入,并且只能由root读取。
- 切换至该专用用户,并重启MongoDB
2.中危-确保MongoDB仅侦听授权接口上的网络连接
描述:
确保MongoDB在受信任的网络环境中运行涉及限制MongoDB实例侦听传入连接的网络接口。 MongoDB应删除任何不受信任的网络连接。 此配置阻止来自不受信任网络的连接,只允许授权和受信任网络上的系统尝试连接到MongoDB。 如果未配置,则可能导致从不受信任的网络到MongoDB的未授权连接。
加固建议:
- 如果服务只允许本机访问,编辑MongoDB的配置文件<conf_path>/mongod.conf,在net区块下配置bindIp,将此项的值设置为:127.0.0.1(仅允许本机访问),并重启MongoDB服务。
- 如业务需要设置为跨服务器访问,可通过安全组配置访问规则,防止服务暴露到互联网上,然后忽略此项
文件权限
3.高危-确保正确设置了密钥文件权限
描述:
密钥文件用于分片群集中的身份验证。 在密钥文件上实现适当的文件权限将防止对其进行未经授权的访问。保护密钥文件可加强分片集群中的身份验证,并防止对MongoDB数据库的未授权访问。
加固建议:
将keyFile所有权设置为mongodb用户,并通过执行以下命令删除其他权限:
chmod 600 <keyfile_path>/keyfile
sudo chown mongodb:mongodb <keyfile_path>/keyfile
4.高危-确保正确设置了数据库文件权限
描述:
MongoDB数据库文件需要使用文件权限进行保护。这将限制未经授权的用户访问数据库。
加固建议:
将数据库文件的所有权设置为mongodb用户,并使用以下命令删除其他权限:
chmod 600 /var/lib/mongodb
sudo chown mongodb:mongodb /var/lib/mongodb
以上命令为默认数据库文件路径,请根据实际环境修改为正确数据库文件路径。
服务配置
5.高危-确保在不需要时禁用服务器端脚本
描述:
MongoDB支持为某些服务器端操作执行JavaScript代码:mapReduce,group和$ where。 如果不使用这些操作,则应禁用服务器端脚本。 如果不需要服务器端脚本并且未禁用,则会带来不必要的风险,即攻击者可能会利用不安全的编码。
加固建议:
编辑<conf_file>/mongod.conf
文件中将security下的javascriptEnabled:设置为false
以禁用它。
6.中危-确保MongoDB使用非默认端口
描述:
更改MongoDB使用的端口使攻击者更难找到数据库并将其作为目标。 标准端口用于自动攻击,并由攻击者用于验证服务器上正在运行的应用程序。
加固建议:
将MongoDB服务器的端口更改为27017以外的数字
身份鉴别
7.高危-确保为MongoDB数据库启用了身份验证
描述:
此设置可确保所有客户端,用户和/或服务器都需要进行身份验证 在被授予访问MongoDB数据库之前。 无法对客户端,用户和/或服务器进行身份验证可以启用对服务器的未授权访问 MongoDB数据库可以防止跟踪操作返回其源。
加固建议:
打开配置文件<mongod.conf>,设置auth=true,如果配置文件为yaml格式,则在security选项下设置authorization:enabled;
开启认证前需要添加认证用户
8.高危-PostgreSQL弱口令检查
描述:
若系统使用弱口令,存在极大的被恶意猜解入侵风险,需立即修复。
加固建议
登录postgresql,使用如下命令修改弱口令:
ALTER USER <user> WITH PASSWORD '<newpassword>';
其中为用户名,为新口令。新口令应符合复杂性要求:
- 长度8位以上
- 包含以下四类字符中的三类字符:
- 英文大写字母(A 到 Z)
- 英文小写字母(a 到 z)
- 10 个基本数字(0 到 9)
- 非字母字符(例如 !、$、#、%、@、^、&)
- 避免使用已公开的弱口令,如:abcd.1234 、admin@123等
安全审计
8.高危-确保日志记录捕获尽可能多的信息
描述:
SystemLog.quiet选项停止记录信息,例如: ?连接事件 ?身份验证事件 ?复制同步活动 ?运行一些可能有影响的命令的证据(例如:drop,dropIndexes, 验证) 应尽可能记录此信息。 此检查仅适用于Enterprise 版本。 使用SystemLog.quiet可以解决问题并进行调查 安全事件要困难得多。
加固建议:
编辑<conf_file>/mongod.conf
文件中将SystemLog下的quiet设置为False以禁用它。
9.高危-确保将新条目附加到日志文件的末尾
描述:
默认情况下,新的日志条目将在重新启动mongod或Mongols服务后覆盖旧条目。 启用systemLog.logAppend设置会导致新条目附加到日志文件的末尾,而不是在mongos或mongod实例重新启动时覆盖日志的现有内容。 允许旧条目被新条目覆盖而不是将新条目附加到日志末尾可能会破坏出于各种目的所需的旧日志数据。
加固建议:
编辑配置文件<conf_path>/mongod.conf
将systemLog下的logAppend设置为true。