6
0

More than 1 year has passed since last update.

AWS Transfer FamilyでIPアドレス制限付きのSFTPサーバーを立てる

Last updated at Posted at 2023-01-10

はじめに

AWS Transfer Family は、AWS で提供されている SFTP, FTPS, FTP のプロトコルが使える安全なファイル転送のサービスである。
今回はそのTransfer Familyを使ってVPCにSFTPサーバーを立て、セキュリティーグループを使って特定のIPアドレスしかアクセスできないようにする。
そして、S3に接続することでSFTPサーバーを経由し、S3バケットにオブジェクトが送信される機構を構築する。

前提

  • IAMロール、VPC、S3バケット、セキュリティーグループ、秘密鍵、公開鍵は既に作成済みである
  • OSはMac(Windowsでももちろん可能だが、今回はMacでの実装を紹介している)

目次

1. SFTPサーバーを作成する

2. ユーザーを追加する

3. ファイルを送信してみる

1. SFTPサーバーを作成する

プロトコルを選択する

スクリーンショット 2022-12-26 16.01.54.png

選択するプロトコルはもちろん今回はSTTPサーバーを立てるので、SFTPサーバーを選択する。

IDプロバイダーを選択する

スクリーンショット 2022-12-26 16.05.37.png

後ほど作成するユーザーはこのTransfer Familyで作成・管理したいので、ここでは「サービスマネージド」を選択する。

エンドポイントを選択する

スクリーンショット 2022-12-26 16.29.45.png

  • 「エンドポイントのタイプ」は今回事前に作成したセキュリティーグループを使ってアクセス制限をするので、「VPCでホスト」を選択する。
  • 「アクセス」は今回VPCの外からのアクセスになるので「インターネット向け」を選択する。
  • 「VPC」は事前に作成したVPCを選択する。

アベイラビリティーゾーン(AZ)を選択する

  • VPCを選択すると、以下にある「アベイラビリティーゾーン」選択欄が出てくる。

スクリーンショット 2022-12-26 17.30.35.png

  • 使用するアベイラビリティーゾーンを選択し、それぞれにサブネットとIPアドレスを割り当てる。
  • この時、サブネットはパブリックサブネットを選択しないとサーバーに接続できなくなるので注意する。

セキュリティーグループを選択する

スクリーンショット 2022-12-27 10.57.23.png

  • ここでは事前に作成したセキュリティーグループを選択する

ドメインを選択する

スクリーンショット 2022-12-27 11.13.39.png

  • 今回はサーバーに送信されたファイルはS3に保存するため「Amazon S3」を選択する。

追加の詳細を設定する

スクリーンショット 2022-12-27 11.22.48.png

* ドメインを設定し、「次へ」を押すと、追加の詳細を設定できる。
* 今回設定するのは「CloudWatchログ記録」のみ。それ以外はデフォルトで構わない。
* 「CloudWatchログ記録」ではサーバーがCloudWatchにあるログに記録するためのロールを選択する。

「次へ」を選択し、各種設定を確認後、「サーバーを作成」をクリックするとサーバーが作成できる。


2. ユーザーを追加する

サーバーを作成したら次にユーザーを追加する。
先ほど作成したサーバーを覗いてみると、以下のような「ユーザー」欄がある。
スクリーンショット 2022-12-27 11.30.33.png

ここにユーザーを追加する。「ユーザーを追加」を選択する。

ユーザー設定

スクリーンショット 2022-12-27 11.36.45.png

  • 「ユーザー名」を設定する。
  • 「ロール」はAmazon S3にアクセス権限が付与されたIAMロールを選択する。
  • 「ポリシー」はデフォルトで構わない。
  • 「ホームディレクトリ」は事前に作成したS3バケットを選択する。

SSHパブリックキーを設定する

ここには事前に作成したssh公開鍵をコピペする。
「タグ」に関しては、今回は何も設定しなくても大丈夫。

スクリーンショット 2022-12-27 11.48.36.png

各種設定完了後、右下の「追加」を押すとユーザーが作成される。


3. ファイルを送信してみる

サーバー・ユーザーを作成し終えたら、実際にサーバーにファイルを送信してみる。

  • マックの「ターミナル」アプリを開き、以下のコマンドを実行する。
ターミナル
sftp -i 事前に作成した秘密鍵のパス 事前に作成したユーザー名@SFTPサーバーのエンドポイント

SFTPサーバーのエンドポイントはサーバー名→「エンドポイントの詳細」欄に記載されている。
スクリーンショット 2022-12-27 13.51.32.png
コマンドを実行すると、SFTPサーバーに接続され、成功すると以下のような状態になる。

ターミナル
...
Connected to エンドポイント名
sftp>

これでSFTPサーバーに接続されたので以下のコマンドを実行する。

ターミナル
sftp>  put 送信したいファイル名

putコマンドを実行すると、指定したファイルがSFTPサーバーを経由してS3バケットに送信される。
あとは、無事にS3バケットに送信できているかを確認し、以下のように格納されていれば成功。
スクリーンショット 2022-12-27 14.24.44.png

このシステムの構築により、特定のIPアドレスのみがSFTPサーバーを経由してS3バケットにアクセスできるようになり、よりセキュアなファイル送受信が可能となった。

6
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
0