はじめに
AWSと聞いて思い浮かべるのは、EC2の仮想サーバであったり、S3のストレージサービスだったりするかもしれません。
しかし、実はAWSの中で最も重要なのがネットワークを設計するVPCなのです。
一度作ってしまうと後から変更しにくい、そんなに何度も作る機会がないなど地味な役回りですが、VPCの中に立てるEC2の振る舞い、可用性、セキュリティなどあらゆる箇所に影響します。VPCを征する者はAWSを征するとも言えるサービスです。
AWS VPCとは
正確にはAmazon Virtual Private Cloudのことで、簡単に言えばEC2やRDSを入れる箱みたいなものです。
VPCのメリットは大きく下記の3つに集約されます。
1. ネットワーク設計の自由度
IPアドレスのCIDRブロックが自由に決められるので、ローカルIPの割り振りはもちろん、オンプレミスネットワークやホームネットワークなどと接続して同一のネットワークのように扱うことができます。
2. 外部通信
VPCは元々閉じたネットワークのため安全であり、明示的にゲートウェイなどを設けることでインターネットやVPNと接続することができます。
- インターネットゲートウェイ
- 仮想プライベートゲートウェイ・VPN接続
- VPCピア接続
- AWS Direct Connect
3. セキュリティ
セキュリティグループとネットワーク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のようなセキュリティチェック目的以外の用途になるので詳細は割愛しますが、たったこれだけの古典的かつ簡単な攻撃によってすぐにサーバが危険に晒されることになります。
※他人の所有するサーバに対して不正アクセスする行為は当然犯罪に問われます
昨今、サイバー攻撃という言葉をよく耳にするようになりましたが、こうした攻撃は日本国内からとは限りません。
アジアやヨーロッパなど我々の常識的な法体系から外れた国を経由して攻撃してくるということは十分考えられることです。
このため、パブリックなサブネットにポートを解放したEC2を設置するというのは、せっかくのVPCのメリットがあまりなく、そうしたサーバに個人情報など重要な情報を置くべきではありません。
まとめ
VPCはインターネットに露出するインスタンスを最小限に抑えて危険を防いだり、複数のAvailability zoneを含んで可用性を高めたり、設計によって独自のネットワークを構築できるというところが、昔から存在する様々なサーバ関連のサービスと異なるAWSの大きな特徴です。