本地部署大模型,如何防止被用于挖矿?
挖矿为什么会盯上你的大模型服务器
很多人觉得“我电脑性能一般,挖矿看不上”。
但攻击者的逻辑很简单:哪里有 GPU,哪里就有挖矿红利。
本地部署大模型时,服务器往往配备了高档显卡或专用加速卡,而且通常对外暴露 API 端口(如 Ollama 默认的 11434)。
如果不做防护,攻击者扫描到开放端口后,就能通过漏洞或弱密码植入挖矿程序,把你的机器变成“矿机”。
三步加固你的部署环境
1. 封掉多余端口,只留必需
大模型服务(如 Ollama、LocalAI、文本生成推理)通常只需要一个 API 端口对外。
以 Ollama 为例,默认监听 0.0.0.0:11434,意味着任意 IP 都能访问。
你需要用防火墙限制来源 IP。
操作步骤(以 UFW 为例):
# 如果没安装 UFW
sudo apt install ufw -y
# 只允许内网或特定 IP 访问 11434(假设你的内网段是 192.168.1.0/24)
sudo ufw allow from 192.168.1.0/24 to any port 11434
# 允许 SSH(否则你会被锁在外面)
sudo ufw allow ssh
# 开启防火墙
sudo ufw enable
如果你只在本机用,可以直接让服务监听 127.0.0.1。
修改 Ollama 配置文件(/etc/systemd/system/ollama.service 里的 Environment 行):
Environment="OLLAMA_HOST=127.0.0.1:11434"
然后 sudo systemctl daemon-reload && sudo systemctl restart ollama。
2. 用非特权用户运行服务,并禁用 root 远程登录
挖矿程序通常以漏洞触发时运行的用户权限行动。
如果你用 root 跑大模型,一旦被攻破就是无限制访问。
创建专门用户(以 aiuser 为例):
sudo useradd -m -s /bin/bash aiuser
sudo usermod -aG docker aiuser # 假设你用容器
# 然后用 su aiuser 切换后启动服务
同时修改 SSH 配置 /etc/ssh/sshd_config:
PermitRootLogin no
然后 sudo systemctl restart sshd。
3. 启用进程监控和资源限制
挖矿进程会持续占用 CPU/GPU,导致服务变慢。
你可以用 htop 或 nvidia-smi 实时观察。
更保险的做法是用 systemd 限制资源或使用容器。
示例:用 Docker 限制 GPU 和内存
docker run -d --gpus all \
--memory=16g \
--cpus=4 \
-v /data/ollama:/root/.ollama \
-p 127.0.0.1:11434:11434 \
ollama/ollama
这样即使容器被突破,挖矿程序也只能在资源限制内运行,很难造成毁灭性影响。
必须避开的三个坑
- 只封端口不封 IP:防火墙规则写成
allow 11434不限制来源,等于没封。一定要加上来源 IP 段。 - 忘记更新软件:大模型框架、依赖库、系统内核都可能存在漏洞。建议每月执行
apt update && apt upgrade -y,并关注官方安全公告。 - 用了默认配置的 API Key:很多本地部署框架支持 API 认证(如 Ollama 的
--auth),但默认不开启。一定要设置 token 或使用反向代理(如 Nginx)增加http_auth。
这样验证是否被入侵
定期执行以下检查:
# 查看异常进程
ps aux --sort=-%cpu | head -20
# 检查 GPU 使用率(NVIDIA)
watch -n 1 nvidia-smi
# 查看监听端口,确认只有你开放的端口
sudo netstat -tulpn | grep LISTEN
# 查看系统日志里可疑的登录或执行记录
sudo journalctl -xe | grep -i 'ssh|su|sudo|new user' | tail -50
如果发现陌生进程名如 xmrig、minerd 或 CPU/GPU 长期满载,马上断开网络、杀进程、删除定时任务。
总结:安全没有一劳永逸
本地部署大模型带来了便利,也带来了被挖矿的风险。
通过最小权限原则、严格防火墙规则、资源隔离和持续监控,就算不是安全专家也能极大降低风险。
如果你正在处理本地部署大模型的防挖矿问题,建议先按本文步骤完整执行,再根据自己的环境微调;
遇到异常时优先回看避坑和高频问题部分。