bitbank techblog

AWS を使って安全で快適なリモートワーク環境を導入したお話(後編)

これは ビットバンク株式会社 Advent Calendar 2020 の 12 日目の記事です。

はじめに

はじめまして、インフラチームのうえちゃんです。
ビットバンクではインフラエンジニアとして、GitLab の保守や安全・快適なリモートワーク環境の整備などを担当しています。

前回はリモート環境の導入のお話をしましたが、運用していく中で様々な課題が見えてきました。
今回はその課題と代替ソリューションについて紹介していきます。

FortiGate VPN を自社運用する上での問題点

FortiGate VPN を自社運用する上で、大きな課題が 3 つありました。

  1. 運用体制の都合上、すぐにパッチを当てることが困難なので、VPN サーバへの攻撃・侵入リスクが高い
  2. 1 を解消するために IP 制限をすると、業務効率が著しく低下する
  3. IPSec VPN の独自拡張を利用しているため、FortiGate 専用クライアントソフトが必要

ひとつひとつ見ていきます。

1. 運用体制の都合上、すぐにパッチを当てることが困難なので、VPN サーバへの攻撃・侵入リスクが高い

一般インターネット回線から VPN 接続を許可するとなると、常に VPN サーバへの攻撃・侵入リスクの問題があります。
常時ユーザーが利用する中で、ユーザーへの影響を抑えつつ迅速にセキュリティパッチを当て続けることは運用負荷が大きく、またパッチ適用のたびにテストが必要になってきます。

2. 1を解消するためにIP制限をすると、業務効率が著しく低下する

弊社では、業務用スマートフォンを包括契約しており、弊社専用にグローバル IP が割り当てられ、各 SIM から NAT (NAPT) されています。
なので、VPN サーバへの攻撃・侵入リスクを軽減させるために VPN の接続元 IP を業務用スマートフォンの IP に制限することも考えられます。

しかし、モバイル回線を使う都合上、どうしても固定回線以上に回線の混雑状況や電波状況の影響を受けて通信速度低下し、常時リモート作業には耐えられませんでした。
また、業務内容によっては大容量のデータ通信が必要なケースも有り、月間データ通信量の上限を超えてしまう可能性もあります。
IP 制限されている SaaS 等に接続するときだけモバイル回線に切り替えるのも現実的では有りません。

3. IPSec VPN の独自拡張を利用しているため、FortiGate 専用クライアントソフトが必要

FortiGate の IPSec VPN (リモートアクセス VPN) は独自拡張のため FortiGate VPN 専用のクライアントソフトである FortiClient を使う必要があります。
そのため、macOS のメジャーバージョンアップがあった際にソフトウェアの対応に時間がかかり、対応までの間は OS のバージョンアップができません。
実際、Mojave から Catalina へバージョンアップされた際も、当初 Fortinet サポートから案内されたスケジュールよりも 1 ヶ月パッチ提供が遅かったのです。
この間 macOS のアップデートができず、弊社では MDM によって会社支給端末のアップデートを強制停止していました。

AWS Client VPN の導入検討

これらの課題を解決するため、IP 制限やサーバ運用の不要な マネージド VPN (クラウド型 VPN) である AWS Client VPN への切り替えプロジェクトを推進することになりました。
なお、AWS Client VPN ローンチ当初は採用を見送った経緯がありますが、その後のアップデートで弊社で業務利用できるレベルに達したため、改めて検討することになりました。
もちろんリスク受容した部分もありますが、最終的に以下のようなポイントから AWS Client VPN を導入することになりました。

  • ID、パスワード、OTP、クライアント証明書の組み合わせで、FortiGate VPN と同等の認証レベルを担保することが可能になった
  • 東京リージョンでサービスが提供されたことにより、 海外のリージョンに接続する場合と比べて通信速度に対する懸念が小さくなった
  • マネージドサービスなので VPN サーバ自体のパッチ適用等の運用保守作業が不要
  • IP 制限を必要とせず、自宅のインターネット回線から直接 VPN 接続が可能

AWS Client VPN 費用感

AWS Client VPN を利用する場合、VPN 利用料金として下記の料金が発生します。
このほかに VPC のデータ通信料金が発生します。
従業員数によって金額は変動しますので注意してください。

  • 従業員数 100 人と仮定し、全従業員が 1 ヶ月フルリモートした場合
    • 1,000 USD
      • 100 USD (基本料金) + (100 人 * 9 USD)

弊社は総従業員数が 100 人未満と比較的小規模なのとフレックスタイム制度を活用する従業員が多いため 1 つの Endpoint で問題ありませんが、従業員数によっては Endpoint を部署ごとに用意するなどの検討が必要かもしれません。
十分に PoC をした上で必要な Endpoint 数を検討するか、あるいはクラウドのメリットを活かしてスモールスタートから始めて足りなそうだったら増やしていくのどちらかになると思います。
AWS サポートを契約している場合は、担当 SA の方に相談してみるのもいいかもしれません。

クライアントソフトウェアの選定

AWS Client VPN はバックボーンの技術として OpenVPN を利用しています。
そのため、無償・有償を問わず OpenVPN クライアントソフトウェアを利用することが可能です。

弊社ではクライアント PC として Mac を支給しており、Mac 用 VPN クライアントソフトウェアとして 、A〜Fの6 種類のソフトウェアを比較検討しました。

検討項目 A B C D E F
有償/無償 無償 無償 無償 有償 無償 有償
プロファイル MDM 配布
証明書キーチェーン配布
AWS 公式マニュアル掲載
総合評価

比較検討した結果、弊社が求める条件をすべて満たすものは A のVPNクライアントソフトウェアだったので、 こちらの採用に至りました。

認証の仕組み

弊社は ActiveDirectory (以下、AD) でユーザアカウント管理を行っており、VPN の認証も AD の 認証情報を使用しています。
それに加えて OneLogin を RADIUS サーバとして OTP による 2 要素 2 段階認証、更にクライアント証明書による認証を行い、すべての認証情報が合致しないと接続できない仕組みを構築しています。

認証の流れについては以下に表現しています。

1-1

  1. ユーザーが MDM から VPN Client Software をインストールする
    • セットアップ過程において復号パスフレーズを Keychain に格納
  2. ユーザーが VPN Client Software から Client VPN Endpoint へ接続(上図 1)
    • ユーザーの OneLogin ID / パスワード / OTP で認証(上図 2,3)
    • VPN Client Software が Keychain を参照し、暗号化されたクライアント証明書を復号して認証(上図 4,5)
  3. Client VPN がクライアント証明書と ACM に登録されているサーバ証明書を突合し、VPN 接続確立

まとめ

今回は VPN というリモートワークの肝に AWS のマネージドサービスを採用しました。
ほかにも弊社では Amazon WorkSpaces というデスクトップサービスを採用しており、AWS のサービスなしではリモートワークが成り立たないと言っても過言では有りません。
なお、VPN サーバとしては FortiGate の利用はなくなりましたが、VPN や WorkSpaces 用の UTM (Firewall) として引き続き FortiGate を使用しています。
今後、AWS マネージドサービスとして UTM が提供されることを期待しています。

最後に

ビットバンクでは AWS が好きな AWS エンジニアを絶賛募集中です。
在宅勤務制度や育児休暇制度を活用して、パパさんエンジニアも活躍しています。
興味のある方はぜひチェックしてみてください。

ビットバンク株式会社 | 採用サイト

expand_less