IIoTデバイスの開発者は、構築しているソリューション固有の課題に加えて、もう一つの困難な課題に直面しています。それはインターネットそのものが、悪意ある攻撃者や搾取者であふれるサメの海のような場所になってしまったということです。デバイスはインターネットに接続された瞬間から発見される可能性があり、サービス拒否攻撃や侵入攻撃、その他ハッカーによる悪用にさらされます。では、開発者はIIoTデバイスを保護するために何をすべきでしょうか。一つの解決策は、プライベートルーティングを備えたプライベートネットワークソリューション、いわゆる仮想プライベートインターネット(VPI)を導入することです。この記事では、Raspberry Pi デバイス上にVPIを構築する方法を説明します。
remote.itとは
remote.itは、ポートを開放することなく、エンドポイントデバイスへのリモートアクセスとP2P接続を提供するサービスです。いわば「Industrial Internet of Thingsのための、あなた専用の安全なポータル」です。
インターネット経由でエッジデバイスに安全にリモートアクセスするには、通常グローバルIPアドレスと開放されたポートが必要です。これは一般的にVPNやポートフォワーディングによって実現されます。しかしこの方法には大きな欠点があります。ポートをインターネットに開放するということは、事実上あなたのデバイスを世界中にさらしてしまうということです。remote.itは、ルーター上でポートを開放することなくリモートアクセスを可能にすることで、この攻撃リスクを排除します。
しかし、それはどのようにして可能なのでしょうか。泥棒が家に侵入するためにドアや窓を探すように、ハッカーも開放されたポートを探しています。remote.itは単にドアに鍵をかけるのではなく、ドアそのものを見えなくしてしまうことで、ハッカーが侵入する糸口そのものをなくします。では、家の中に入りたいときはどうすればよいのでしょうか。あなた専用のポータルを使えばよいのです。
Raspberry Piへのリモートアクセス
この仕組みを説明するために、Raspberry Piへの接続を例に紹介します。
remote.itアカウントの作成
まず、https://app.remote.it/auth/#/sign-up にアクセスして、無料のremote.itアカウントを作成してください。

- アカウントの設定を完了するには、確認メールに記載された手順に従う必要があります。メールが見つからない場合は、迷惑メールフォルダも確認してください。
remote.itウェブポータルへのサインイン
アカウントを作成したら、remote.itウェブポータル(https://app.remote.it)にサインインできます。

Raspberry Piへのremote.itのインストール
始める前に、Raspberry PiがRaspbian StretchまたはBusterを使用しており、インターネットに接続されていることを確認してください。
まず、パッケージを最新の状態に更新します。

続いて、remote.it(パッケージ名は「connectd」)をインストールします。

これでインストールは完了です。
Raspberry Piをremote.itデバイスとして登録する
次に、Raspberry Piをremote.itデバイスとして登録する必要があります。

デバイス登録スクリプトを実行します。
「1」を選択し、remote.itアカウントの認証情報でサインインしてください。

サインインに成功すると、Raspberry Piのデバイス名を作成するよう求められます。この名前は、remote.itウェブポータルの画面上でこのデバイスを識別するために使用されます。使用できるのは文字、数字、アンダースコア、スペース、ハイフンのみです。今回は、デバイスに「My-Raspberry-Pi」という名前を付けました。

デバイス登録が完了すると、remote.itアカウントに紐づいたメールアドレスに通知メールが送信されます。
次に、「1」を選択して、デバイスへのリモートアクセスに使用したいサービスを登録します。

私はSSH接続でRaspberry Piに接続したいので、「SSH on port 22」を選択します。SSH以外にも、利用できるサービスは数多くあります。リストにないサービスを使いたい場合は、「Custom (TCP)」を選択することでカスタムサービスを登録できます。

デフォルトのSSHポート番号22を使用するか、カスタムポート番号を使用するかを決めます。デフォルトを使用する場合は「y」を、カスタムポート番号を使用する場合は「n」を選択してください。

「n」を選択した場合は、使用したいポート番号の入力を求められます。

次に、サービス名を作成するよう求められます。このサービス名もウェブポータル上で使用されます。使用できるのは文字、数字、アンダースコア、スペース、ハイフンのみです。私はサービスに「My-Raspberry-Pi_SSH」という名前を付けました。

これでデバイスとサービスの登録は完了です。「5」を選択して、デバイス登録スクリプトを終了してください。

Raspberry Piへのリモート接続
これでRaspberry Piにリモート接続する準備が整いました。まず、ウェブポータルにサインインしてください。デバイス一覧に、先ほど登録したデバイスの名前が表示されます。

デバイス名をクリックして、「Device Services」ダイアログを開きます。

続いて、SSHサービス(私の場合は「My-Raspberry-Pi_SSH」という名前です)をクリックします。数秒後、SSH接続に必要なホスト名(例: proxy71.rt3.io)とポート番号(例: 34936)が表示されたポップアップダイアログが表示されます。
お使いのオペレーティングシステムに応じて、PuTTYのようなスタンドアロンのSSHクライアントアプリケーションや、コマンドラインスクリプトを使用できます。Windows 10の場合はコマンドプロンプトで、macOSやLinuxの場合はターミナルウィンドウで行うことができます。

それでは接続してみましょう。
ホスト名とポート番号に加えて、remote.itは利便性のために、Pi および root ユーザー名を使用した、あらかじめフォーマット済みのSSHコマンドラインをいくつか提供しています。別のユーザー名を使用している場合は、プレースホルダーとして LOGIN という単語が挿入されている3番目のオプションを使用し、ご自身のユーザー名を入力してください。この例では3番目のオプションを使用します。
その行全体を選択し、ターミナルまたはコマンドプロンプトにコピーします(まだENTERは押さないでください)。次に、「LOGIN」という単語を編集し(左矢印キーで移動してからバックスペースで削除する必要があります)、ご自身のユーザー名に置き換えます。この例ではユーザー名「demo」を使用します。

それでは「Enter」を押してください。これによりログインが開始されます。おそらく以下のようなセキュリティメッセージ(またはそれに類するもの)が表示されますが、これはまったく正常なことです。「yes」と入力して続行してください。

プロンプトが表示されたら、パスワードを入力してください。
これでログインが完了し、通常どおりコンソールコマンドを実行できるようになります。
Raspberry Piに接続できただけでなく、Raspberry PiのSSHポートはインターネットに公開されていません。もともとインターネットに接続されていたネットワーク構成は一切変更されていません。remote.itは、ポートを一切公開することなくリモート接続を実現したのです。
インターネットを介したあらゆるエッジデバイスへの、あなただけの安全なポータルです。