NetBirdでZero Trust Mesh VPNを構築:毎晩5万回のブルートフォース攻撃からサーバーを守る方法

Security tutorial - IT technology blog
Security tutorial - IT technology blog

午前2時のブルートフォースの悪夢

あの夜のことは今でも鮮明に覚えています。監視システムからの通知でスマートフォンが激しく震えました。Fail2ban의ログは、わずか数分間に5万回以上のログイン失敗を記録していました。攻撃者が私のSSHポートを執拗にスキャンしていたのです。

一晩中対応に追われた後、私は手痛い教訓を得ました。「ポート22を直接インターネットに晒してはいけない」ということです。しかし、ポートを閉じてしまったら、どうやってリモートで作業すればいいのでしょうか?

OpenVPNを使うと証明書の設定が非常に面倒です。純粋なWireGuardはキーの手動管理が必要で、チームが大きくなると混乱を招きやすい。そんな時に出会ったのがNetBirdでした。WireGuardをベースに構築された、よりスマートなZero Trust Mesh VPNソリューションです。

実践:5分でNetBirdを稼働させる

理論を読むよりも、まずは実際にインストールしてそのスムーズさを体感してみましょう。手順はわずか数行のコマンドで完了します。

ステップ1:アカウントの作成

NetBird.ioにアクセスしてアカウントを作成してください。Google、GitHub、またはMicrosoftのSSOによるクイックログインに対応しています。

ステップ2:LinuxへのAgentインストール

サーバー(Ubuntu、Debian、CentOSなど)のターミナルを開き、自動インストールスクリプトを実行します:

curl -fsSL https://pkgs.netbird.io/install.sh | sh

ステップ3:Meshネットワークへの接続

インストールが完了したら、以下のコマンドを入力してアクティベートします:

netbird up

ターミナルに認証リンクが表示されます。そのリンクをコピーしてブラウザに貼り付け、確認ボタンを押せば完了です。これであなたのサーバーは、安全な仮想プライベートネットワーク内に保護されました。

なぜNetBirdは従来のVPNより優れているのか?

トラフィックが一点に集中してボトルネックを引き起こす従来のクライアント・サーバー型とは異なり、NetBirdはマシン間に直接Peer-to-Peer (P2P)ネットワークを構築します。

  • Zero Trustの理念: デフォルトではどのマシンも互いを見ることができません。明示的に権限を付与して初めて接続が確立されます。
  • WireGuardの威力: 最新の暗号化技術を活用し、物理ネットワークと遜色ないほどの低レイテンシ(Latency)を実現します。
  • NATトラバーサル (NAT Traversal): これが最も価値のある機能です。キャリアのCGNATや厳格なファイアウォールの背後にあるサーバーでも、ポート開放なしで接続可能です。
  • 直感的なダッシュボード: 単一のウェブインターフェースから数百ものノードを管理できます。

高度な設定:アクセス権限の管理 (ACL)

ネットワークが大きくなると、どのマシンからでも他のマシンにアクセスできる状態はリスクになります。グループごとに明確な境界線を設ける必要があります。

アクセス制御の設定

  1. ダッシュボードのAccess Controlセクションに移動します。
  2. セキュリティを強化するため、すべての通信を許可しているDefaultルールを削除します。
  3. Groupsを作成します:例:「Dev-Team」グループと「Production-Servers」グループ。
  4. Policyを作成します:「Dev-Team」から「Production-Servers」へのポート22または80経由の接続のみを許可します。

Setup Keysによる自動化

TerraformやAnsibleを使って大量のデプロイを行う場合、手動でリンクをクリックして認証するのは不可能です。Setup Keysを使用すれば、サーバーの起動時に自動的にネットワークに参加させることができます:

netbird up --setup-key <あなたのセットアップキー>

サーバーをNetwork Routeにする(内部ネットワークへのアクセス)

例えば、192.168.1.0/24のIP帯域にあり、ソフトウェアを追加インストールできないデータベースクラスターがあるとします。既存のLinuxサーバーを「中継地点」として活用できます。

NetBirdダッシュボードのNetwork Routesセクションで、192.168.1.0/24の帯域をそのサーバーに向けるよう設定します。すると、外出先のカフェからでも、まるでオフィスにいるかのようにデータベースの内部IPに直接アクセスできるようになります。

実運用での経験則

1. 内部ファイアウォールを忘れない

NetBirdは外側の保護層です。内側の層として、UFWを設定してNetBirdのIP帯域(通常は100.x.x.x)からの接続のみを受け入れるようにすることをお勧めします。

# NetBirdネットワークからのSSHのみを許可し、インターネットからのすべてのアクセスを遮断する
sudo ufw allow from 100.64.0.0/10 to any port 22
sudo ufw deny 22

2. P2P接続ステータスの確認

接続が遅いと感じる場合は、netbird status -dコマンドで確認してください。接続ステータスが「Relay」と表示されている場合、会社のファイアウォールが厳しすぎるためにトラフィックが中間サーバーを経由しています。P2Pの速度を最適化するために、UDPポートの設定を再確認してください。

3. セルフホストの選択肢

データの完全な制御が必要なフィンテックプロジェクトなどの場合は、NetBirdのコーディネーション・インフラ全体を自前でホスト(Self-hosted)することも可能です。個人利用やスタートアップであれば、最初の100デバイスまで無料のクラウド版で十分すぎるほどです。

Zero Trustセキュリティは、もはや大企業だけの贅沢な概念ではありません。NetBirdを15分設定するだけで、深夜のパスワード総当たり攻撃に怯えることなく、枕を高くして眠れるようになるのです。

Share: