mongodb安全整改
MongoDB 核心服务本身(社区版 / 企业版)并没有内置的、开箱即用的密码复杂度策略,它不仅不会继承系统的密码复杂度配置(比如要求密码包含大小写字母、数字、特殊字符或最小长度等),通过自身配置文件(如 mongod.conf)也无法指定密码复杂度、登录失败锁定等相关配置,这使得它相比其他数据库系统更容易受到暴力破解攻击。
高危
确保启用了身份验证
- 安全风险:此设置可确保所有客户端,用户和或服务器都需要进行身份验证,避免未授权的访问
- 加固建议:编辑MongoDB配置文件,配置 auth=true,然后重启mongodb服务
[root@localhost ~]# cat /data/mongo_3717/mongod_3717.conf | grep auth
auth=true
空口令或弱口令
- 安全风险:MongoDB登录账户常见弱口令检测
- 加固建议:为了保证系统不被黑客恶意猜解入侵,首先确认配置文件已设置 auth=true,然后设置强密码
确保使用非特权的专用服务帐户运行服务
- 安全风险:MongoDB服务不应使用特权帐户(如“root”)运行,因为这会不必要地将操作系统暴露在高风险之下
- 加固建议:使用root切换到mongodb用户启动服务
useradd -s /sbin/nologin -M mongodb
chown -R mongodb.mongodb /opt/mongodb
chown -R mongodb.mongodb /data/mongo_3717
sudo -u mongodb numactl --interleave=all /opt/mongodb/bin/mongod -f /data/mongo_3717/mongod_3717.conf
确保正确设置了密钥文件权限
- 安全风险:密钥文件用于mongodb服务的身份验证,保护密钥文件可加强分片集群中的身份验证,并防止对MongoDB数据库的未授权访问
- 加固建议:将keyFile所有权设置为mongodb用户,文件权限设置为600或更低
chmod 600 /data/mongo_3717/data/keyfile
chown mongodb:mongodb /data/mongo_3717/data/keyfile
确保正确设置了数据库文件权限
- 安全风险:MongoDB数据库文件需要使用文件权限进行保护,这将限制未经授权的用户访问数据库
- 加固建议:将数据库文件的所有权设置为mongodb用户,文件权限设置为600或更低
chmod 600 /data/mongo_3717
chown mongodb:mongodb /data/mongo_3717
未授权访问
- 安全风险:默认情况下启动mongodb服务存在未授权访问风险,用户可以远程访问数据库,无需认证连接数据库并对数据库进行任意操作,存在严重的数据泄露风险
- 加固建议:通过 bind_ip 限制监听范围、通过 auth=true 开启登录认证、增加认证用户,然后重启mongodb服务
[root@localhost ~]# cat /data/mongo_3717/mongod_3717.conf | egrep "(bind_ip|auth)"
bind_ip=192.168.0.20
auth=true
确保在不需要时禁用服务器端脚本
- 安全风险:MongoDB支持为某些服务器端操作执行JavaScript代码:mapReduce,group和$ where。 如果不使用这些操作,则应禁用服务器端脚本,避免带来不必要的风险
- 加固建议:编辑MongoDB配置文件,将security下的javascriptEnabled:设置为false以禁用它,然后重启mongodb服务
中危
确保使用非默认端口
- 安全风险:更改MongoDB使用的端口使攻击者更难找到数据库并将其作为目标
- 加固建议:编辑MongoDB配置文件,将MongoDB服务器的端口更改为27017以外的数字,然后重启mongodb服务
[root@localhost ~]# cat /data/mongo_3717/mongod_3717.conf | grep port
port 3717