このタグの記事

Vpc

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

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

はじめまして。 本年度入社しました小林と申します。 城に魅了されてしまったエンジニアです。 どうぞ、よろしくお願いします。 今回はちょうど業務で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サーバ双方に設定する必要があり、双方向の接続が可能になってしまうことに注意が必要です。 セキュリティグループの基本