上級 11 分Hardening

マシンをネットワークから物理的に隔離する 推論

端的な回答

推論マシンをエアギャップ化するとは、すべてのネットワーク接続(ケーブル、Wi-Fi、Bluetooth)をなくし、管理された物理媒体を通じてのみモデルや更新データを取り込むことです。外向きの通信を制御するファイアウォールは有用な防御層ですが、エアギャップではありません。ソフトウェアの設定にすぎないためです。実際の弱点は、外部と通信するソフトウェア(Ollama Cloud、更新、ダウンロード)とUSBメモリです。

機密性が高い一部の場面では、「ローカル」という言葉だけでは不十分です。ローカルマシンもネットワークに接続されたままであり、そのソフトウェアが外部と通信する可能性があります。このガイドでは、真のエアギャップとファイアウォールによる隔離を区別し、LLMスタックの中でデフォルトで外部と通信するコンポーネントと、その通信を止める方法を一覧にまとめています。また、ハッシュ値で検証するUSBメモリ経由のモデル転送を説明し、繰り返し実行できる、外部との通信が遮断されていることを確認するテストを提案しています。

著者 Mohamed Meguedmi·更新 2026-09-30·Windows・macOS・Linuxでテスト済み

#エアギャップが必要となる場合と、コストがかかりすぎる場合

エアギャップを採用するかどうかは、原則として一律に決めるのではなく、リスク分析に基づいて判断します。採用が妥当なケースは、機密指定されたデータや高度な産業秘密に該当するデータを扱う場合、契約上または業界の要件で隔離ネットワークが明示的に義務付けられている場合、すでにネットワークを隔離している環境にLLMを組み込む必要がある場合、そして極めて機密性の高い案件を扱う専用端末を使う場合(弁護士や研究者など)です。健康情報や金融情報を含む通常の個人データについては、関連する規定は完全な隔離よりもリスクに見合った対策を求めています。暗号化された端末上で、クラウドアカウントを使わずに動かすローカルLLMで、すでにほとんどのニーズを満たせます。企業でのローカルAI活用ガイドとプライバシーチェックリストでは、この中間的な対策レベルを扱っています。

!
実際のコスト
更新、モデル、ドキュメントは、いずれも物理媒体を使い、所定の手順に従って転送します。一度も更新されないエアギャップ環境のマシンには脆弱性が蓄積します。一方、手順が煩雑すぎると、利用者はやがてその手順を迂回するようになります。誰が転送を行うのか、どのくらいの頻度で行うのか、どう検証するのかをあらかじめ決めておいてください。

始める前に、3つの点を確認してください。誰が転送を行い、どのくらいの頻度で行うのか。使用するソフトウェア構成では、どのコンポーネントを更新する必要があるのか(Ollama、llama.cpp、インターフェース、モデル)。そして、より新しいモデルが不可欠になったとき、どう対応するのか。手順は例外を設けずに実行できるものでなければなりません。一度認めた例外は、やがて通常のルールになってしまうからです。この3つに答えられない場合は、まず用途ごとに厳格なファイアウォールを備えたオフライン端末を用意し、リスクの大きさから必要と判断できる場合にのみ、隔離を一段強化してください。

#Air-gap、準Air-gap、ファイアウォール:これらを混同しないでください

エンタープライズ向けローカルAIキット

職場でのローカルAI導入:GDPR、AI Act、マルチユーザーアーキテクチャ、コスト、経営陣向けメモ。

  • 永久に利用できるオンラインスペース
  • PDF + ファイル
  • 生涯アップデート
3 つの分離レベル
レベル概要引き続き可能なこと
運用上オフラインにしているマシンアクティブな接続は存在しませんが、ネットワークカードは存在します操作ミスやソフトウェアによる再接続は起こり得ます。防げるかどうかは、運用ルールを徹底できるかにかかっています。
厳格なファイアウォール(デフォルトで拒否、送信も含む)外向きの通信をブロックするソフトウェア設定「試しに」追加したルール、システムの脆弱性、制限を迂回するサービス
物理的なネットワーク隔離有効なネットワークインターフェースがない状態:ケーブルは接続されておらず、Wi-FiとBluetoothはファームウェアで無効化されているか、取り外されている取り外し可能なメディアによる漏洩;物理的なチャネル(本ガイドの範囲外)

このガイドでは3つすべてを扱います。ファイアウォールは機密性の高い端末に必要な最小層で、物理的なエアギャップは上位層です。MacではAppleシリコン搭載Macの最適化ガイドがmacOS固有の設定を扱います。Windowsでは原則は同じですが、外部と通信するコンポーネントの制御は最小構成のLinuxほど細かくないため、ここではLinuxを推奨します。

#マシンの準備

最小限のシステム構成
推論サーバーには、グラフィカルインターフェースのないDebianまたはUbuntu Serverを使います。ブラウザも、アプリストアに接続するパッケージマネージャーも入れません。
自動更新サービス
更新タイマーを無効にしてください。たとえば、sudo systemctl disable --now apt-daily.timer apt-daily-upgrade.timer を実行し、知らないうちに接続が試みられないようにします。
アカウント
LLMの利用専用のアカウントを設け、sudoの使用は管理者に限定します。
無線機能とインターフェース
Wi-FiとBluetoothはBIOSまたはファームウェアで無効化しておきます。これらの機能を備えたハードウェア自体がない状態なら、さらに望ましいです。ネットワークケーブルは接続しません。
デュアルブートにしない
同じマシンにネットワーク接続用の別パーティションがあると、間接的な経路(スワップファイル、共有ファイル)が生まれます。
時刻
時計は手動で設定するか、内部の時刻源に合わせてください。公開されている時刻サーバーとの同期は、外向きの通信になります。
暗号化ディスク
ネットワークから隔離した端末でも、盗まれたり押収されたりする可能性があります。ディスクを暗号化してください(専用ガイドを参照してください)。

#LLMスタック内でデフォルトで外部と通信するソフトウェア

物理的に隔離されたマシンでは、これらの呼び出しは失敗しても害はありません。一方、ファイアウォールだけで保護されているマシンや、まだネットワークから切断されていないマシンでは、これらが実際のリスクになります。一般的なローカル環境には、通信を禁止しない限りインターネットにアクセスするコンポーネントが複数含まれています。以下は、公式ドキュメントに基づいて通信を停止できるものです。

外部との接続を行うコンポーネントとそのスイッチ
コンポーネントできることドキュメントに記載された設定
Ollamaホストされたモデルとウェブ検索(Ollama Cloud)OLLAMA_NO_CLOUD=1 または ~/.ollama/server.json に disable_ollama_cloud を設定します。この場合、ログには「Ollama cloud disabled: true」が表示されます。
Ollama(ネットワークへの公開)ローカル HTTP サーバーデフォルトでは 127.0.0.1 で接続を待ち受けます。OLLAMA_HOST を変更するのは、外部から隔離された内部ネットワークで使用する場合だけにしてください。
Open WebUI更新の確認、Hugging Faceからの埋め込みモデルのダウンロードOFFLINE_MODE=true(ENABLE_VERSION_UPDATE_CHECKも無効にします);埋め込みモデルを事前にダウンロードしてください
Hugging Face ライブラリ(transformers、sentence-transformers)Hubへの呼び出しで確認またはダウンロードHF_HUB_OFFLINE=1:HubへのHTTP呼び出しは行われず、キャッシュ内のファイルのみが使用されます
ベクトルデータベーステレメトリが行われる可能性Weaviate:DISABLE_TELEMETRY=true;各コンポーネントでも同等の設定項目を確認してください

Ollamaのドキュメントには、Ollamaをローカルで使用する場合、提供元はリクエストもデータも見ることができないと明記されています。クラウド機能を無効にすると、ホストされているモデルとWeb検索にアクセスできなくなりますが、それこそが目的です。Open WebUIには注意が必要です。ドキュメントでは、OFFLINE_MODEを有効にする前に埋め込みモデルをダウンロードしていないと、RAG、Web検索、文書分析の機能が動作しない可能性があると警告しています。マシンをネットワークから切り離す前に、必要になるものをすべてダウンロードしてください。

→
ツール、エージェント、ウェブ検索
ツール(ウェブ検索、URL リーダー、リモート MCP サーバー)に接続されたローカル LLM は、自ら外部へリクエストを送ることがあります。隔離されたマシンでは、これらのツールを無効にするか、インストールしないでください。外部にアクセスするのはモデルそのものではなく、モデルに与えたツールです。

#厳格なファイアウォール:受信・送信ともにデフォルトで拒否

ファイアウォールは、物理的な切断に続く第二の防衛線であり、内部ネットワークに接続されたままの端末における唯一の保護手段です。原則は、双方向でデフォルト拒否とし、隔離された内部ネットワークへの明示的な許可をいくつか設けることです。ファイアウォールを有効にする前に許可ルールを作成してください。そうしないと、ご自身のSSHセッションが切断されてしまいます。

ufw:デフォルトで拒否、内部ネットワークは許可
sudo ufw default deny incoming
sudo ufw default deny outgoing

# Réseau interne isolé (exemple), y compris l'administration SSH depuis un poste connu
sudo ufw allow in from 192.168.50.0/24 to any port 22 proto tcp
sudo ufw allow out to 192.168.50.0/24

sudo ufw enable
sudo ufw status verbose

ローカルインターフェース(ループバック)のトラフィックは、Ollama および Open WebUI の動作に必要であり、127.0.0.1 で相互に通信しています。ufw status verbose で、設定がこのトラフィックをブロッキングしていないか確認してください。マシンが内部LANに接続されている場合は、ルーター側でも保護を強化してください。インターネットへのルーティングがないVLANを設定してください。

#Ollamaの待ち受け先を確認する

待ち受け中のポート
sudo ss -tlnp | grep ollama
# attendu : 127.0.0.1:11434 et non 0.0.0.0:11434
# si 0.0.0.0 : régler OLLAMA_HOST=127.0.0.1:11434

#USBメモリでモデルとアップデートを転送する

隔離されたマシンには、モデル(数 GB から数十 GB)、更新プログラム(Ollama、llama.cpp、Open WebUI)、場合によっては文書を取り込みます。特に注意すべきなのは USB メモリです。これが唯一の入口であり、したがってマルウェアが侵入する唯一の経路でもあります。常に同じ専用の USB メモリを使い、定期的にフォーマットしてください。他の場所で使った USB メモリは決して使用しないでください。

  1. 01
    インターネットに接続したマシンでダウンロードする
    Hugging FaceからモデルのGGUFファイルを取得するか、公式サイトから更新用バイナリを取得してください。配布元にSHA-256ハッシュ値が表示されている場合は、記録してください。
  2. 02
    ハッシュ値を計算し、ウイルススキャンを行う
    ファイルに対してsha256sumを実行し、その後、隔離されたマシンではなく、この中継マシン上でウイルス対策ソフト(例えばClamAV)を使ってファイルをスキャンしてください。
  3. 03
    USBメモリにコピーする
    ファイルと、そのハッシュ値を記載したテキストファイルをコピーしてください。
  4. 04
    使用前に隔離されたマシンで確認する
    ネットワークから隔離したマシンでハッシュ値を再計算してください。同じ値である必要があります。値が異なる場合は、ファイルが変更されたか破損していることを意味します。そのファイルは使用しないでください。
  5. 05
    Ollamaにインポートする
    FROM /chemin/vers/modele.gguf を記述したModelfileを作成し、その後 ollama create nom-du-modele -f Modelfile を実行してください。OllamaはGGUFのインポート時に量子化を行いません。ファイルはあらかじめ希望する形式で量子化されている必要があります。
モデルのハッシュ値とインポート
# machine de transit
sha256sum modele-q4_k_m.gguf > modele.sha256

# machine isolée
sha256sum -c modele.sha256
printf 'FROM ./modele-q4_k_m.gguf\n' > Modelfile
ollama create mon-modele -f Modelfile
ollama run mon-modele

代替手法として、接続済みマシンのモデルディレクトリ全体(blobsとmanifestes)を隔離マシンにコピーする方法があります。これは機能しますが、インストール環境によってディレクトリの場所が異なります。Ollama のFAQでは、macOSでは ~/.ollama/models、標準インストーラーによるLinuxでは /usr/share/ollama/.ollama/models、Windowsでは C:\Users\%username%\.ollama\models とされています。単一のGGUFファイル経由で移行する方が、比較すべきフィンガープリントが一つしかないため、検証がより簡単です。import GGUF に関するガイドでは、Modelfileについて詳しく説明しています。

#USBポートのセキュリティを強化する

USBメモリは、キーボードや別の周辺機器になりすますことがあります。LinuxのUSBGuardを一言で説明すると、USBデバイスの許可リストを管理するツールです。許可する機器の種類と、それらがシステムとどのようにやり取りできるかを定めます。また、接続時に何も実行されないよう、記憶媒体の自動マウントも無効にしてください。特に機密性の高い環境では、USBメモリの代わりにデータダイオード(データを一方向にしか通さない装置)を使いますが、導入にはより多くの手間がかかります。

#外部との通信が遮断されているか確認する

テストで外部との通信が遮断されていると証明できるのは、観測した期間に限られます。更新のたびにテストをやり直し、作業セッション全体を通してキャプチャを続けてください。最低限の検証手順では、動作、経路がないこと、名前解決が行われないこと、実際のトラフィックを確認します。

オフライン動作
ケーブルを抜き、すべての無線通信をオフにしてから、一連の処理全体(モデル、RAG、インターフェース)を実行してください。すべてが正常に動作する必要があります。そうでなければ、いずれかのコンポーネントがインターネットに依存していたことになります。
ルートが存在しません
ping -c 1 8.8.8.8 は「Network is unreachable」または同等のエラーを発生させる必要があります。
DNSのない状態
host exemple.org は失敗するはずです。/etc/resolv.conf を確認し、外部サーバーが指定されていないことを確かめてください。
確立済みの接続
sudo ss -tunp state established : aucune connexion vers une adresse hors du réseau interne.
実際のトラフィック
tcpdumpですべてのインターフェースを対象に、内部ネットワークを除外して取得したキャプチャは、利用セッションの最初から最後まで空である必要があります。
確認用のキャプチャ
# rien ne doit apparaître (hors loopback et réseau interne)
sudo tcpdump -i any -n 'not (host 127.0.0.1 or host ::1) and not (net 192.168.50.0/24)'

#定期的な監査

推奨する点検頻度
頻度制御目標
月次ufw status verboseとルール一覧;ss -tlnp「試しに」追加されたルールを検出する
各転送ごとに鍵前後のフィンガープリント;アンチウイルス分析ファイルの変更を検出
コンポーネントを更新するたびネットワーク隔離の確認テストを再実行し、オフライン用の変数設定を再確認すること新しいコンポーネントによって、外部への通信が追加される可能性があります
半年ごとまたは年間検証済みのイメージを使ったクリーンインストールと脅威の見直しそれまでに蓄積した侵害を取り除く

#LLMマシンのエアギャップに関するよくある質問

FAQ
アウトバウンドファイアウォールだけで、エアギャップと呼べますか?+
いいえ。ファイアウォールはソフトウェアによる設定です。ルールの設定漏れ、脆弱性、あるいはルールを迂回するサービスがあるだけで、外部への通信経路が開いてしまいます。エアギャップには、物理的なネットワーク接続がないことが必要です。ファイアウォールは有効な第二の防御線であり、マシンを内部ネットワークに接続しておく必要がある場合には、唯一の保護手段です。
インターネットに接続されていないマシンで Ollama をアップデートするには?+
インターネットに接続されたマシンで公式の配布元からプログラムをダウンロードし、ハッシュ値を計算してプログラムを検査し、専用のUSBメモリにコピーしてください。隔離されたマシンでインストール前にハッシュ値を再計算し、その後、手動でインストールしてください。続いて、外部との通信が遮断されていることを確認するテストを再実行し、クラウド機能が無効のままであることを確認してください。
隔離されたマシンにモデルを転送するにはどうすればよいですか?+
最も簡単なのは、量子化済みのGGUFファイルを使う方法です。ファイルをダウンロードし、SHA-256ハッシュ値を計算してUSBメモリにコピーし、隔離されたマシン側でハッシュ値を再計算してから、Modelfileとollama createを使ってモデルを作成してください。モデルのフォルダをコピーする方法でも動作しますが、その保存場所はシステムによって異なります。
Ollama は私のリクエストを外部に送信しますか?+
Ollamaのドキュメントによると、ローカルでの動作では、開発元にリクエストもデータも送信しません。クラウド機能(ホストされたモデル、ウェブ検索)は任意で、OLLAMA_NO_CLOUD=1またはserver.jsonの設定で無効にできます。機密性が求められるマシンでは、明示的に無効にし、ログ内のメッセージを確認してください。
USBメモリはセキュリティ上の弱点になりますか?+
USBメモリは唯一の入口なので、最も厳重に監視されます。専用のUSBメモリを使い、自動マウントを無効にし、転送前後でSHA-256ハッシュを比較してください。また、想定したデバイスだけを許可するためにUSBGuardの導入を検討してください。制約条件から導入が妥当と判断できるなら、データダイオードのほうが優れた解決策です。
既に隔離されたマシンにディスクの暗号化は必要ですか?+
はい。ネットワークから隔離しても、マシンの盗難や差し押さえには備えられません。暗号化されていないディスクは、別のコンピューターに接続すればすぐに読み取れます。システムディスクを暗号化し、回復キーはマシンとは別の場所に保管してください。バックアップにも同じ対策を徹底してください。
このガイドは役に立ちましたか?

ご意見、誤りのご指摘、補足はありますか?ぜひお知らせください。皆さんにとってより良いガイドにするために役立ちます。