0から始めるVPC概論入門

AWSと聞いて思い浮かべるのはEC2の仮想サーバであったり、S3のストレージサービスだったりするかもしれませんが、実はAWSの中で最も重要なものがネットワークを設計するVPCです。一度作ってしまうと後から変更しにくい、そんなに何度も作る機会がないなど地味な役回りですが、VPCの中に立てるEC2の振る舞い、可用性、セキュリティ等などあらゆる箇所に影響するので、VPCを征する者はAWSを征するとも言えるサービスです。

VPCのメリット

VPCを簡単に言えばEC2やRDSを入れる箱みたいなもので、VPCのメリットは下記の3つに集約されます。

①ネットワーク設計の自由度

IPアドレスのCIDRブロックが自由に決められるので、ローカルIPの割り振りはもちろんのこと、オンプレミスネットワークやホームネットワークなどと接続して同一のネットワークのように扱うことができます。

②外部通信

VPCは元々閉じたネットワークのため安全であり、明示的にゲートウェイなどを設けることでインターネットやVPNなどと接続することができます。

* インターネットゲートウェイ
* 仮想プライベートゲートウェイ・VPN接続
* VPCピア接続
* AWS Direct Connect

③セキュリティ

セキュリティグループとネットワークACLによって、不要な通信をブロックする通信フィルタリングが可能になります。

VPC基本設計

用途によって色々な設計ができることがメリットなので万能な設計図はありませんが、一般的なWebサービスではこの図のようなVPC構成を基本としている場合が多いです。

ELBやBastionなどを配置するパブリックなサブネットがあり、アプリケーションが動いているEC2を配置するプライベートサブネット、さらにその奥にDBレイヤーとなるプライベートサブネットの3レイヤー構成で、それぞれMulti AZ(Availability zone)となるので合計6つのサブネットを作成します。

アプリケーションが動作しているEC2をプライベートに配置して、インターネットからの流入はELBからのアクセスだけに絞ることでセキュリティを高める設計です。

ただ、このままではEC2からyum updateやapt-get updateが通らないので、パブリックサブネットにNATを配置して内部から外部への確保する方法が一般的です。

単純な攻撃例

では、パブリックなサブネットにEC2を立ててWebサービスを提供するとどういう危険があるのでしょうか。普段ブラウザとドメインを使ってWebサイトなどにアクセスしていますが、nslookupというコマンドを使えば、サーバ自体のIPアドレスを取得できます。

$ nslookup xxxxxxxxxx.com
Server:		8.8.8.8
Address:	8.8.8.8#53
Non-authoritative answer:
Name:	xxxxxxxxxx.com
Address: xxx.xxx.xxx.xxx

このIPアドレスに対して、nmapでポートスキャンをかけます。

$ nmap xxx.xxx.xxx.xxx
Starting Nmap 7.40 ( https://nmap.org ) at 2017-00-00 00:00 JST
Nmap scan report for xxxxxxxxxx.com (xxx.xxx.xxx.xxx)
Host is up (0.0095s latency).
Not shown: 995 filtered ports
PORT     STATE  SERVICE
22/tcp   open   ssh
25/tcp   closed smtp
80/tcp   open   http
443/tcp  closed https
3000/tcp closed ppp

対象となるサーバで開いているポート(通信を受け付ける玄関のようなもの)が簡単に取得できます。ちなみにこの結果は、設定したAWS EC2サーバのセキュリティグループと一致します。

見つけたopenポートに対して、hydraなどのツールでブルートフォースアタック(総当たり攻撃)を仕掛ける、またはミドルウェアのバージョン情報取得して既知の脆弱性を使うなどして、システムへの侵入が可能となるわけです。hydraについてはnmapなどのようなセキュリティチェック目的以外の用途なので詳細は割愛しますが、たったこれだけの古典的かつ簡単な攻撃によってすぐにサーバが危険に晒されることになります。

※他人の所有するサーバに対して不正アクセスする行為は犯罪に問われます。

IPA よくある相談と回答(FAQ):不正アクセス

もちろん、こうした攻撃は日本国内からとは限りません。アジアやヨーロッパなど我々の常識的な法体系から外れた国を経由して攻撃してくるということは十分考えられることです。

このため、パブリックなサブネットにポートを解放したEC2を設置するというのは、せっかくのVPCのメリットがあまりなく、そういうサーバに個人情報など重要な情報を置くべきではありません。

まとめ

VPCはインターネットに露出するインスタンスを最小限に抑えて危険を防いだり、複数のAvailability zoneを含んで可用性を高めたり、設計によって独自のネットワークを構築できるというところが、昔から様々あったサーバ関連のサービスとは異なるAWSの大きな特徴です。

APN Consulting Partner
スーパーソフトウエアはAWSパートナーネットワーク(APN)のコンサルティングパートナーです。