本地部署为什么重要:数据安全、隐私保护、端口暴露避坑指南

本地部署 AI 工具最大的优势是数据不出本机。但很多人部署完就不管了——端口裸开、默认密码、无认证,等于把大门敞开。


最危险的三件事

Ollama 0.0.0.0 裸开

为了让 Docker 容器能访问,很多人把 OLLAMA_HOST 改成 0.0.0.0。这意味着互联网上任何人都能调你的模型。

检查:ss -tlnp | grep 11434。如果看到 0.0.0.0:11434 且服务器有公网 IP,任何人可访问。

正确做法:只绑 127.0.0.1,通过 Nginx 反代 + Basic Auth 暴露。或者用防火墙限制来源 IP:ufw allow from 192.168.1.0/24 to any port 11434

数据库端口对外

MySQL 3306、PostgreSQL 5432、Redis 6379——被扫描到暴力破解只是时间问题。

ss -tlnp | grep -E "3306|5432|6379" 检查。所有数据库应该只监听 127.0.0.1 或 Docker 内部网络。

默认密码/无认证

Open WebUI 首次登录会让你注册,但很多人不设密码直接用。Dify、n8n、AnythingLLM 都有默认或空密码的坑。


安全基线

一台只跑 AI 服务的服务器,对外只需开三个端口:SSH(建议改端口+密钥登录)、80(跳 HTTPS)、443。其他全关。

BASH
ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp && ufw allow 80/tcp && ufw allow 443/tcp
ufw enable

SSH 加固:改端口、禁密码登录(只用密钥)、禁 root 直接登录、限制 MaxAuthTries 为 3。改之前确认密钥能用,不然把自己锁在外面。

所有 Web 服务走 HTTPS,用 certbot 一键申请。所有服务加认证,不要裸开。


为什么本地部署重要

云端 API 的问题:对话数据会被记录用于训练和审查、可能触发内容审核、依赖网络、持续花钱。

本地部署的好处:数据不出本机、没有内容审核限制、离线也能用、一次性硬件投入后免费。

但前提是你部署对了,没有把后门开着。


安全审计脚本

一键检查当前状态:

BASH
echo "=== 对外暴露的端口 ==="
ss -tlnp | grep -v "127.0.0.1" | grep -v "::1"

echo "=== 数据库端口 ==="
if ss -tlnp | grep -qE "(3306|5432|6379).*0.0.0.0"; then
  echo "⚠️ 数据库端口对外暴露!"
else
  echo "✅ 数据库端口未对外暴露"
fi

echo "=== Ollama 监听 ==="
ss -tlnp | grep 11434

echo "=== 防火墙 ==="
ufw status 2>/dev/null || echo "UFW 未启用"

echo "=== 最近登录 ==="
last -5

建议每月跑一次。装个 Fail2Ban 自动封暴力破解 IP:apt install -y fail2ban && systemctl enable fail2ban

发表评论