はじめに
ローカル LLM を触る人が、
-
ollama serveをそのまま実行する -
0.0.0.0に bind する - shell tool を無防備に許可する
- Docker socket を agent に渡す
といった危険な構成も非常に多く見かけます。
しかし、本当に危険なのは「LLM」そのものではありません。
危険なのは:
LLM + 自動実行権限 + ネットワーク露出
です。
今回は Windows + WSL2 + Ollama 環境で、最低限やっておくべき安全対策を整理します。
危険な状態とは?
最も危険なのは:
0.0.0.0:11434
で Ollama を listen してしまうことです。
これは:
LAN 内の他端末から API にアクセス可能
を意味します。
まず確認:
netstat -ano | findstr 11434
安全な状態:
127.0.0.1:11434
危険な状態:
0.0.0.0:11434
localhost のみに bind する
PowerShell:
$env:OLLAMA_HOST="127.0.0.1:11434"
ollama serve
起動ログ:
Listening on 127.0.0.1:11434
これで外部アクセスは遮断されます。
Windows Firewall で二重防御
localhost bind のみでは不十分です。
将来:
- 設定変更
- GUI wrapper
- plugin
- 更新
などで accidentally 0.0.0.0 になる可能性があります。
そのため Firewall で TCP 11434 を block します。
管理者 PowerShell:
New-NetFirewallRule `
-DisplayName "Block Ollama 11434 Inbound" `
-Direction Inbound `
-LocalPort 11434 `
-Protocol TCP `
-Action Block
これで仮に誤設定しても外部から接続されにくくなります。
OLLAMA_ORIGINS を誤解しない
ログに:
OLLAMA_ORIGINS:[http://0.0.0.0 ...]
が表示されることがあります。
これは:
CORS 設定
であり、listen address ではありません。
つまり:
| 項目 | 意味 |
|---|---|
| OLLAMA_HOST | 実際の bind address |
| OLLAMA_ORIGINS | Browser JS の許可 origin |
です。
127.0.0.1 bind が本当の隔離境界です。
永続的に OLLAMA_MODELS を設定
一時変数ではなく User Environment Variable を設定します。
[Environment]::SetEnvironmentVariable(
"OLLAMA_MODELS",
"D:\ollama\models",
"User"
)
本当に危険なのは Agent 化
ここが最重要です。
単なる chat UI はそこまで危険ではありません。
しかし以下は一気に攻撃面が広がります:
- Continue.dev
- Cline
- RooCode
- Open Interpreter
- browser-use
- LangChain Agent
- MCP tool
理由は:
自然言語
→ shell command
→ system execution
が発生するためです。
絶対に避けるべき構成
1. model output をそのまま実行
危険:
subprocess.run(model_output)
さらに危険:
exec(model_output)
LLM output は:
trusted code ではなく untrusted input
として扱うべきです。
2. Docker socket を agent に渡す
絶対に避ける:
-v /var/run/docker.sock
これは実質:
host root access
です。
3. 管理者 PowerShell で agent 実行
LLM runtime に admin 権限は不要です。
agent は低権限ユーザーで動かすべきです。
推奨構成
Windows Host
↓
WSL2 Ubuntu
↓
non-sudo user
↓
Ollama
↓
sandboxed projects
まとめ
AI runtime を「ただの chat tool」として扱うのではなく、
潜在的に system execution capability を持つ runtime
として設計する必要があります。