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