素敵なサムシングを独断と偏見で一方的に紹介するブログ(´・ω・`)

IT

投稿日:

【AWS】public/privateサブネット上にEC2インスタンスを乗せてSSH通信をしてみよう【VPC】

YouTube

スポンサーリンク

336×280




VPCにEC2を構築

おさらい

前回は、AWSにVPCの土台を作成しました。

全体像としてはこんな感じです。

実際にEC2を構築

今回は作成したVPCの各サブネットbastion(踏み台)サーバー、webサーバー、dbサーバーを構築してみようと思います。

本来は冗長化構成のため各サーバーのインスタンスを複数作成する必要がありますが、今回は一台ずつのみ構築します。
手順は同じなので必要に合わせて冗長構成にしてみてください。

手順

publicサブネット

bastion(踏み台)サーバー

では、まずは踏み台サーバーを作成しましょう。
このサーバーは外部からアクセスするのでpublicサブネット内に作成します。

ただし、IP制限等でアクセスを絞る必要があります。

AWSのマネジメントコンソールにログインし、サービスメニューからコンピューティング>EC2を選択します。

次に、左部メニューインスタンスを選択し、インスタンスの作成ボタンをクリックします。

まずは、Amazon マシンイメージ (AMI)画面が表示されます。
任意のAMIの選択ボタンをクリックします。

次に、インスタンスサイズの選択画面が表示されます。
今回は無料枠のt2.microにチェックを入れて、次の手順:インスタンスの詳細の設定ボタンをクリックします。

次に、インスタンスの詳細の設定画面が表示されます。
ここでは、ネットワークは作成したVPCを選択し、サブネットは作成したpublic-subnet-Aを選択し、その他はデフォルト設定のまま次の手順:ストレージの追加ボタンをクリックします。
※冗長化の際は他のサブネットを選択しましょう。

次のストレージの追加画面何もいじらずそのままで次の手順:タグの追加ボタンをクリックします。

次のタグの追加画面特にいじらずそのままで次の手順:セキュリティグループの追加ボタンをクリックします。

次のセキュリティグループの設定画面では、SSH通信を特定のIPからのみ受け付けるセキュリティグループを作成したいので、新しいセキュリティグループにチェックを入れて許可するIPを入力し、確認と作成ボタンをクリックします。
今回はグループを新たに作成しましたが、この辺はお使いの環境に合わせて設定してください。

次のインスタンス作成の確認画面では、設定した内容が表示されるので内容を確認の上、問題が無ければ作成ボタンをクリックします。

すると、EC2インスタンスに紐付けるキーペアの選択を求められます。

本来は新しく作成したほうが良いですが、今回は既存のキーペアを利用します。
任意のキーペアを選択し、インスタンスの作成ボタンをクリックします。

これでEC2インスタンスの作成は完了です。

同様に、サブネットのpublic/privateを分けてwebサーバーdbサーバーを作成してみてください。

合計3つのインスタンスの作成が完了しました。

ElasticIPの設定

次に、publicサブネット上に作成したEC2インスタンス2台に対して、ローカルからSSH接続を行えるようにするためにそれぞれにElasticIPを取得し設定しましょう。

この設定を行わないとGIPが割り振られないので、SSH接続が出来ません。
もちろんインターネットゲートウェイを設定したpublicサブネットに作ったEC2だからと言って、privateIPでの接続が出来るわけでもないので気をつけましょう。

左部メニューElastic IPを選択し、新しいアドレスの割り当てボタンをクリックします。

次の画面では何も気にせず割り当てボタンをクリックします。

すると新しいElasticIPが発行されたので、閉じるボタンをクリックします。

ElasticIPの関連付け

次にEC2インスタンスに関連付けを行います。

作成したElasticIPにチェックを入れ、アクションからアドレスの関連付けを選択します。

インスタンスは、publicサブネットに作成したEC2インスタンスを選択し、プライベートIPは一つしかないと思うのでそちらを選択し、関連付けボタンをクリックします。

これでアドレスの関連付けは完了です。
もう一つのEC2インスタンスについても同様に関連付けを行ってください。

セキュリティグループの作成

EC2インスタンスを作成した際に、セキュリティグループは同じものを設定したので、現在はwebサーバーにもSSH接続が可能な状態になっています。

今回はwebサーバー、dbサーバーへのSSHはbastionサーバーからのみ行えるように制限をしてみます。

左部メニューセキュリティグループを選択し、セキュリティグループの作成ボタンをクリックします。

すると、セキュリティグループの作成ダイアログが表示されるので、任意のセキュリティグループ名/説明を入力し、VPCは作成したものを選択します。

そして22ポートのソースのIPにbastionサーバーのprivateIPを入力します。
ここでbastionサーバーのElasticIPを入力すると、publicサブネットに構築したwebサーバーには接続出来ますが、privateサブネットに作成したdbサーバーには接続出来ないので気をつけましょう。

入力が完了したら、作成ボタンをクリックします。

これでセキュリティグループの作成は完了です。

セキュリティグループの設定

次に、webサーバーとdbサーバーに上記で作成したセキュリティグループを紐付けます。

左部メニューインスタンスを選択し、セキュリティグループを変更したいインスタンスにチェックを入れ、アクションメニューからネットワーキング>セキュリティグループの変更をクリックします。

すると、セキュリティグループの変更ダイアログが表示されるので、先ほど作成したセキュリティグループのみチェックを入れ、セキュリティグループの割り当てボタンをクリックします。

これで準備は完了です

SSHの接続確認

スポンサーリンク

336×280




では、この状態でローカルからSSH接続を試みてみましょう。

bastionサーバー

まずは踏み台サーバーにアクセスしてみます。
踏み台サーバーにはインターネット経由特定IPからのみ接続出来る設定としています。

以下のコマンドを実行してみてください。

すると、以下のような形でEC2インスタンスに接続出来ると思います。

これは想定通りなので特に問題はありません。

webサーバー

次にWebサーバーです。

このサーバーにもElasticIPでGIPの設定はされていますが、SSHはbastionサーバーからのみしか受け付けないようなセキュリティをかけています。

まずは直接GIP指定でSSH接続をしてみましょう。

おそらく、通信が遮断されるのでタイムアウトすると思います。

以下のコマンドを実行してみてください。

やはりダメでしたね。
正常にセキュリティグループが働いています。

では、次はbastion経由でSSH接続してみましょう。

コマンドは以下の形になります。

こちらは正常に接続出来ましたね。
想定通りです。

dbサーバー

では、最後にdbサーバーにSSH接続してみましょう。

もちろんローカルから直接SSH接続しようとするとタイムアウトで接続出来ません。

以下のコマンドを実行してみてください。

こちらもセキュリティグループによって制限されています。

では、webサーバーと同じようにbastionサーバー経由でSSH接続を試みてみましょう。

こちらもbastionサーバー経由だと正常に接続されましたね。

参考

終わりに

これでVPC内に構築したpublicサブネットとprivateサブネットを利用したEC2周りの整備が出来ましたね。

ちょっと準備は多くなりますが、その分セキュリティも向上されますし、各サーバーの役割も明確になるので、長い目で見ると良いインフラの土台になると思いますので、興味のある方は是非試してみてください。

336×280




336×280




CATEGORIES & TAGS

IT, , , , , ,

blogenist

Author: blogenist

関連記事

YouTube

お名前.comサイドバー