默认情况下,MongoDB仅绑定到本地回环地址(127.0.0.1),仅允许本地访问。需根据实际需求修改/etc/mongod.conf中的bindIp参数:
bindIp设置为对应IP(如192.168.1.100),避免暴露给公网。0.0.0.0,但仅建议在信任的网络环境(如内网)中使用,否则会增加被攻击的风险。net:
port: 27017
bindIp: 127.0.0.1,192.168.1.100 # 允许本地及指定内网IP访问
修改后需重启MongoDB服务使配置生效:sudo systemctl restart mongod。
CentOS默认启用firewalld,需开放MongoDB的默认端口(27017)以允许合法流量:
# 添加永久规则(--permanent表示永久生效)
sudo firewall-cmd --zone=public --add-port=27017/tcp --permanent
# 重新加载防火墙配置
sudo firewall-cmd --reload
验证规则:sudo firewall-cmd --list-ports,确认27017/tcp已在列表中。
为避免数据库被非法登录,必须启用MongoDB的身份验证机制:
/etc/mongod.conf的security部分添加authorization: enabled,启用基于角色的访问控制(RBAC)。admin),并分配userAdminAnyDatabase、readWriteAnyDatabase等角色。use admin
db.createUser({
user: "admin",
pwd: "StrongPassword123!", // 使用强密码(包含大小写字母、数字、特殊字符)
roles: ["userAdminAnyDatabase", "readWriteAnyDatabase"]
})
注意:启用认证后,所有客户端连接需提供用户名和密码(如mongo --host <IP> --port 27017 -u admin -p --authenticationDatabase admin)。
确保MongoDB监听的网络接口稳定,尤其是生产环境需使用静态IP:
/etc/sysconfig/network-scripts/ifcfg-ens33,根据实际网卡名称调整),设置BOOTPROTO=static、ONBOOT=yes、IPADDR(静态IP)、NETMASK(子网掩码)、GATEWAY(网关)、DNS1(主DNS)等参数。DEVICE=ens33
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=114.114.114.114
sudo systemctl restart network,使静态IP生效。为防止数据在传输过程中被窃取或篡改,建议启用SSL/TLS加密:
/etc/mongod.conf的net.ssl部分添加以下参数:net:
ssl:
mode: requireSSL # 强制使用SSL
PEMKeyFile: /etc/ssl/mongodb.pem # 证书文件路径(包含私钥和公钥)
CAFile: /etc/ssl/ca.pem # CA证书路径(验证客户端证书,可选)
sudo systemctl restart mongod,使加密配置生效。通过日志记录网络连接和错误信息,便于及时发现异常:
/etc/mongod.conf的systemLog部分设置日志级别为2(info级别,记录常规连接信息),并指定日志文件路径:systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
logLevel: 2
tail -f /var/log/mongodb/mongod.log实时监控日志,或通过grep过滤关键信息(如connection accepted、authentication failed)。yum update mongodb-org命令更新到最新版本,修复已知安全漏洞。mongodump工具定期备份数据库(如每日备份),存储到异地或云存储中。cgroups或systemd限制MongoDB的内存、CPU使用,避免因资源耗尽导致网络服务中断。以上优化措施覆盖了MongoDB在CentOS中的网络配置关键环节,兼顾了安全性、稳定性和可维护性。生产环境中需根据实际需求调整(如严格限制bindIp、强制使用SSL),确保数据库网络环境的安全可靠。