AWS 踏み台サーバ(ネットワーク)の構築

AWS 踏み台サーバ(ネットワーク)の構築

はじめまして。 本年度入社しました小林と申します。 城に魅了されてしまったエンジニアです。 どうぞ、よろしくお願いします。

今回はちょうど業務でAWSに触れる機会があったため、ネットワークの設定に関して紹介していきます。

要件

以下のような環境を構築します。

  • 踏み台サーバ(Amazon EC2)
    • インターネットから直接アクセス可能
  • Webサーバ(Amazon EC2)(※今回Webサーバとして公開することは考慮しない)
    • インターネットから直接アクセス不可
    • 踏み台サーバからのみアクセス可能
  • 踏み台サーバとWebサーバは異なるサブネットに所属
  • サブネットはそれぞれ異なるAZに存在

ネットワークの構成図はこのようになります。

ネットワークの構築

はじめに

用件に見合う構成にするために、以下のサービスを利用します。

  • Amazon VPC-VPC
  • Amazon VPC-サブネット
  • Amazon VPC-インターネットゲートウェイ
  • Amazon VPC-ルートテーブル
  • Amazon VPC-セキュリティグループ

※VPCは以下の設定で作成し、これら以外はデフォルトの設定を使用することを前提とします。

VPCVPC IDvpc-XXXXXXX
IPv4 CIDRブロック10.125.0.0/16
IPv6 CIDRブロックIPv6 CIDRブロックなし
テナンシーデフォルト
タグNameTestVPC

サブネット

パブリックサブネット(インターネットからアクセス可能なサブネット)

以下の設定でサブネットを作成します。

名前タグTestPublicSubnet
VPCvpc-XXXXXXX
アベイラリティゾーン※us-east-2a
IPv4 CIDR ブロック10.125.1.0/24

※リージョンはオハイオ(us-east−2)を利用しています。

このままだと、EC2インスタンスを起動した際にパブリックIPが自動で割り当てられないため、自動割り当ての設定を行います。(EC2インスタンスの作成時に割り当てることも可能です。)

  • 該当のサブネットを選択→アクション→「自動割り当てIP設定の変更」を押下

  • 「IPv4 の自動割り当て」をチェック→保存

プライベートサブネット(インターネットからアクセス不可なサブネット)

以下の設定でサブネットを作成します。

名前タグTestPrivateSubnet
VPCvpc-XXXXXXX
アベイラリティゾーン※us-east-2b
IPv4 CIDR ブロック10.125.2.0/24

※リージョンはオハイオ(us-east−2)を利用しています。

インターネットゲートウェイ

VPCの内部とインターネット間の通信を許可するために、インターネットゲートウェイを作成します。

インターネットゲートウェイ自体には細かい設定は存在しません。

名前タブTestIG

作成後、VPCと関連付けます。

  • アクション→「VPCにアタッチ」を押下

  • 「使用可能なVPC」に対象のVPC(TestVPC)を選択→「インターネットゲートウェイのアタッチ」を押下

これでVPCは作成したゲートウェイ経由でインターネットと通信ができるようになる入り口が用意されました。

ルートテーブル

ゲートウェイは入り口に過ぎず、ゲートウェイへのルートを用意する必要があり、そのためにルートテーブルを用意する必要があります。

以下の設定でルートテーブルを作成します。

名前タグTestPublicRouteTable
VPCvpc-XXXXXXX

作成したルートテーブルにインターネットゲートウェイを経由する設定を追加します。

  • 対象のルートテーブルを選択→「ルートタブ」を選択→「ルートの編集」を押下

  • ルートに以下の設定を追加

    送信先0.0.0.0/0
    ターゲット作成したインターネットゲートウェイ

作成したルートテーブルにサブネットを関連付けします。

  • 対象のルートテーブルを選択→「サブネットの関連付け」を選択→「サブネットの編集」を押下
  • パブリックサブネットのみを選択→保存

セキュリティグループ

最後にEC2への接続を許可するためにセキュリティグループを作成します。

踏み台サーバ用のセキュリテイグループ

以下の設定でセキュリティグループを作成します。

  • 基本的な詳細

    セキュリティグループ名TestSGForBastion
    説明ssh from internet to bastion
    VPCvpc-XXXXXXX
  • インバウンドルール/アウトバウンドルール

    タイププロトコルポート範囲ソース
    インバウンドSSHTCP220.0.0.0/0
    アウトバウンドすべてすべてすべて0.0.0.0/0

これでインターネット側からのSSH接続を許可しました。

※必要に応じて接続元を絞ることをお勧めします。  この設定ではどこからでもアクセスできてしまいます。

Webサーバ用のセキュリティグループ

以下の設定でセキュリティグループを作成します。

  • 基本的な詳細

    セキュリティグループ名TestSGForWebServer
    説明ssh from bastion to web server
    VPCvpc-XXXXXXX
  • インバウンドルール/アウトバウンドルール

    タイププロトコルポート範囲ソース
    インバウンドSSHTCP22踏み台サーバ用のSG
    アウトバウンドすべてすべてすべて0.0.0.0/0

ソースに対象のセキュリティグループを指定することで、そのセキュリティグループが設定されているEC2インスタンスからのアクセスを許可することができます。 もちろん、IPアドレスで指定することも可能です。

ネットワーク側の設定は以上になります。

これらの設定をEC2インスタンスに関連付けることで、踏み台サーバからのSSHのみを受け付ける環境が完成します。

EC2 インスタンスサブネットセキュリティグループ
踏み台サーバパブリックサブネット踏み台サーバ用のセキュリティグループ
WebサーバプライベートサブネットWebサーバ用のセキュリティグループ

まとめ

肝となるのは、以下の2点かと思います。 私自身はこの設定が漏れていたことにより、うまく接続することができませんでした。

  • ルートテーブルとインターネットゲートウェイの関連付け
  • セキュリティグループのソースにセキュリティグループを指定

補足

セキュリティグループに関してなのですが、実はWebサーバ用のセキュリティグループで設定した内容は、VPCを作成した際に作成されるデフォルトのセキュリティグループを指定することで実現が可能です。 しかし、デフォルトのセキュリティグループを使用する場合は、踏み台サーバ、Webサーバ双方に設定する必要があり、双方向の接続が可能になってしまうことに注意が必要です。