温馨提示×

MongoDB在Ubuntu上的网络配置建议是什么

小樊
40
2025-12-10 20:00:02
栏目: 云计算

MongoDB 在 Ubuntu 的网络配置建议

一 核心原则

  • 最小暴露面:默认仅监听本地回环,远程访问按需开放,并配合防火墙做白名单控制。
  • 强制身份认证:启用访问控制,创建管理员与最小权限的业务账户,避免空口令。
  • 加密传输:生产环境启用 TLS/SSL,防止数据在网络中被窃听或篡改。
  • 可观测与留痕:开启日志、审计与必要的监控告警,便于追踪异常连接与操作。

二 绑定地址与端口

  • 配置文件路径为 /etc/mongod.conf,关键项为 net.bindIpnet.port(默认端口 27017)。
  • 推荐做法:仅在内网或受控网络将 bindIp 设置为服务器的内网地址,必要时再追加其他受信地址;如需全网监听才使用 0.0.0.0(风险更高,务必叠加认证与防火墙白名单)。
  • 示例(仅本地):
    net:
      port: 27017
      bindIp: 127.0.0.1
    
  • 示例(内网白名单):
    net:
      port: 27017
      bindIp: 127.0.0.1,192.168.1.10,192.168.1.20
    
  • 修改后重启生效:sudo systemctl restart mongod。以上做法与示例与常见教程一致,并强调“仅绑定必要地址”的安全原则。

三 防火墙与端口开放

  • 使用 UFW(Ubuntu 常用):
    • 仅允许受信来源访问 27017:
      sudo ufw allow from <trusted_ip> to any port 27017 proto tcp
      sudo ufw enable && sudo ufw status
      
    • 如需临时全开(不推荐生产):sudo ufw allow 27017/tcp
  • 使用 iptables(如需精细控制或持久化):
    sudo iptables -A INPUT -p tcp --dport 27017 -s <trusted_ip> -j ACCEPT
    sudo iptables -A INPUT -p tcp --dport 27017 -j DROP
    # 持久化(视系统而定)
    sudo apt install iptables-persistent
    sudo netfilter-persistent save && sudo netfilter-persistent reload
    
  • 原则:防火墙只放行明确需要的来源 IP 与端口,避免对 0.0.0.0/0 开放 27017。

四 远程访问与验证

  • 在受控前提下开放远程:完成防火墙白名单后,将服务器的 内网/公网 IP 加入 bindIp(不是客户端 IP),重启服务。
  • 连接测试(从受信客户端):
    mongo --host <server_ip> --port 27017
    
  • 监听验证(服务器端):
    sudo netstat -tulpen | grep 27017
    ss -tulpen | grep 27017
    
  • 若仅本地监听,远程连接应被拒绝;验证通过后再进行业务接入。

五 加密与认证要点

  • 启用认证(/etc/mongod.conf):
    security:
      authorization: enabled
    
    重启后在 admin 库创建管理员与业务账户,遵循最小权限原则。
  • 启用 TLS/SSL(示例):
    net:
      ssl:
        mode: requireSSL
        PEMKeyFile: /path/to/mongo.pem
        CAFile: /path/to/ca.pem
        sslAllowInvalidCertificates: false
    
    证书与私钥需妥善保管,客户端连接时也应配置对应信任链。
  • 日志与审计(建议开启):
    systemLog:
      destination: file
      logAppend: true
      path: /var/log/mongodb/mongod.log
    
    结合审计与监控(如 mongostat/mongotop 或第三方平台)提升可观测性。

0