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

Tech

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

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

要件

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

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

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

ネットワークの構築

はじめに

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

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

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

VPC VPC ID vpc-XXXXXXX
  IPv4 CIDRブロック 10.125.0.0/16
  IPv6 CIDRブロック IPv6 CIDRブロックなし
  テナンシー デフォルト
タグ Name TestVPC

サブネット

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

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

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

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

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

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

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

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

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

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

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

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

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

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

名前タブ TestIG

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

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

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

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

ルートテーブル

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

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

名前タグ TestPublicRouteTable  
VPC vpc-XXXXXXX  

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

  • 対象のルートテーブルを選択→「ルートタブ」を選択→「ルートの編集」を押下
  • ルートに以下の設定を追加
    送信先 0.0.0.0/0
    ターゲット 作成したインターネットゲートウェイ

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

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

セキュリティグループ

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

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

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

  • 基本的な詳細
    セキュリティグループ名 TestSGForBastion
    説明 ssh from internet to bastion
    VPC vpc-XXXXXXX
  • インバウンドルール/アウトバウンドルール
      タイプ プロトコル ポート範囲 ソース
    インバウンド SSH TCP 22 0.0.0.0/0
    アウトバウンド すべて すべて すべて 0.0.0.0/0

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

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

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

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

  • 基本的な詳細
    セキュリティグループ名 TestSGForWebServer
    説明 ssh from bastion to web server
    VPC vpc-XXXXXXX
  • インバウンドルール/アウトバウンドルール
      タイプ プロトコル ポート範囲 ソース
    インバウンド SSH TCP 22 踏み台サーバ用のSG
    アウトバウンド すべて すべて すべて 0.0.0.0/0

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

 

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

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

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

まとめ

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

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

補足

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

タイトルとURLをコピーしました