はじめに
AWS 上にシステムを構築する際はセキュリティを高める上で踏み台サーバーの存在は欠かせないかと思います。本日は踏み台サーバーを経由してプライベートサブネットにある EC2 に SSH で接続してみようと思います。
踏み台サーバーとは
外部からの直接アクセスを許可しないサーバーやパソコンにアクセスするために設置される中継用のサーバーのことです。踏み台サーバーを導入することによって、機密情報を保管したサーバーへのアクセス元が1か所に限定されるため、外部からの侵入リスクが軽減されるなどのメリットがあります。
アーキテクチャ
①Web Server に SSH でアクセス(Web Server を踏み台サーバーとして使う)
②Web Server から DB Server に SSH でアクセス
実行環境
macOS 13.0.1
手順
1. ネットワーク・サーバ構築
以下のようにサブネット、ルートテーブルなどを作成しネットワーク・サーバを構築します。
<ルートテーブル>
ルートテーブル名 | 設定 |
---|---|
public-route-table | 10.0.0.0/16, 0.0.0.0/0 |
private-route-table | 10.0.0.0/16 |
<サブネット>
サブネット名 | ルートテーブル |
---|---|
public-subnet | public-route-table |
private-subnet | private-route-table |
<セキュリティグループ>
セキュリティグループ名 | インバウンドルール |
---|---|
public-security-group | ポート22, 443を許可(SSH, HTTPSのポート) |
private-security-group | ポート22を許可(SSHのポート) |
<EC2>
ホスト名 | OS | セキュリティグループ |
---|---|---|
web-server | Amazon Linux 2 | public-security-group |
db-server | Amazon Linux 2 | private-security-group |
2. 秘密鍵を Web Server にアップロード
EC2 にSSH でアクセスするには「秘密鍵」が必要ですので、秘密鍵を Web Server に格納します。サーバーにファイル転送をするには「SCP」というプロトコルを使います。
カレントディレクトリに置かれた my-secret-key.pem を転送先のホームディレクトリ(「~/」)に転送するには以下のようにします。
「scp -i 使用する秘密鍵 転送するファイル ユーザ@IPアドレス:コピー先」
scp -i my-secret-key.pem my-secret-key.pem ec2-user@ec2-54-249-215-42.ap-northeast-1.compute.amazonaws.com:~/
3. Web Server に SSH でアクセス
Web Server に割り当てたパブリックIPアドレスに対してアクセスします。
ssh -i my-secret-key.pem ec2-user@ec2-54-249-215-42.ap-northeast-1.compute.amazonaws.com
今回の目的を達成するにおいて必須ではありませんが、秘密鍵を誰でも使えるようにしておくのはセキュリティ上よろしくないので、自分しか使えないように秘密鍵のパーミッションを変更します。
chmod 400 my-secret-key.pem
4. Web Server から DB Server に SSH でアクセス
DB Server に割り当てたプライベートIPアドレスに対してアクセスします。
ssh -i my-secret-key.pem ec2-user@10.0.0.177
さいごに
IT業界にいる方にとっては踏み台サーバーを使うことは当たり前かと思いますが、機密情報を保管したサーバーに直接アクセスできるような環境を使っている会社さんも多いのではないかと思います。興味のある方はぜひ本エントリーのように踏み台サーバーを使ってみてください。