温馨提示×

MongoDB在Ubuntu上的网络设置技巧

小樊
41
2025-10-25 05:12:48
栏目: 云计算

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:270170.0.0.0:27017,则说明配置生效。

2. 配置防火墙限制访问
即使修改了bindIp,仍需通过防火墙进一步限制访问,防止未经授权的IP连接。Ubuntu常用ufw(Uncomplicated Firewall)管理防火墙规则:

  • 安装ufw(若未安装):
    sudo apt update && sudo apt install ufw
    
  • 启用ufw:
    sudo ufw enable
    
  • 允许MongoDB默认端口(27017)的特定IP访问(如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

若发现异常操作(如大量删除数据),可及时采取措施(如锁定用户、回滚数据)。

0