0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

🔒 リモートワーク時代のVPN入門【第二回】WireGuard・AWS VPC連携・VPNを狙った攻撃と対策

0
Posted at

1. 👋 はじめに

前回はVPNの基本(トンネリング・暗号化・SSL-VPN・IPsec・無料VPNのリスク)を学びました。

今回は実務でよく使う内容にフォーカスします!

  • ⚡ 次世代VPNプロトコル「WireGuard」とは?
  • ☁️ AWSのVPC(Virtual Private Cloud)とVPNの関係
  • 🛡️ VPNを狙った攻撃の手口と対策

エンジニアとして知っておくべき知識を網羅します💪


2. ⚡ WireGuard:次世代VPNプロトコル

WireGuardとは?

WireGuard は2020年にLinuxカーネルに正式採用された、新世代のVPNプロトコルです。従来のVPNが抱えていた「複雑さ・遅さ・コードの肥大化」という問題をすべて解決しました。

従来のVPNプロトコル(OpenVPN・IPsec):
  コード行数:数十万行
  設定ファイル:複雑で長い
  速度:普通〜やや遅い
  暗号化アルゴリズム:選択肢が多い(設定ミスのリスク)

WireGuard:
  コード行数:約4,000行(圧倒的にシンプル!)
  設定ファイル:数行で完結
  速度:従来比2〜3倍高速 🚀
  暗号化アルゴリズム:最新のものに固定(設定ミスなし)

WireGuardが速い理由:カーネル内処理の威力

【従来のOpenVPN:ユーザー空間で動作】

  パケット受信
      ↓
  カーネル空間(OS)
      ↓ ← コンテキストスイッチ(ここが遅い!)
  ユーザー空間(OpenVPNプロセス)
      ↓ 暗号化・復号処理
  カーネル空間(OS)
      ↓ ← 再びコンテキストスイッチ
  パケット送信

→ 空間の行き来(コンテキストスイッチ)のたびに
  CPUのオーバーヘッドが発生 😓

【WireGuard:カーネル内で完結】

  パケット受信
      ↓
  カーネル空間(OS)
      ↓ そのまま暗号化・復号
  パケット送信

→ 行き来なし!カーネル内で一気に処理 🚀
② 最新の暗号化アルゴリズムを使用
  └─ ChaCha20(暗号化)
  └─ Poly1305(認証)
  └─ Curve25519(鍵交換)
  → どれも現代最速クラスのアルゴリズム
  → 選択肢を固定しているので設定ミスも防げる

③ シンプルな設計
  └─ 複雑な処理がない → その分高速
  └─ コード4,000行は監査もしやすい(セキュリティ上も有利)

🏄 ローミング性能:モバイルワークで光る強み

WireGuardは「速い」だけでなく、ステートレスに近い設計が現場で特に重宝される理由のひとつです。

【従来のVPN:IPアドレスが変わると接続が切れる】

カフェのWi-Fi接続中 → 移動 → 4G回線に切り替え
  IPアドレス変更!
      ↓
  VPN接続が切断 😱
      ↓
  再接続が必要 → 作業が中断される

【WireGuard:IPアドレスが変わっても自動で継続】

カフェのWi-Fi → 移動 → 4G回線に切り替え
  IPアドレス変更!
      ↓
  WireGuardが自動で新しいIPで再接続 ✅
      ↓
  作業をそのまま継続できる 🎉

💡 なぜできる?
WireGuardはセッション情報をサーバー側で厳密に管理しない
「公開鍵が正しければOK」というシンプルな認証
→ IPが変わっても公開鍵は変わらないので接続継続!

これがモバイルワーカーやリモートワークで重宝される理由 📱💻

WireGuardの設定例

# /etc/wireguard/wg0.conf(サーバー側)

[Interface]
Address = 10.0.0.1/24        # VPNネットワークのアドレス
ListenPort = 51820           # 待ち受けポート
PrivateKey = サーバーの秘密鍵
SaveConfig = true            # 🔑 実行中の設定変更を自動保存(wg addpeer後も消えない)

# iptablesでNATを設定(VPN経由でインターネットに出る場合)
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
# ↑ PostUp/PostDown:VPN起動・停止時に自動でiptablesルールを追加・削除

[Peer]
PublicKey = クライアントの公開鍵
AllowedIPs = 10.0.0.2/32    # このクライアントに割り当てるIP
PersistentKeepalive = 25    # 25秒ごとにキープアライブ(NAT越えに有効)
# クライアント側

[Interface]
Address = 10.0.0.2/24        # クライアントのVPN内IPアドレス
PrivateKey = クライアントの秘密鍵
DNS = 10.0.0.1               # VPN接続中のDNSサーバー(DNSリーク防止)

[Peer]
PublicKey = サーバーの公開鍵
Endpoint = サーバーIP:51820  # 接続先
AllowedIPs = 0.0.0.0/0      # すべての通信をVPN経由に
PersistentKeepalive = 25    # NAT配下でも接続を維持

たったこれだけ!OpenVPNの設定ファイルが数十行になることを考えると、圧倒的にシンプルです✨

💡 設定のポイント:
  SaveConfig = true  → ピアを動的追加しても再起動で消えない
  PostUp/PostDown    → iptablesの管理を自動化・ヒューマンエラーを防ぐ
  PersistentKeepalive → NATルーター越えの接続安定性を確保
  DNS指定            → VPN接続中のDNSリーク(本来のIPが漏れる)を防ぐ

主要VPNプロトコルの比較

項目 OpenVPN IPsec/IKEv2 WireGuard
⚡ 速度 普通 速い 最速 🏆
🔒 セキュリティ 高い 高い 高い
📝 設定の複雑さ 複雑 とても複雑 シンプル 🏆
📦 コード量 約70,000行 約40万行 約4,000行 🏆
🖥️ 対応OS 全OS 全OS 全OS
📱 モバイル 対応 対応 対応
🔄 ローミング 弱い 弱い 強い 🏆
📅 登場年 2001年 2005年 2020年

WireGuardを使ったサービス

🌐 WireGuardを採用している主なサービス:
  └─ Tailscale(エンジニアに人気のVPNサービス)
  └─ Cloudflare WARP(無料・高速)
  └─ NordVPN(NordLynxとして採用)
  └─ ExpressVPN(Lightwayとして採用)
  └─ AWS VPN(一部で採用)

3. ☁️ AWS VPCとVPNの連携

VPC(Virtual Private Cloud)とは?

VPC はAWS上に作る「仮想のプライベートネットワーク」です。

【VPCのイメージ】

🌍 インターネット
        │
        │
┌──────────────────────────────────────────┐
│  AWS クラウド                             │
│  ┌───────────────────────────────────┐   │
│  │  VPC(仮想プライベートネットワーク) │   │
│  │                                   │   │
│  │  ┌───────────┐ ┌───────────┐      │   │
│  │  │パブリック  │ │プライベート│      │   │
│  │  │サブネット  │ │サブネット  │      │   │
│  │  │(公開)    │ │(非公開)  │      │   │
│  │  │ EC2       │ │ RDS       │      │   │
│  │  │ ALB       │ │ ElastiC   │      │   │
│  │  └───────────┘ └───────────┘      │   │
│  └───────────────────────────────────┘   │
└──────────────────────────────────────────┘

AWSとオンプレミスをつなぐ3つの方法

【ハイブリッドクラウド構成のルート比較】

【Site-to-Site VPN】

  会社のオフィス
      │
      │ インターネット経由(暗号化)
      │ ~~~~~~~~~~~~
      │
  AWS VPC
  コスト:低い ✅ 導入期間:数日〜1週間 ✅

【Direct Connect】
  会社のオフィス
      │
      │ 専用の物理回線(インターネットを通らない)
      │ ━━━━━━━━━━━━━━━━━━━━
      │
  AWS VPC
  コスト:高い(数十〜数百万/月) ⚠️ 導入期間:数ヶ月 ⚠️
【Client VPN】
  リモートワーカーのPC
      │
      │ インターネット経由(SSL/TLS)
      │ ~~~~~~~~~~~~
      │
  AWS VPC
  コスト:中程度 ✅ 導入期間:数日 ✅
方式 経路 コスト 導入期間 向いている場面
Site-to-Site VPN インターネット(暗号化) 低い 数日〜1週間 中小規模・まず試したい
Direct Connect 専用物理回線 高い 数ヶ月〜 大規模・安定性最優先
Client VPN インターネット(SSL) 中程度 数日 リモートワーカー向け

💡 プロジェクトマネジメントの視点:
Direct Connectは「高い」だけでなく
物理回線の手配・工事・テストで数ヶ月かかる

「来月からAWSに移行したい」という場合は
まずSite-to-Site VPNで繋いで運用しながら
Direct Connectの準備を進めるのが現実的!

AWS Site-to-Site VPNの仕組み

【会社のオフィス】              【AWS VPC】
  社内ネットワーク               VPC(10.0.0.0/16)
  (192.168.1.0/24)                │
        │                         │
  カスタマーゲートウェイ ══════ 仮想プライベートゲートウェイ
  (会社側のルーター)   IPsecトンネル  (AWS側のVPNエンドポイント)
                        ×2本(冗長化)

✅ ポイント:
  └─ 2本のトンネルで冗長化(1本切れても通信継続)
  └─ BGP(動的ルーティング)またはスタティックルートで設定
  └─ 帯域幅:最大1.25Gbps(接続あたり)

AWS Client VPNの仕組み

【リモートワーカー】           【AWS VPC】
  自宅のPC                     VPC
    │                           │
  VPNクライアント ══════ Client VPNエンドポイント
  (OpenVPNベース)  SSL/TLS       │
                                  │
                            EC2・RDS・S3など

✅ 活用シーン:
  └─ 開発者がAWS上のプライベートリソースに安全アクセス
  └─ 本番DBに直接接続する際のセキュリティ確保
  └─ 踏み台サーバーの代替

VPCピアリングとTransit Gatewayとの違い

VPNとよく混同されるVPCピアリングとの違い:

VPCピアリング:
  AWS内の2つのVPCを直接接続(AWS内のみ)
  → 外部とは接続できない
  → VPCが増えると管理が煩雑になる(後述)

Site-to-Site VPN:
  オンプレミス(会社)↔ AWSを接続
  → インターネット経由で暗号化通信

Direct Connect:
  オンプレミス(会社)↔ AWSを専用線で接続
  → インターネットを使わない最高品質の接続

⚠️ VPCピアリングの落とし穴:規模が大きくなると管理が爆発!

VPCが3つの場合(ピアリング数:3):
  VPC-A ── VPC-B
    └────── VPC-C
    VPC-B ─ VPC-C

VPCが10つになると? → ピアリング数は最大45本!
  管理が複雑になりすぎる 😱

✅ 解決策:Transit Gateway(トランジットゲートウェイ)

  VPC-A ╮
  VPC-B ┼→ Transit Gateway(ハブ)→ オンプレミスへ
  VPC-C ╯
  VPC-D ╯

→ すべてのVPCをTransit Gatewayに繋ぐだけ!
→ VPCが増えてもHub-Spoke構成でシンプルに管理
→ Site-to-Site VPNもTransit Gateway経由で集約可能

💡 VPC数が5つを超えてきたら Transit Gateway の導入を検討しよう!

4. 🛡️ VPNを狙った攻撃と対策

VPNは安全に見えますが、狙われることも増えています。どんな攻撃があるか知っておきましょう。

攻撃① 脆弱性を悪用した侵入:ランサムウェアの入口になる

😰 攻撃の手口:
VPN製品のソフトウェアの脆弱性を突いて
認証なしで侵入する

実際の事例:
  └─ Pulse Secure VPNの脆弱性(CVE-2019-11510)
     → 認証なしで任意のファイルを読み取り可能
     → 多数の企業・政府機関が被害

  └─ Fortinet VPNの脆弱性(CVE-2018-13379)
     → 認証情報(パスワード)が盗める
     → 数十万台のVPN機器が影響を受けた

🚨 近年のランサムウェア被害の多くが「VPN機器のパッチ未適用」から始まっている

攻撃の典型的な流れ:

① VPN機器の脆弱性を悪用して侵入
        ↓
② 社内ネットワークを探索(ラテラルムーブメント)
        ↓
③ 管理者権限を奪取
        ↓
④ 社内の重要データを暗号化
        ↓
⑤ 「復号したければ身代金を払え」← ランサムウェア 💀

→ VPNのパッチを1日でも早く適用することが、
  ランサムウェア被害を防ぐ最重要対策!

✅ 対策:
□ VPN製品のアップデートを迅速に適用(24〜72時間以内が理想)
□ セキュリティ情報(JVN・CVE)を定期的に確認
□ 不要なVPNサービスは無効化
□ 古いVPN製品は新しいものに入れ替え
□ VPN機器をインターネットに直接公開している範囲を最小化

攻撃② 認証情報の窃取・総当たり攻撃

😰 攻撃の手口:
VPNのログイン画面に対して

  • パスワードを総当たりで試す(ブルートフォース攻撃)
  • 盗んだ認証情報でログイン(クレデンシャルスタッフィング)
🔓 なぜVPNが狙われる?
  └─ VPNに接続できれば「社内ネットワーク」に侵入できる
  └─ 侵入後は社内システムを自由に動き回れる
  └─ ランサムウェア攻撃の入口としてよく使われる
🔑 実際の事例:MFAがあれば防げた攻撃

2021年 Colonial Pipeline(米国のパイプライン会社)
  └─ VPNの認証情報が漏洩
  └─ MFAが設定されていなかった
  └─ 攻撃者がVPN経由で侵入 → ランサムウェア被害
  └─ 燃料パイプラインが数日間停止 → 社会的混乱
  └─ 身代金:約4.4億円(75ビットコイン)を支払い

→「パスワードが漏れてもMFAさえあれば
   この攻撃は防げていた」と専門家が指摘

MFAは「めんどくさい」ではなく「会社を守る最後の砦」!

✅ 対策:
□ 多要素認証(MFA)を必ず有効にする ← 最重要!これ1つで大半の攻撃を防げる
□ 強力なパスワードポリシーを設定
□ ログイン失敗回数を制限(アカウントロック)
□ 地理的にあり得ない場所からのアクセスをブロック
□ 異常なアクセスパターンを監視・アラート

攻撃③ 中間者攻撃(Man-in-the-Middle)

😰 攻撃の手口:
VPN接続の確立前に割り込んで、偽のVPNサーバーに誘導する

  ユーザーのPC → 偽VPNサーバー(攻撃者) → 本物のVPNサーバー
                         ↑
                  通信を盗み見・改ざん

よくある状況:
  └─ 公共Wi-Fiで偽のアクセスポイントを設置
  └─ DNSハイジャックでVPNサーバーのアドレスを偽造

✅ 対策:
□ VPNサーバーの証明書を必ず検証する設定にする
□ 公共Wi-Fiでは接続前にVPNを確立する
□ 証明書ピンニングを使用する
□ DNSSECを導入する

攻撃④ Split Tunneling の悪用

😰 Split Tunnelingとは?

  Split Tunneling OFF(全通信VPN経由):
    すべての通信 → VPNトンネル → インターネット
    └─ 安全だが遅い

  Split Tunneling ON(会社向けのみVPN経由):
    会社向け通信 → VPNトンネル → 社内ネット
    一般通信 → 直接インターネット
    └─ 速いが、**一般通信は保護されない**

😰 リスク:
└─ 感染したPCから社内ネットワークへ侵入される踏み台になる
└─ マルウェアがVPN経由で社内に侵入する入口になる

✅ 対策:
□ Split Tunnelingを無効にする(全通信VPN経由に)
□ やむを得ず使う場合はエンドポイントセキュリティを強化
□ VPN接続中のデバイスのセキュリティ状態を検証

攻撃⑤ VPN設定ミスを突いた攻撃

😰 よくある設定ミス:

  └─ デフォルトのIDとパスワードを変更していない
  └─ 不要なポートが開放されている
  └─ ログが適切に記録されていない
  └─ 暗号化アルゴリズムが古い(DES・3DES・MD5など)
  └─ 証明書の有効期限が切れたまま運用

✅ 対策:
□ VPN導入後は必ずセキュリティ設定を見直す
□ 定期的なペネトレーションテストを実施
□ 古い暗号化アルゴリズムを無効化する
□ ログを定期的に確認・保存する

VPNセキュリティ対策チェックリスト

🔐 VPN管理者が確認すべきチェックリスト:

認証:
  □ 多要素認証(MFA)を有効にしているか
  □ パスワードポリシーは十分に強いか
  □ 不要なアカウントは無効化しているか

ソフトウェア:
  □ VPN製品のアップデートは最新か
  □ 既知の脆弱性(CVE)への対応は済んでいるか
  □ 古いプロトコル(PPTP・DES等)は無効か

監視:
  □ ログを記録・保存しているか
  □ 異常なアクセスのアラートを設定しているか
  □ 定期的にログを確認しているか

設計:
  □ 最小権限の原則を守っているか
  □ Split Tunnelingは適切に設定されているか
  □ バックアップの接続手段はあるか

5. 🔮 VPNの未来:ゼロトラストへの移行

従来のセキュリティモデル(境界型):
  「社内にいれば安全・社外は危険」
  └─ VPNで「社内に入る」ことを重視

現代のセキュリティモデル(ゼロトラスト):
  「場所を問わず、すべてのアクセスを検証する」
  └─ VPNで繋がっても、毎回認証・認可を確認

「信頼しない・常に確認する(Never Trust, Always Verify)」

【ゼロトラストの世界でのアクセス制御】

リモートワーカー
    ↓
認証(誰?)
    ↓
デバイス確認(このPCは安全?)
    ↓
コンテキスト確認(いつ・どこから・何を?)
    ↓
最小権限でアクセス許可
    ↓
継続的にモニタリング

→ VPNだけに頼らず、多層的に守る!

VPNとゼロトラストの使い分け

従来型VPN ゼロトラスト
考え方 社内ネットワークは安全 すべてを疑う
認証 接続時に1回 アクセスのたびに
権限 社内全体にアクセス可 必要なリソースのみ
向いている場面 小規模・シンプルな環境 大規模・クラウドネイティブ環境
代表的な製品 OpenVPN・Cisco AnyConnect Cloudflare Access・Zscaler・BeyondCorp

6. 🎯 まとめ

概念 一言で言うと
⚡ WireGuard シンプル・高速・安全な次世代VPNプロトコル
🏢 Site-to-Site VPN 会社とAWSをIPsecで接続する方式
👤 Client VPN 個人PCからAWS VPCに安全接続する方式
🔓 脆弱性攻撃 古いVPN製品のバグを突いた侵入 → 迅速なアップデートで対策
🔑 認証情報窃取 パスワード総当たり・盗用 → MFAで対策
🕵️ 中間者攻撃 偽VPNサーバーへの誘導 → 証明書検証で対策
🔀 Split Tunneling 一部通信のみVPN経由 → 設定を慎重に
🛡️ ゼロトラスト VPNだけに頼らない多層防御の考え方

VPNは正しく設定・運用すれば強力なセキュリティツールです。しかしアップデートを怠る・MFAを設定しない・設定を見直さないといった運用の甘さが攻撃の入口になります。「使えばOK」ではなく「正しく使う」ことが重要です🔒

💬 質問や感想があれば、コメント欄でお気軽にどうぞ!
👍 役に立ったら、いいね&ストックをお願いします!
🎓 ここまで読んでくださって、本当にありがとうございました!


🔗 シリーズ記事

  • 【第一回】VPNの仕組みを図解!トンネリング・暗号化・SSL-VPN・IPsec
  • 【第二回】WireGuard・AWS VPC連携・VPNを狙った攻撃と対策(この記事)
0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?