




















避免使用默认 27017,改成一个不常用的高位端口(如 30017、37017 等):
# /etc/mongod.conf
net:
port: 30017
bindIp: 127.0.0.1
默认配置一般只绑定 127.0.0.1,如果必须远程访问,建议只允许特定内网 IP:
net:
bindIp: 127.0.0.1,192.168.1.100
默认 MongoDB 没有开启认证,所有人都能直接操作数据库,非常危险。
步骤:
security:
authorization: enabled
use admin
db.createUser({
user: "root",
pwd: "StrongPasswordHere",
roles: ["root"]
})
示例(只允许内网 192.168.1.0/24 访问):
sudo ufw allow from 192.168.1.0/24 to any port 30017
sudo ufw deny 30017
防止明文传输泄露数据:
net:
ssl:
mode: requireSSL
PEMKeyFile: /etc/ssl/mongodb.pem
推荐实践组合(生产环境最常用)
#!/bin/bash
# MongoDB 安全加固脚本
# 功能:修改端口、防火墙限制、开启认证
set -e
# === 配置部分 ===
MONGO_PORT=30017 # 修改后的 MongoDB 端口
MONGO_BIND_IP="127.0.0.1" # 绑定的 IP,可以换成内网 IP
ADMIN_USER="root" # 管理员用户名
ADMIN_PASS="StrongPass123!" # 管理员密码(请修改为更强的)
# === 修改 mongod.conf ===
CONF_FILE="/etc/mongod.conf"
if [ ! -f "$CONF_FILE" ]; then
echo "❌ 未找到 $CONF_FILE,请确认 MongoDB 安装路径"
exit 1
fi
echo " 修改 MongoDB 配置..."
sudo sed -i "s/port:.*/port: ${MONGO_PORT}/" $CONF_FILE
sudo sed -i "s/bindIp:.*/bindIp: ${MONGO_BIND_IP}/" $CONF_FILE
# 如果 security 字段不存在,则追加
if ! grep -q "authorization:" $CONF_FILE; then
echo -e "\nsecurity:\n authorization: enabled" | sudo tee -a $CONF_FILE
else
sudo sed -i "s/authorization:.*/authorization: enabled/" $CONF_FILE
fi
# === 重启 MongoDB ===
echo " 重启 MongoDB..."
if command -v systemctl &>/dev/null; then
sudo systemctl restart mongod
else
sudo service mongod restart
fi
# === 创建管理员用户 ===
echo " 创建 MongoDB 管理员用户..."
mongo admin --eval "db.createUser({user:'$ADMIN_USER', pwd:'$ADMIN_PASS', roles:['root']})" || true
# === 配置防火墙 ===
echo " 配置防火墙..."
if command -v ufw &>/dev/null; then
sudo ufw allow from 127.0.0.1 to any port $MONGO_PORT
sudo ufw deny $MONGO_PORT
elif command -v firewall-cmd &>/dev/null; then
sudo firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='127.0.0.1' port protocol='tcp' port=$MONGO_PORT accept"
sudo firewall-cmd --permanent --remove-port=27017/tcp
sudo firewall-cmd --reload
else
echo "⚠ 未检测到 ufw 或 firewalld,请手动配置防火墙"
fi
echo "✅ MongoDB 已加固完成!"
echo " 连接方式: mongo --port $MONGO_PORT -u $ADMIN_USER -p $ADMIN_PASS --authenticationDatabase admin"
修改 mongod.conf:
重启 MongoDB
创建管理员用户 root/StrongPass123!
配置防火墙:

Don’t reinvent the wheel, library code is there to help.
欢迎关注公-众-号【TaonyDaily】、留言、评论,一起学习。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。