あなたはHome Assistantをインストールし、スマートプラグ、サーモスタット、カメラを接続しました。そして、世界のどこからでもスマートフォンでそれらを管理したいと考えています。しかし、保護なしでインターネットにアクセスできる状態は、あなたのスマートホームをハッカーにとって簡単な標的にしてしまいます。この記事では、プロキシを介してHome Assistantへのリモートアクセスを正しく設定し、自宅のネットワークを保護する方法を説明します。
なぜHome Assistantへの直接アクセスは危険なのか
Home Assistantは、オープンソースのスマートホーム自動化プラットフォームです。世界中の何百万ものユーザーが、照明、気候、ロック、カメラ、その他のデバイスを管理しています。しかし、この人気があるために、Home Assistantは悪意のある攻撃者にとって魅力的なターゲットとなります。
ルーターを介してポート8123(Home Assistantの標準ポート)をインターネットに直接開放すると、あなたは自動スキャナーに「ようこそ」と書かれた看板を掲げることになります。これらのスキャナーは、すべてのIPアドレス範囲をスキャンし、知られているサービスのオープンポートを探します。Shodan(インターネット上のデバイスを検索するエンジン)によると、オープンアクセスのHome Assistantインスタンスは常に数万件存在しています。
あなたのHome Assistantが攻撃者に発見された場合、何が起こるのでしょうか:
- パスワードのブルートフォース攻撃 — 自動スクリプトが数千のログイン/パスワードの組み合わせを試します。弱いパスワードの場合、ハッキングは数分の問題です。
- 脆弱性の悪用 — 古いバージョンのHome Assistantには、パスワードなしでアクセスできる重大な脆弱性が定期的に発見されます。
- カメラを通じた監視 — HAにアクセスを得た攻撃者は、接続されたカメラのすべての映像をリアルタイムで見ることができます。
- ロックやアラームの制御 — スマートロックを接続している場合、ハッカーはあなたの家のドアを遠隔で開けることができます。
- 自動化データの盗難 — HAの履歴から、あなたが家にいる時間、出かける時間、睡眠モード、その他のプライベートなデータを知ることができます。
⚠️ 実際のケース
2023年、セキュリティ研究者はHome AssistantにおけるCVE-2023-27482の脆弱性を発見しました。これにより、認証なしでアクセスを回避することが可能でした。インターネットにオープンアクセスしているすべてのインスタンスは、パッチがリリースされるまで脆弱でした。プロキシ層やVPNを使用している人々は、自動的に保護されていました。
プロキシがスマートホームを保護する方法:動作原理
Home Assistantにおけるプロキシは、インターネットとあなたのサーバーの間の仲介者として機能します。あなたのHome Assistantがネットワークから直接見えるのではなく、外部からはプロキシサーバーのみが見え、そのプロキシが内部にリクエストを転送し、追加のチェックを行います。
動作の仕組みは次のようになります:
あなたのスマートフォン(インターネット)
↓
プロキシサーバー
(フィルタリング、暗号化、認証)
↓
自宅ネットワーク(クローズド)
↓
Home Assistant(192.168.1.X:8123)
この追加の層がもたらすもの:
- 実際のIPの隠蔽 — スキャナーはプロキシのIPを見て、あなたの自宅のアドレスを見ません。たとえプロキシがハッキングされても、彼らは自宅ネットワークに直接アクセスできません。
- SSL/TLS暗号化 — プロキシはHTTPS接続を終了させ、正しい証明書を発行し、トラフィックを傍受から保護します。
- 追加の認証 — Home Assistantの前にBasic Authや二要素認証をプロキシレベルで設定できます。
- レート制限 — 一つのIPからのリクエスト数を制限することで、ブルートフォース攻撃をHome Assistantに到達する前にブロックします。
- ジオブロッキング — 特定の国やIP範囲からのアクセスのみを許可できます。
- ログ記録 — すべてのアクセス試行が記録され、疑わしい活動を特定するのに役立ちます。
このシナリオで使用される2種類のプロキシの違いを理解することが重要です:リバースプロキシ(reverse proxy)はあなたのサーバーやルーターにインストールされ、外部からの接続を受け入れます。一方、外部プロキシは、あなたのトラフィックがトンネルされるクラウド内の中間サーバーです。両方のアプローチにはそれぞれ利点があり、私たちはそれぞれを詳しく見ていきます。
Home Assistantに適したプロキシの種類
解決策を選ぶ前に、Home Assistantのタスクが、例えばアービトラージやSMM専門家のタスクとは根本的に異なることを理解することが重要です。スマートホームには、ブロックを回避するための匿名プロキシではなく、リモート管理のための安全なトンネルが必要です。オプションを見てみましょう:
| 解決策の種類 | 動作方法 | 利点 | 欠点 | 難易度 |
|---|---|---|---|---|
| リバースプロキシ(Nginx/Caddy) | 外部からのHTTPSリクエストを受け取り、内部のHAに転送します | 無料、完全なコントロール、SSL | ホワイトIPまたはDDNSが必要、オープンポート443 | 中程度 |
| Cloudflareトンネル | HAからCloudflareサーバーへのトンネル、ポートは不要 | 無料、ホワイトIPは不要、DDoS保護 | トラフィックはCloudflareを経由、ドメインが必要 | 低い |
| VPS + プロキシ | VPSを借り、トラフィックをトンネルします | 自分のIP、最大のコントロール | 有料、設定が必要 | 高い |
| Nabu Casa(公式) | HA開発者によるクラウドサービス | 非常に簡単、Alexa/Googleをサポート | 有料サブスクリプション ~$6.50/月 | 非常に低い |
| レジデンシャルプロキシ | 実際の家庭用IPを介して発信トラフィックをルーティング | 実際のIP、サービスによってブロックされない | 発信トラフィックには適しているが、受信には不向き | 低い |
ほとんどのHome Assistantユーザーにとって、最適な選択肢はCloudflareトンネル(無料、ホワイトIPは不要)またはNginx/Caddyのリバースプロキシ(ホワイトIPまたは動的DNSがある場合)です。Nabu Casaは、設定を全く行いたくない人に適しています。それぞれのオプションを詳しく見ていきましょう。
リバースプロキシ(Nginx、Caddy):ステップバイステップの設定
リバースプロキシは、Home Assistantへの安全なアクセスを確保するための古典的で最も柔軟な方法です。HAと同じデバイス(例えば、Raspberry PiやHome Assistant OS)にインストールするか、自宅ネットワーク内の別のサーバーにインストールします。
オプション1:Caddy(初心者に推奨)
Caddyは、Let's Encryptを介して自動的にSSL証明書を取得および更新する現代的なウェブサーバーです。手動でのcertbot設定は不要です。
ステップ1:必要なもの
- ドメイン名(DuckDNSやNo-IPの無料ドメインでも可)
- ルーターでのポート443のHome AssistantのIPへの転送
- インストールされたHome Assistant(任意のバージョン)
ステップ2:Home Assistant OSにCaddyをアドオンとしてインストール
Home Assistant OS(HAOS)を使用している場合は、設定 → アドオン → アドオンストアに移動し、アドオンCaddy 2を見つけてインストールし、設定に進みます。
ステップ3:Caddyfileの基本設定
your-domain.duckdns.org {
reverse_proxy localhost:8123
# 追加の保護:HAの前にBasic Auth
# basicauth {
# admin $2a$14$パスワードのハッシュ
# }
# レート制限:1秒あたり10リクエストを超えない
rate_limit {
zone static_zone {
key {remote_host}
events 10
window 1s
}
}
# セキュリティヘッダー
header {
X-Frame-Options DENY
X-Content-Type-Options nosniff
Referrer-Policy no-referrer
}
}
ステップ4:プロキシの背後で動作するようにHome Assistantを設定
configuration.yamlファイルを開き、次の行を追加します。これは必須です。そうしないと、HAはプロキシからのリクエストを拒否します:
http:
use_x_forwarded_for: true
trusted_proxies:
- 127.0.0.1
- ::1
保存した後、Home Assistantを再起動します。今後はhttps://your-domain.duckdns.orgでアクセスしてください。接続は暗号化され、あなたのルーターの実際のIPはドメインの背後に隠されます。
オプション2:Cloudflareトンネル(ホワイトIPなし)
ホワイトIPがない場合(ほとんどの家庭用プロバイダーはNATの下でグレーIPを提供します)、Cloudflareトンネルは理想的な解決策です。あなたは、Home Assistantを持つデバイスに小さなエージェントcloudflaredをインストールし、彼は自動的にCloudflareのサーバーへの暗号化されたトンネルを作成します。ルーター上でオープンポートは必要ありません!
ステップバイステップの設定:
- cloudflare.comに登録し、ドメインを追加します(または無料のサブドメインを使用します)。
- Cloudflareのダッシュボードで、Zero Trust → Networks → Tunnelsに移動します。
- Create a tunnelをクリックし、トンネルに名前を付けます(例えば、home-assistant)。
- インストールコマンドをコピーし、HAのあるデバイスで実行します(またはHAOSのストアからCloudflaredアドオンをインストールします)。
- Public Hostnameセクションで、次のように指定します:
— Subdomain:ha
— Domain: あなたのドメイン
— Service:http://localhost:8123 configuration.yamlにCloudflareの信頼できるプロキシを追加します(IP範囲はcloudflare.com/ipsで見つけることができます)。- オプション:Zero Trust Accessを有効にします — HAに入る前にメールまたはGoogleアカウントを介した追加の認証レベル。
💡 ヒント
Cloudflareトンネルは、個人使用に完全に無料です。唯一の制限は、トラフィックがCloudflareのサーバーを通過することです。スマートホームの管理には全く問題なく、DDoSやボットからの保護も付いてきます。
外部プロキシサーバー:必要な場合と接続方法
外部プロキシサーバーは、あなたのトラフィックがルーティングされるクラウド内の中間ノードです。Home Assistantの文脈では、リバースプロキシではカバーされないいくつかの特定のシナリオで使用されます。
シナリオ1:企業ネットワークからHome Assistantへのアクセス
多くの企業ネットワークは、非標準ポートやVPN接続をブロックします。もしあなたが、ほとんどの接続がブロックされている職場のコンピュータからスマートホームを管理したい場合、レジデンシャルプロキシを介ったトラフィックは、家庭ユーザーの通常のHTTPSトラフィックのように見え、企業ファイアウォールに疑いを持たれません。
シナリオ2:地理的制限のあるサービスとの統合
Home Assistantは、天気API、スマートスピーカー、ストリーミングプラットフォームなど、数千の外部サービスと統合できます。それらの中には、特定の国でのみ利用可能なものがあります。例えば、Amazon AlexaやGoogle Assistantとの統合には、サーバーがアメリカやヨーロッパからアクセス可能である必要があります。この場合、HAからの発信トラフィックを必要な地域のデータセンタープロキシを介してルーティングできます。
シナリオ3:HAの発信リクエストの匿名化
Home Assistantは定期的に外部APIにアクセスします:天気を確認したり、トラフィックデータを取得したり、クラウドサービスと同期したりします。これらのリクエストはすべて、あなたの家庭用IPから送信され、外部サービスにあなたの位置を明らかにします。HAのシステム設定で発信プロキシを設定することで、実際のIPを隠すことができます。
Home Assistantで発信プロキシを設定する方法:
Home Assistant OSでは、設定 → システム → ネットワークに移動します。ここで、すべての発信接続のためのHTTP/HTTPSプロキシを指定できます。プロキシのデータを次の形式で入力します:
HTTP Proxy: http://ユーザー:パスワード@プロキシサーバー:ポート HTTPS Proxy: http://ユーザー:パスワード@プロキシサーバー:ポート
代わりに、HAをDockerで実行している場合は、HTTP_PROXYとHTTPS_PROXYの環境変数をdocker-compose.ymlファイルに設定できます:
version: '3'
services:
homeassistant:
image: ghcr.io/home-assistant/home-assistant:stable
environment:
- HTTP_PROXY=http://user:pass@proxy-server:port
- HTTPS_PROXY=http://user:pass@proxy-server:port
- NO_PROXY=localhost,127.0.0.1,192.168.0.0/16
volumes:
- ./config:/config
network_mode: host
restart: unless-stopped
NO_PROXY変数に注意してください — これはローカルアドレスをプロキシから除外し、HAがあなたの家庭ネットワーク内のデバイスと直接通信できるようにします。
Nabu Casa vs 自己管理プロキシ:どちらを選ぶべきか
Nabu Casaは、Home Assistantチームによる公式のクラウドサービスです。これは、リモートアクセスの問題をワンクリックで解決します:DNS、SSL、オープンポートの設定は不要です。単にサインアップし、https://あなたのID.ui.nabu.casaの形式の準備されたURLを取得します。
| 基準 | Nabu Casa | Cloudflareトンネル | Nginx/Caddy |
|---|---|---|---|
| コスト | ~$6.50/月 | 無料 | 無料 |
| 設定の難しさ | ⭐ 非常に簡単 | ⭐⭐ 簡単 | ⭐⭐⭐ 中程度 |
| ホワイトIPが必要 | いいえ | いいえ | はい(またはDDNS) |
| 独自のドメイン | いいえ | はい | はい |
| Alexa / Google Home | ✅ 組み込み | 手動設定 | 手動設定 |
| プライバシー | Nabu Casaのサーバーを通過するトラフィック | Cloudflareを通過するトラフィック | 完全なコントロール |
| HA開発者のサポート | ✅ はい | いいえ | いいえ |
結論:もしあなたが始めたばかりで、最小限の手間を求めているなら、Nabu Casaを選んでください。ホワイトIPなしで無料の解決策を求めているなら、Cloudflareトンネルを選んでください。完全なコントロールと独自のドメイン名が重要であれば、NginxまたはCaddyを設定してください。
セキュリティチェックリスト:Home Assistantを保護するための10のルール
プロキシは重要ですが、唯一の保護要素ではありません。以下は、あなたのスマートホームに対する攻撃ベクトルの大部分を閉じる完全なチェックリストです:
✅ Home Assistantのセキュリティチェックリスト
- プロキシ層を設定(Caddy、Nginx、またはCloudflareトンネル) — ポート8123を直接開放しないでください。
- HTTPSを有効にする — 暗号化された接続のみ。Caddyはこれを自動的に行います。
- 強力なパスワードを使用 — 最低16文字、数字、特殊文字。できればパスワードマネージャーを使用してください。
- Home Assistantで二要素認証を有効にする:設定 → ユーザー → 2FAを有効にする(Google AuthenticatorまたはAuthyを介したTOTP)。
- 初期設定後にUIを介したアカウント作成を無効にする(オンボーディング)。
- プロキシでレート制限を設定 — 一つのIPからのログイン試行は5〜10回/分を超えないようにします。
- fail2banまたは同様のツールを有効にする — 複数の失敗したログイン試行の後にIPを自動的にブロックします。
- Home Assistantを定期的に更新する — ほとんどの重要な脆弱性は、発見後24〜48時間以内に修正されます。
- スマートデバイスを別のVLANまたはゲストWi-Fiネットワークに隔離する — 一つのデバイスがハッキングされても、他のネットワークは安全に保たれます。
- 不要な統合やアドオンを無効にする — 各アクティブコンポーネントは攻撃面を拡大します。
追加情報:Home Assistantのためのfail2banの設定
Linuxシステム(例えば、Debian上のHome Assistant Supervised)を使用している場合、攻撃者のIPを自動的にブロックするためにfail2banをインストールします:
# fail2banのインストール sudo apt install fail2ban # /etc/fail2ban/filter.d/hass.confファイルを作成 [Definition] failregex = ^%(__prefix_line)s.*Login attempt or request with invalid authentication from <HOST>.*$ ignoreregex = # /etc/fail2ban/jail.d/hass.confにルールを作成 [hass] enabled = true filter = hass logpath = /config/home-assistant.log maxretry = 5 bantime = 3600 findtime = 600
このルールは、10分間に5回の失敗したログイン試行の後にIPを1時間ブロックします。パラメータを厳しくすることもできます:bantimeを86400(24時間)に増やすか、maxretryを3に減らすことができます。
疑わしい活動の監視
Home Assistantには、組み込みの認証ログがあります。設定 → システム → ログを介して定期的に確認してください。Login attemptやinvalid authenticationの行を探してください。知らないIPからの試行があれば、それはあなたのHAがスキャナーに発見されたという信号です。
また、ログイン試行が失敗した際にTelegramで自動通知を設定することもできます。Home Assistantで自動化を作成します:
alias: ログイン失敗通知
trigger:
- platform: event
event_type: system_log_event
event_data:
level: WARNING
condition:
- condition: template
value_template: "{{ 'Login attempt' in trigger.event.data.message }}"
action:
- service: notify.telegram
data:
message: "⚠️ Home Assistantへのログイン試行:{{ trigger.event.data.message }}"
結論
Home Assistantへの安全なリモートアクセスは、インターネットからスマートホームを管理したいすべての人にとって必須の条件です。保護層なしでオープンポートを持つことは、「ハッキングされるかどうか」ではなく、「いつハッキングされるか」の問題です。プロキシ層(リバースプロキシまたはトンネル)は状況を根本的に変えます:攻撃者はプロキシしか見えず、あなたの実際のサーバーや家庭ネットワークは見えません。
解決策の選択に関する簡単な要約:
- 初心者で、簡単に迅速にしたい → Nabu CasaまたはCloudflareトンネル
- ホワイトIPがあり、コントロールが欲しい → CaddyまたはNginxをリバースプロキシとして
- ホワイトIPがなく、無料で欲しい → Cloudflareトンネル + DuckDNS
- 最大のプライバシー → VPS + WireGuardトンネル + リバースプロキシ
プロキシは防御の最初のラインであることを忘れないでください。それを二要素認証、定期的な更新、ログの監視で補完してください。スマートホームは、セキュリティの問題でもスマートであるべきです。
もし、受信トラフィックの保護に加えて、Home Assistantの外部APIへの発信リクエストを隠したり、地理的制限のある統合にアクセスしたりする必要がある場合は、レジデンシャルプロキシを検討することをお勧めします。これにより、クラウドサービスやAPIプロバイダーによってブロックされない実際の家庭用IPアドレスが提供されます。
```