「チーム外や社外から11434番ポートへアクセスされないか不安だ」
そんな不安を抱えるLinuxエンジニアや情報システム担当者は多いはずです。この記事では、OllamaのAPIポートをufwとsystemdの組み合わせで保護し、社内ネットワークのサブネットだけにアクセスを絞る手順を一通り解説します。
iptablesとの使い分け、Nginxリバースプロキシとの多層防御構成、設定後の実測検証方法まで含めて、本番運用に耐えるファイアウォール設定を完成させましょう。
この記事のポイント
・sudo ufw allow from 192.168.1.0/24 to any port 11434 proto tcp でサブネット限定公開が即日実現できる
・systemdのEnvironment="OLLAMA_HOST=127.0.0.1:11434"でLoopbackバインドに絞るとプロセスレベルで外部遮断できる
・NginxをHTTPS終端にして11434番ポートを外部に見せないのがチーム運用の定石
・設定後はnmap -p 11434 でfilteredと表示されるか実測で確認する
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
OllamaをインストールするとAPIポートはどこまで公開されているか
Ollamaを公式の1コマンドインストール(`curl -fsSL https://ollama.com/install.sh | sh`)で導入すると、デフォルトでは `0.0.0.0:11434` にバインドされます。これはサーバーのすべてのNICに対して11434番ポートを開放した状態です。同じLAN内のPCからはもちろん、クラウドVPSのセキュリティグループや社内ルーターのNATが通している経路があれば、外部のネットワークからもOllamaのAPIに到達できてしまいます。
オンプレミスの社内サーバーであれば、ルーターの外側からの到達は難しいケースが多いです。ただし、VPN経由でLANに入ったメンバーが誰でも11434番にアクセスできる状態になっており、権限のないメンバーが社内の機密データを学習させたモデルに問い合わせできてしまう可能性があります。
クラウドVPS(AWS EC2・さくらVPS・Vultrなど)でOllamaを立てている場合はさらにリスクが高まります。セキュリティグループやファイアウォールの設定ミスが一つあるだけで、インターネット上にLLM APIが丸ごと公開される可能性があります。OllamaにはデフォルトでAPIキー認証がないため、URLさえわかれば誰でもモデルを呼び出せます。
現在のリッスン状態は以下のコマンドで確認できます。
# Ollamaのリッスン状態を確認 $ ss -tlnp | grep 11434 LISTEN 0 4096 0.0.0.0:11434 0.0.0.0:* users:(("ollama",pid=12345,fd=7))
ufwの基礎確認とOllamaが使うポート番号
Ubuntu Serverでは `ufw`(Uncomplicated Firewall)がデフォルトのファイアウォール管理ツールです。iptablesの複雑なルール記述を抽象化しており、ポートの許可・拒否を人間が読みやすい書式で管理できます。まずufwが有効になっているかを確認します。
# ufwの状態と現在のルールを確認 $ sudo ufw status verbose Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), disabled (routed) New profiles: skip To Action From -- ------ ---- 22/tcp ALLOW IN Anywhere
Ollamaが使うポートは11434番のTCPのみです。このポートへの通信をどの範囲に許可するかが今回の設定の核心です。
ufwのデフォルト設定(`deny incoming`)が有効であれば、11434番は許可ルールがない限り全拒否のはずです。ただし、過去の作業で `ufw allow 11434` のような全開放ルールが入っている場合は、本記事の手順の前に削除する必要があります。現在のルールを番号付きで確認してから作業を進めましょう。
# ルールを番号付きで一覧表示 $ sudo ufw status numbered To Action From -- ------ ---- [ 1] 22/tcp ALLOW IN Anywhere [ 2] 11434 ALLOW IN Anywhere ← 全開放になっていたら削除する # 全開放ルールを削除する場合(番号を指定) $ sudo ufw delete 2
OllamaのAPIを社内サブネットだけに限定するufw設定
チームのサーバーが 192.168.1.0/24 のサブネットに属しているケースを例に、Ollamaへのアクセスをそのサブネット内からのみ許可します。サブネットのアドレスは環境に合わせて変更してください。1. サブネット限定の許可ルールを追加する
# 社内サブネット(192.168.1.0/24)からの11434番アクセスのみ許可 $ sudo ufw allow from 192.168.1.0/24 to any port 11434 proto tcp Rule added
2. 設定後のufw statusで反映を確認する
$ sudo ufw status numbered To Action From -- ------ ---- [ 1] 22/tcp ALLOW IN Anywhere [ 2] 11434/tcp ALLOW IN 192.168.1.0/24
社外からVPN経由でアクセスするメンバーがいる場合は、VPNのIPレンジも追加してください。
# VPNサブネット(例: 10.8.0.0/24)も追加許可 $ sudo ufw allow from 10.8.0.0/24 to any port 11434 proto tcp
3. 特定の管理用IPアドレスだけを許可する場合
さらに絞り込みたい場合、サブネット単位ではなく特定のIPアドレスだけを許可できます。インフラ担当者のIPだけに限定する運用で有効です。# 特定のIPのみ許可(例: 管理者端末 192.168.1.50) $ sudo ufw allow from 192.168.1.50 to any port 11434 proto tcp # 複数のIPをまとめて許可する場合は1行ずつ追加する $ sudo ufw allow from 192.168.1.51 to any port 11434 proto tcp
OllamaのバインドアドレスをsystemdのEnvironmentで制限する
ufwはファイアウォールレベルの保護ですが、Ollama自体が `0.0.0.0` にバインドしている限り、サーバー上で動くスクリプトや同一サーバー上の別サービスから11434番への直接接続は制限できません。プロセスレベルで外部NICへの応答を止めるには、Ollamaのバインドアドレスを `127.0.0.1` に絞ります。systemdのoverride.confでOLLAMA_HOST環境変数を設定するのが正しい手順です。直接 `/etc/systemd/system/ollama.service` を編集すると、Ollamaのアップデート時に上書きされる可能性があります。
1. systemctl editでoverride.confを作成する
# エディタでoverride.confを開く(存在しない場合は新規作成) $ sudo systemctl edit ollama
[Service] Environment="OLLAMA_HOST=127.0.0.1:11434"
2. systemdをリロードしてOllamaを再起動する
$ sudo systemctl daemon-reload $ sudo systemctl restart ollama # バインドアドレスが変わったか確認 $ ss -tlnp | grep 11434 LISTEN 0 4096 127.0.0.1:11434 0.0.0.0:* users:(("ollama",pid=23456,fd=7))
Ollamaをsystemdのサービスとして運用する詳細(override.confの書き方・ログ確認方法)は別記事でまとめています。本記事ではバインドアドレスの変更に絞って説明します。
なお、OLLAMA_HOST をユーザーのシェル環境変数(~/.bashrc など)に設定するのは**推奨しません**。systemdサービスとしての起動時に反映されず、ユーザーセッション依存の設定になってしまうためです。override.conf経由での設定が信頼性の高い方法です。
iptablesで細かいアクセス制御を追加する(ufw補完)
ufwは内部でiptablesのルールを管理しています。通常はufwだけで十分ですが、接続数のレート制限(rate limiting)やより細かいパケットフィルタリングが必要な場合は、iptablesのルールを直接追加することもできます。たとえば、同一IPから短時間に大量のリクエストを投げてサーバーリソースを消費される場合への対策として、1分あたりの新規接続数を制限するルールを追加できます。
# 1分あたり20接続を超えたIPからの新規接続をDROPする $ sudo iptables -I INPUT -p tcp --dport 11434 -m state --state NEW \ -m recent --set --name OLLAMA_RATE $ sudo iptables -I INPUT -p tcp --dport 11434 -m state --state NEW \ -m recent --update --seconds 60 --hitcount 21 --name OLLAMA_RATE \ -j DROP # 現在のiptablesルールを確認 $ sudo iptables -L INPUT -n --line-numbers | grep 11434
# iptablesルールを永続化 $ sudo apt install -y iptables-persistent $ sudo iptables-save | sudo tee /etc/iptables/rules.v4 # 次回起動時に自動適用されるか確認 $ sudo systemctl is-enabled netfilter-persistent enabled
Nginxリバースプロキシとufwをセットで使う多層防御の構成
本番環境のチーム運用で最も安全性が高い構成は、3層の防御を組み合わせることです。・第1層: Ollama自体は127.0.0.1:11434(Loopbackのみ)でListenする
・第2層: NginxがHTTPS(443番)でチームへ公開し、TLS終端とBasic認証を担当する
・第3層: ufwで443番はチームサブネットのみ許可。11434番は明示的にDENYする
この構成をufwで実現するルールセットは以下の通りです。
# SSHはサブネット内からのみ許可 $ sudo ufw allow from 192.168.1.0/24 to any port 22 proto tcp # HTTPSはチームサブネットのみ許可 $ sudo ufw allow from 192.168.1.0/24 to any port 443 proto tcp # 11434番は全拒否(Loopbackバインド+明示的DENYで二重ブロック) $ sudo ufw deny 11434 $ sudo ufw status numbered
To Action From -- ------ ---- [ 1] 22/tcp ALLOW IN 192.168.1.0/24 [ 2] 443/tcp ALLOW IN 192.168.1.0/24 [ 3] 11434 DENY IN Anywhere
# Nginx設定のproxy_passをLoopbackアドレスに向ける $ grep proxy_pass /etc/nginx/sites-available/ollama proxy_pass http://127.0.0.1:11434; # 設定をテストして問題がなければリロード $ sudo nginx -t && sudo systemctl reload nginx
設定後の検証方法|外部から本当にブロックされているか確認する
ファイアウォール設定は「設定した」だけでは安心できません。外部ホストから実測して確認することが重要です。知人のインフラエンジニアから聞いた話では、ufw設定が完了したつもりでnmapを実行したら `open` と表示されて青くなった、というケースが実際にあったそうです。設定後の実測検証は省略しないことをすすめます。1. 別ホストからcurlで直接確認する
社内の別PCや、VPS上で以下を実行します(OllamaサーバーのIPを仮に 192.168.1.100 とします)。# サブネット外のホスト(例: 192.168.2.10)からアクセスを試みる $ curl -v http://192.168.1.100:11434/ --connect-timeout 5 curl: (28) Connection timed out after 5001 milliseconds
# 許可サブネット内(例: 192.168.1.50)からアクセスを確認 $ curl http://192.168.1.100:11434/api/tags {"models":[{"name":"llama3.3:70b-instruct-q4_0","modified_at":"2026-08-01T10:00:00Z","size":42123456789}]}
2. nmapでポートスキャン結果を確認する
# 外部ホストからnmapで11434番をスキャン $ nmap -p 11434 192.168.1.100 Host is up (0.00042s latency). PORT STATE SERVICE 11434/tcp filtered unknown Nmap done: 1 IP address (1 host up) scanned in 1.32 seconds
3. サーバー側でufwのログを確認する
# ブロックされたパケットのログを確認(ufwログが有効な場合) $ sudo tail -20 /var/log/ufw.log Aug 6 10:23:45 server kernel: [UFW BLOCK] IN=eth0 OUT= MAC=aa:bb:cc:dd:ee:ff:... \ SRC=203.0.113.10 DST=192.168.1.100 LEN=60 ... DPT=11434 ...
よくあるトラブルと対処法
1. ufw allowを追加したのに許可サブネットからもアクセスできない
ufwのルール評価順序が問題の場合があります。`ufw status numbered` で確認し、DENYルールがALLOWルールより前にある場合は、ALLOW側を前に挿入します。# 現状確認(DENYが[ 1]でALLOWが[ 2]の場合は逆転している) $ sudo ufw status numbered [ 1] 11434 DENY IN Anywhere [ 2] 11434/tcp ALLOW IN 192.168.1.0/24 # ALLOW側をDENYより前(位置1)に挿入する $ sudo ufw insert 1 allow from 192.168.1.0/24 to any port 11434 proto tcp # 元のルール2(古いALLOW)と古いDENYを削除して整理する $ sudo ufw status numbered # 番号を再確認してから削除
2. systemd restart後にOllamaが起動しない
override.confの記述に問題がある場合です。確認手順を実行してください。$ sudo systemctl status ollama # エラー例: Failed at step ENVIRON spawning... # → override.confの構文を確認する $ sudo cat /etc/systemd/system/ollama.service.d/override.conf [Service] Environment="OLLAMA_HOST=127.0.0.1:11434" # 構文エラーがないか検証 $ sudo systemd-analyze verify /etc/systemd/system/ollama.service.d/override.conf
3. NginxからLoopbackの11434番に接続できない
Loopbackバインドに変更した後、NginxのSELinuxポリシーがLinuxサーバーの種類によってはLocalhostへの接続を制限する場合があります(主にCentOS系)。Ubuntu Serverでは通常発生しませんが、念のため確認します。# Nginxのエラーログを確認 $ sudo tail -20 /var/log/nginx/error.log # proxy_passのアドレスが127.0.0.1になっているか確認 $ grep proxy_pass /etc/nginx/sites-available/ollama proxy_pass http://127.0.0.1:11434; # Loopback上でOllamaが実際にListenしているか再確認 $ ss -tlnp | grep 11434 LISTEN 0 4096 127.0.0.1:11434 0.0.0.0:* users:(("ollama",pid=23456,fd=7))
4. OLLAMA_HOST設定後、ollama runコマンドが動かない
`OLLAMA_HOST` をシェルの環境変数として別途設定している場合に競合が起きることがあります。systemdのoverride.confはサービス起動時のみ有効なので、ターミナルから `ollama run` を実行する分には問題なく動作するはずです。# ターミナルのOLLAMA_HOST環境変数を確認 $ echo $OLLAMA_HOST (空白または未設定が正常) # ollama run でモデルを動かして疎通確認 $ ollama run llama3.3:70b-instruct-q4_0 "ufwの用途を一言で教えて" Linuxのファイアウォール設定を簡単に管理するためのツールです。
まとめ
OllamaのAPIポートをufwとsystemdで保護する手順を整理します。| 設定内容 | コマンド・設定箇所 | 効果 |
|---|---|---|
| サブネット限定許可 | sudo ufw allow from 192.168.1.0/24 to any port 11434 proto tcp | 指定サブネット外からのアクセスをブロック |
| Loopbackバインド | override.conf: Environment="OLLAMA_HOST=127.0.0.1:11434" | プロセスレベルで外部NICへの応答を遮断 |
| 11434番の明示的DENY | sudo ufw deny 11434 | Loopback設定と二重でブロック |
| 多層防御構成 | Nginx(443番HTTPS)+ ufw(サブネット443番許可) | 11434番を外部に一切見せない設計 |
| 接続レート制限 | sudo iptables -m recent --hitcount 21 -j DROP | 単一IPからの過剰リクエストをブロック |
| 設定後の実測検証 | nmap -p 11434 <サーバーIP> | filteredと表示されればブロック済み |
20年以上のLinuxサーバー運用経験から言えば、セキュリティ設定は「したつもり」が一番危険です。ufw設定後は必ずnmapとcurlで実測検証し、`filtered` と `timed out` の両方を確認してから完了とみなしてください。
利用するモデルの選定についてはローカルLLMのモデルを比較する方法|Llama3.3・Mistral・Gemma・Phi-4をUbuntuで使い分けるポイントも合わせて参照すると、セキュアな環境でどのモデルを動かすかの判断材料が揃います。
ローカルLLMのセキュア運用を2日間のハンズオンで体験する
ufwのポート制限だけでなく、Nginx多層防御・systemdチューニング・モデル選定まで実機GPU環境で手を動かしながら習得したい方向けに、「ローカルAIマスターセミナー」を開催しています。
少人数(最大8名)ZOOMハンズオン形式で実施しています。
・Ubuntu ServerでローカルLLMを構築する方法|Ollamaで機密データを外に出さず業務AIを動かす完全ガイド
・社内でChatGPTが使えないときの代替手段|機密データを守るローカルLLMという選択肢
・ローカルLLMのモデルを比較する方法|Llama3.3・Mistral・Gemma・Phi-4をUbuntuで使い分けるポイント
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。
登録無料・いつでも解除できます