目次
1.サーバーの役割
以前の記事にて、AWS環境上にVPCを利用して仮想ネットワーク環境を構築しました。
<参考記事>
・【AWS】仮想ネットワークを作成してみる(VPC編)
・【AWS】仮想ネットワークを作成してみる(サブネット編)
・【AWS】仮想ネットワークを作成してみる(インターネットゲートウェイ編)
・【AWS】仮想ネットワークを作成してみる(NATゲートウェイ編)
・【AWS】仮想ネットワークを作成してみる(ルートテーブル編)
・【AWS】仮想ネットワークを作成してみる(セキュリティグループ編)
上記の作業を行った結果、仮想ネットワーク環境そのものは完成しましたが、このままではリソースが何も配置されていない状態となります。
この中でWEBシステムを動作させるには、サーバーを立ち上げて、そこに様々なソフトウェアをインストールさせてあげる必要があります。それで初めて、システムを動作させることができます。
ただ、一言でサーバーと言っても、WEBサーバーやDBサーバー、メールサーバーなど、その種類は様々です。
それらを適切なサブネットに配置することが重要となります。
アパート建設に例えると、土地と建物が(中の部屋割りまで)完成し、部屋番号の割り当てまで終わっている状態ですね。もうこの時点で一応住むことは可能です。ただ、人が住むためには、いろんなサービスが必要となります。管理人室や自転車置き場、郵便受けとかですね。
その一つ一つのサービスが、システム上ではサーバーと同じ意味を持ちます。そう考えるとイメージしやすいかと思います。
・管理人室⇒WEBサーバー
・郵便受け⇒メールサーバー
・自転車置き場⇒DBサーバー
こんな風にイメージすると、分かりやすいですかね。
※この辺りは人によって異なるかもですが、そこまで的外れな例えではないかと…。
2.踏み台サーバーとは
今回のように、インターネット上に仮想ネットワーク環境を整え、そこにWEBシステムを配置するということは、いろんなところからアクセスされることを想定しなければいけません。よって、それに応じた対策が必須です。
アパートにしたって、何の対策もしなければ、不特定多数の人が自由に出入りしてしまいますよね。中には悪意ある人もいるかもしれず、これではとても安全安心な状態とは言えませんね。
そこで、WEBシステムを構築する際にまず必要となるのが、「踏み台サーバー」となります。
アパートに例えると、オートロックの玄関といったところでしょうか?
そこまでは誰でも入ってこれますが、そこから先は鍵を持っている人のみが入ることができます。
WEBシステムも同様で、中のリソースにアクセスできる人は制限しなければいけません。その境界線の役割を果たすのが、踏み台サーバーとなります。ここを経由しない限り、このネットワーク上の他の各リソースにはアクセスできません。
そこで今回は、EC2を利用して踏み台サーバーを構築していきたいと思います。
3.踏み台サーバーの作成手順
今回作成する踏み台サーバーは、アクセスする際の境界線としての役割を果たします。外部からの通信に対して、一旦足止めをし、鍵を持っている場合のみ通過を許可します。
よって、踏み台サーバーは高機能にする必要はありません。OSも任意のもので大丈夫です。
因みに、「EC2(Amazon Elastic Compute Cloud)」とは、仮想サーバーを構築するための機能となります。
CPUやメモリ、ストレージといった基本的な部品がスペック毎に備えられており、OSもWindowsやLinuxといったお馴染みの種類が用意されています。
ユーザーはそれらの中から好みの部品を選んでサーバーを構築する事が可能です。
① SSH接続のためのキーペアの作成
今回、踏み台サーバーはLinuxで構築するため、接続方式はSSH(Secure Shell)とします。
よって、まずは秘密鍵/公開鍵のキーペアを用意する必要があります。

AWSのマネジメントコンソール画面上の左上にある検索バーで「EC2」と入力して検索すると、EC2のダッシュボード画面に移動できます。(※上の画面)
左側のメニュー上あるネットワーク&セキュリティの欄に、「キーペア」がありますので、選択してください。
キーペア作成画面に移動できますので、「キーペアを作成」をクリックすると、作成画面に移ります。

キーペアの作成画面では、「名前」「キーペアのタイプ」「プライベートキーファイル形式」の3項目を設定します。
・名前:キーペアは、ユーザー毎に割り当てられるものなので、なるべく個人を識別できる名称にしてください。
・タイプ:今回は、従来からよく使われている「RSA」を選択します。
(※ED25519は、RSAよりもキーサイズが小さく強度もあるとの事ですが、OSの制約などのあるので、今回は使いません。)
・プライベートキーファイル形式:Windows10以前のOSではppkが使われていましたが、Windows10/11、Linuxではpemを使用します。今回は「pem」を選択します。
入力が終わりましたら、「キーペアを作成」をクリックしましょう。

特にエラーがなければ、このように新しいキーペアが作成されます。

キーペア作成と同時に、PCの「ダウンロード」フォルダにpemファイルが作成されます。
名称は、先ほど作成画面にて入力した名前となっています。
このpemファイルは踏み台サーバーへのログイン時に必要となりますので、保管しておいてください。因みに、このキーペアはこのタイミングでしか作成されないので、必ず無くさないようにしましょう。
② 踏み台サーバーの作成

今回は、上記画面の通り、パブリックサブネット1の中に踏み台サーバーを構築していきます。

EC2のダッシュボード画面から「インスタンス」を選択すると、インスタンスの一覧画面に移動できます。
ここで新規にEC2インスタンスを作成していくことになりますので、「インスタンスを起動」をクリックしてください。

まずはEC2インスタンスの名前を決めます。ここは任意の名前で構いません。
今回は「test-ec2-fumidai」とします。

次に決めるのは、「アプリケーションおよびOSイメージ(Amazonマシンイメージ)」となります。
ここでは、EC2インスタンスにインストールするOSを決定します。
今回はLinuxを使いますので、AWSがEC2用に用意している「Amazon Linux」を選択しましょう。

次に決める「インスタンスタイプ」は、CPU、メモリ、ストレージなどの構成です。
何十種類かのタイプから選択する必要がありますが、今回は踏み台サーバーであり、高い機能は不要となりますので、無料利用枠対象である「t2.micro」を選択しましょう。

次は踏み台サーバーにログインするための「キーペア」を選択します。
上記「① SSH接続のためのキーペアの作成」で作成した「key-test-user」をセットしてください。

次は「ネットワーク設定」です。以下の通りに選択してください。
・VPC:test-vpc
・サブネット:test-subnet-public01
・パブリックIPの自動割り当て:有効化
・ファイアウォール:既存のセキュリティグループを選択する。
・共通のセキュリティグループ:default、test-sec-grp-fumidai
(test-sec-grp-humidaiは【AWS】仮想ネットワークを作成してみる(セキュリティグループ編)を参照)
なお、セキュリティグループに「default」を加えるのは、この後作成するPrivateサブネット内のWEBサーバとの通信を許可するためです。なので、必ず加えて下さい。
※このdefaultのセキュリティグループをアタッチしたリソース同士は、全ての通信が許可される

最後に「ストレージ(EC2に割り当てるディスク容量)」を決定します。
今回は踏み台サーバーなので、初期値で問題ありません。
ここまでで、必要な設定は完了です。
入力内容に問題なければ、「インスタンスを起動」をクリックしましょう。

特にエラーがなければ、これでインスタンスが起動されました。
数分待つことで、EC2インスタンスが完成し、アクセス可能となります。
4.踏み台サーバーの接続確認

インスタンスの一覧画面を開くと、上記のようにEC2インスタンスが作成されていることが確認できます。
状態も「実行中」となっているので、もう接続することが可能です。
よって、早速、接続テストを実施してみましょう。
① 踏み台サーバーの接続先確認

インスタンスの一覧画面から、対象のインスタンスIDをクリックし、そこから更に「接続」をクリックすると、上記の「インスタンスに接続」画面を確認できます。
同画面には「パブリックIPアドレス」が明記されていて、これが踏み台サーバーの接続先となります。
② 踏み台サーバーへの接続
踏み台サーバへの接続は、Windowsの「PowerShell」を使用します。
(※PowerShellは、Windowsの検索機能で「PowerShell」と入力すればすぐに開けます)
まず、事前にホームディレクトリに.sshディレクトリを作成して、キーペアを作成した時にダウンロードした秘密鍵を配置しておく必要があります。
PS C:\Users\testuser> mkdir .ssh
PS C:\Users\testuser> cp .\Downloads\key-test-user.pem .ssh
秘密鍵の配置が完了したら、以下のコマンドで接続を試みましょう。
ssh -i ~\.ssh\key-test-user.pem ec2-user@XXX.XXX.XXX.XXX
成功すると、以下のようなメッセージが表示されます。
PS C:\Users\testuser> ssh -i ~\.ssh\key-test-user.pem ec2-user@XXX.XXX.XXX.XXX
The authenticity of host 'XXX.XXX.XXX.XXX (XXX.XXX.XXX.XXX)' can't be established.
ED25519 key fingerprint is SHA256:4+zvKk0qz4TCuHE2SyzseYGgbGWJe1vVApVr8V0yE1Y.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'XXX.XXX.XXX.XXX' (ED25519) to the list of known hosts.
, #_
~\_ ####_ Amazon Linux 2023
~~ \_#####\
~~ \###|
~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023
~~ V~' '->
~~~ /
~~._. _/
_/ _/
_/m/'
[ec2-user@ip-XXX-XXX-XXX-XXX ~]$
これで、踏み台サーバーの接続確認は完了です。
因みに、接続を切断する場合は、logout、またはexitコマンドを入力してください。
まとめ
これで、踏み台サーバーへの接続が完了しました。
外部からのアクセスは必ずこのサーバーを経由し、秘密鍵を持っていなければ同サーバーを通過することができません。
これによって、ネットワークの安全性を高めることができます。
ただ、踏み台サーバーを作成しただけでは何の機能も無いのと同じなので、今後、WEBサーバー、DBサーバーといったリソースを追加していこうと思います。
(今回はここまで)
お読みいただき、有難うございました!



コメント