1. 修改MongoDB配置文件调整绑定IP
MongoDB的网络访问控制核心是bindIp参数,位于/etc/mongod.conf文件的net section。默认情况下,Ubuntu上的MongoDB仅绑定到本地地址(127.0.0.1),仅允许本机访问。若需允许远程连接,可修改bindIp为特定IP地址(如192.168.1.100,仅允许该IP连接)或**0.0.0.0**(允许所有IP连接,生产环境不推荐)。修改后需重启MongoDB服务使配置生效:
sudo systemctl restart mongod
验证绑定是否成功,可使用netstat命令查看监听端口:
sudo netstat -tuln | grep 27017
若输出显示192.168.1.100:27017或0.0.0.0:27017,则说明配置生效。
2. 配置防火墙限制访问
即使修改了bindIp,仍需通过防火墙进一步限制访问,防止未经授权的IP连接。Ubuntu常用ufw(Uncomplicated Firewall)管理防火墙规则:
sudo apt update && sudo apt install ufw
sudo ufw enable
192.168.1.50):sudo ufw allow from 192.168.1.50 to any port 27017/tcp
iptables,可添加规则允许特定IP段(如192.168.1.0/24)访问:sudo iptables -A INPUT -p tcp --dport 27017 -s 192.168.1.0/24 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 27017 -j DROP
持久化iptables规则(避免重启失效):sudo apt install iptables-persistent
sudo netfilter-persistent save
sudo ufw status # 查看ufw规则
sudo iptables -L -n # 查看iptables规则
3. 启用MongoDB认证机制
为防止未授权访问,必须启用MongoDB的身份验证。在/etc/mongod.conf文件的security section添加以下配置:
security:
authorization: enabled
重启MongoDB服务使认证生效:
sudo systemctl restart mongod
创建管理员用户(以admin数据库为例):
mongo
use admin
db.createUser({
user: "admin",
pwd: "StrongPassword123!",
roles: [{ role: "root", db: "admin" }]
})
exit
此后,连接MongoDB需提供用户名和密码,如:
mongo --host 192.168.1.100 --port 27017 -u admin -p StrongPassword123 --authenticationDatabase admin
4. 限制远程访问范围
为降低安全风险,建议仅允许特定IP或IP段连接MongoDB。修改bindIp时,可指定服务器的私有IP地址(如192.168.1.100),而非0.0.0.0。同时,通过防火墙规则(如ufw或iptables)限制访问来源,例如仅允许公司内网IP段(10.0.0.0/8)访问:
sudo ufw allow from 10.0.0.0/8 to any port 27017/tcp
或在iptables中添加:
sudo iptables -A INPUT -p tcp --dport 27017 -s 10.0.0.0/8 -j ACCEPT
5. 启用SSL/TLS加密通信
为防止数据在传输过程中被窃取或篡改,建议启用SSL/TLS加密。首先,获取有效的SSL证书(如自签名证书或CA颁发的证书),将证书文件(mongodb.pem)和CA证书文件(ca.pem)放置在安全目录(如/etc/ssl/)。然后,修改/etc/mongod.conf文件的net.ssl section:
net:
ssl:
mode: requireSSL
PEMKeyFile: /etc/ssl/mongodb.pem
CAFile: /etc/ssl/ca.pem
sslAllowInvalidCertificates: false # 生产环境务必设置为false
重启MongoDB服务使加密生效:
sudo systemctl restart mongod
客户端连接时需指定SSL参数:
mongo --host 192.168.1.100 --port 27017 -u admin -p StrongPassword123 --authenticationDatabase admin --ssl --sslCAFile /etc/ssl/ca.pem
6. 监控与日志记录
启用审计日志,记录所有用户的操作(如查询、插入、删除),便于后续审查异常行为。在/etc/mongod.conf文件的systemLog section添加以下配置:
systemLog:
destination: file
path: /var/log/mongodb/mongod_audit.log
logAppend: true
format: JSON # 推荐使用JSON格式,便于解析
重启MongoDB服务使日志生效:
sudo systemctl restart mongod
定期检查日志文件,可使用tail命令实时查看:
tail -f /var/log/mongodb/mongod_audit.log
若发现异常操作(如大量删除数据),可及时采取措施(如锁定用户、回滚数据)。