メインコンテンツへスキップ
見出し画像

【実践】YESKAMOのNVRをクラウドに頼らず遠隔監視!OpenWrt+WireGuardで不正アクセス対策

    はじめに
    自宅の防犯カメラを外出先から確認する際、メーカーが提供する専用アプリを使用している方は多いと思います。
    専用アプリは便利ですが、製品によってはメーカーのクラウドサーバーやP2P接続機能を利用するため、通信経路を利用者自身で管理することが難しい場合があります。
    そこで私は、YESKAMOのNVRをメーカーの専用アプリに依存せず、外出先から確認できる環境を構築しました。
    使用したのは、オープンソースのルーターOS「OpenWrt」とVPNソフトウェア「WireGuard」です。
    今回の構成では、NVRを専用ネットワークに配置し、インターネットへの不要な通信を遮断します。
    そのうえで、外出先からはWireGuardを使って自宅に接続し、NVRの映像を確認します。
    この記事では、構築方法とセキュリティ対策について、実際のネットワーク構成を基に解説します。

    1. 今回のネットワーク構成
    使用しているメインルーターは、ELECOM WRC-2533GST2です。
    2018年発売の家庭用ルーターですが、純正ファームウェアをOpenWrtに置き換えて使用しています。
    ネットワーク構成は次のとおりです。
                     Internet
                        │
                 ホームゲートウェイ
                        │
                        ▼
              ELECOM WRC-2533GST2
                     OpenWrt
                        │
           ┌────────────┼────────────┐
           │            │            │
        通常LAN       監視LAN      WireGuard
           │            │            ▲
          PC            │            │
          NAS           │       外出先iPhone
                     YESKAMO NVR
                        │
                      カメラ
    監視ネットワークには、以下のアドレスを割り当てています。
    機器
    IPアドレス
    監視ネットワーク
    192.168.X.0/24
    YESKAMO NVR
    192.168.X.X
    Tapo C100
    192.168.X.X
    これらはプライベートIPアドレスです。
    実際の構築では、読者自身のネットワークに合わせて設定してください。
    2. NVR専用ネットワークを作成する
    最初に、OpenWrtでNVR専用のネットワークを作成します。
    今回は nvr というインターフェース名を使用します。
    OpenWrtのSSHに接続し、設定を確認します。
    uci show network
    続いて、Firewallの設定を確認します。
    uci show firewall
    監視ネットワークが正しく作成されていれば、NVR専用のインターフェースとFirewall zoneが確認できます。
    今回の目的では、NVRと通常LANを分離し、必要な通信だけを許可します。
    なお、ネットワークを別サブネットにするだけでは、必ずしも通信が遮断されるわけではありません。
    ネットワーク分離とFirewallによるアクセス制御を組み合わせることが重要です。
    3. OpenWrtでNVRのインターネット通信を遮断する
    今回のセキュリティ対策で、特に重要な部分です。
    NVRがインターネットへ自由に通信できる状態では、メーカーのサーバーなどへの接続が発生する可能性があります。
    そこで、監視ネットワークからWANへの通信を原則遮断します。
    OpenWrtのFirewallでは、次の方針を採用します。
    通信
    許可・拒否
    NVR → Internet
    拒否
    Internet → NVR
    拒否
    NVR → 通常LAN
    拒否
    通常LAN → NVR
    原則拒否
    WireGuard → NVR
    必要な通信のみ許可
    OpenWrtのLuCI管理画面では、Firewallのゾーン設定から通信方向を制御できます。
    監視ネットワーク用ゾーンからWANへの転送を許可しないことが基本です。
    また、NVRの管理画面や映像配信ポートをインターネットへ直接公開しないようにします。
    ポート転送設定やUPnPによる自動ポート開放にも注意が必要です。
    IPv6を使用している環境では、IPv6側のFirewall設定も確認します。
    注意: インターネット通信を遮断すると、NVRの自動時刻同期やファームウェア更新が利用できなくなる場合があります。必要な機能は別途、安全な方法で維持する必要があります。
    4. WireGuardで外出先からアクセスする
    次にWireGuardを設定します。
    WireGuardは暗号化されたVPNトンネルを構築するソフトウェアです。
    今回の構成では、iPhoneから自宅のOpenWrtへ接続します。
    通信経路は次のようになります。
    外出先のiPhone
           │
           │ WireGuard VPN
           ▼
    インターネット
           │
           ▼
    ホームゲートウェイ
           │
           ▼
    OpenWrt
           │
           │ Firewall
           ▼
    192.168.X.X
           │
           ▼
    YESKAMO NVR
           │
           ▼
    カメラ映像
    WireGuardのインストール
    OpenWrtにWireGuardが導入されていない場合は、パッケージをインストールします。
    OpenWrtのバージョンによってパッケージ管理コマンドは異なります。
    apk を採用しているバージョンでは、例えば次のように実行します。
    apk update
    apk add wireguard-tools luci-proto-wireguard
    opkg を使用する旧バージョンでは、次のようになります。
    opkg update
    opkg install wireguard-tools luci-proto-wireguard
    インストール後、LuCIからWireGuardインターフェースを作成します。
    WireGuardにはサーバー側とクライアント側の鍵が必要です。
    秘密鍵は第三者に公開しないよう注意してください。
    iPhone側の設定例
    以下はWireGuardのクライアント設定例です。
    [Interface]
    PrivateKey = <iPhone側の秘密鍵>
    Address = 10.XX.XX.2/32

    [Peer]
    PublicKey = <OpenWrt側の公開鍵>
    Endpoint = <自宅の接続先>:XXXXXX
    AllowedIPs = 192.168.X.XX/32, 10.XX.XX.1/32
    PersistentKeepalive = 25
    これは説明用の設定例です。
    実際にはOpenWrt側のWireGuardアドレス、ポート番号、鍵などと一致させる必要があります。
    また、ホームゲートウェイがOpenWrtの上流にある場合は、WireGuardのUDPポートをOpenWrtへ転送する設定が必要になることがあります。
    FirewallでNVRへのアクセスだけを許可する
    WireGuard接続後、iPhoneから家庭内LANのすべての機器へアクセスできる必要はありません。
    今回の目的では、NVRへの必要な通信だけを許可します。
    例えば、NVRがRTSPのTCP 554番ポートを使用している場合は、以下のようなアクセス制御を行います。
    送信元:WireGuardネットワーク
    宛先:192.168.XX.XX
    プロトコル:TCP
    宛先ポート:XXX
    動作:許可
    それ以外の監視ネットワークへの通信は原則拒否します。
    実際に許可するポートは、NVRの仕様と映像再生方式に合わせて決定してください。
    5. VLCでカメラ映像を確認する
    今回の構成では、メーカーの専用アプリを使わず、ネットワークストリームに対応したVLCを使用します。
    NVRがRTSP配信に対応している場合、VLCから映像を取得できます。
    RTSPアドレスの基本的な形式は以下のとおりです。
    rtsp://192.168.XX.XX:XXX/<ストリームパス>
    ただし、これは一般的な形式を示したものであり、YESKAMOのすべてのNVRで使用できるアドレスではありません。
    機種によって、ポート番号、ストリームパス、認証方式が異なります。
    まず自宅のローカルネットワークから映像を再生できることを確認します。
    その後、外出先からWireGuard経由で同じ映像を確認します。
    外出先での確認手順

    1. iPhoneのWi-FiをOFFにする

    2. モバイル回線へ切り替える

    3. WireGuardで自宅へVPN接続する

    4. VLCを起動する

    5. NVRのストリームアドレスを入力する

    6. カメラ映像が表示されることを確認する

    この方式では、NVRの映像配信ポートをインターネットへ直接公開する必要がありません。
    6. 不正アクセス対策が機能しているか確認する
    設定を完了したら、実際にアクセス制御が機能しているか確認します。
    重要なのは、設定画面で「拒否」と表示されていることだけではなく、実際の通信結果を確認することです。
    例えば、以下の検証を行います。
    検証内容
    期待する結果
    NVRからInternetへの通信
    遮断される
    WANからNVRへの直接接続
    接続できない
    WireGuard未接続のiPhoneからNVRへ接続
    接続できない
    WireGuard接続後のiPhoneからNVRへ接続
    許可した通信のみ成功
    通常LANからNVRへの不要な接続
    遮断される
    NVRとカメラのローカル通信
    正常に動作する
    必要に応じてOpenWrtのFirewallログやパケットキャプチャも活用します。
    なお、WAN側の確認は自宅LAN内からの試験だけでは不十分です。
    実際にモバイル回線など、自宅とは別のネットワークから検証することが重要です。
    7. この構成でも防げない攻撃
    今回の構成は、NVRへの直接的な外部アクセスを減らすために有効です。
    しかし、あらゆる攻撃を防げるわけではありません。
    例えば、以下のリスクは残ります。

    • OpenWrtやNVR自体の脆弱性

    • WireGuard秘密鍵の漏えい

    • VPN接続を許可したスマートフォンの侵害

    • 同一監視ネットワーク内の機器からの攻撃

    • ファームウェア更新の停止による脆弱性の放置

    • ネットワーク設定ミスによる意図しない通信許可

    そのため、機器の更新、アクセス権限の管理、設定バックアップ、ログの確認も継続する必要があります。
    8. まとめ
    今回、YESKAMOのNVRをOpenWrtとWireGuardを使って遠隔監視する構成を紹介しました。
    重要なポイントは次の3つです。
    1. NVRを専用ネットワークに分離する
    通常のPCやスマートフォンと同じネットワークに置かず、アクセス範囲を制限します。
    2. NVRをインターネットへ直接公開しない
    不要な外部通信を遮断し、NVRの管理画面や映像配信ポートをWANへ公開しない構成にします。
    3. 外出先からはWireGuard経由で接続する
    認証済みの端末だけに必要な通信を許可し、VLCなどで映像を確認します。
    家庭用の監視カメラでも、OpenWrtを活用すれば、通信経路を細かく管理することができます。
    メーカーの専用アプリを利用する方法とは異なり、ネットワーク構成やアクセス制御を自分で管理できることが、この方式の大きな特徴です。
    ただし、セキュリティは一度設定すれば終わりではありません。
    今後も設定を定期的に確認しながら、安全性と利便性を両立した監視環境を維持していきたいと思います。

     
     
    個人事業主(2026年1月開業) 通信制大学生。 医薬品登録販売者試験学習中。

    あなたへのおすすめ