Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[AWSあるある] 外部公開用FTPサーバ構築パターン

Avatar for AWS_Aruaru AWS_Aruaru
September 01, 2021

[AWSあるある] 外部公開用FTPサーバ構築パターン

AWS上で外部公開用のFTPサーバ構築するパターンを紹介します

Avatar for AWS_Aruaru

AWS_Aruaru

September 01, 2021
Tweet

More Decks by AWS_Aruaru

Other Decks in Technology

Transcript

  1. 前提 • Passive Mode (PASV) での構築です • Active Mode の場合は、データ転送はFTP側からクライアントに接続

    するため、外部公開⽤途だと現実的ではないからです • 暗号化されていないので外部公開⽤途で使うべきでないという 正論は、今回は無視しています • 本番環境で利⽤する際は、セキュリティ要件を確認しましょう
  2. Public subnet ⽅法① EC2 インスタンスで構築 v1 VPC FTP Server •

    EC2 インスタンスでFTPサーバを構築するパターン • Passive Modeのため負荷分散・冗⻑化不可 • やるなら Active/Standby 構成で、障害時はEIP 差し替えかDNS変更で対応 • 接続元のIP制限は セキュリティグループで実施 • なんらkの事情で、Public Subnet内にサーバを置け ない場合は、次のパターンを利⽤ Client
  3. Private subnet Public subnet ⽅法① EC2 インスタンスで構築 v2 VPC FTP

    Server • NLBをPublic Subnetに設置するパターン • EC2 インスタンスは Private Subnetに置ける • Passive Modeのため同様に負荷分散・冗⻑化不可 • やるなら Active/Standby 構成で、障害時は NLBに紐付いたEC2インスタンスを差し替える などいろいろパターンあり • IP制限が必要なら、NLBにはセキュリティグループ は使えないので、ターゲットグループが • インスタンス ターゲットなら、EC2インスタ ンス側のセキュリティグループでIP制限する • IPターゲットならPublic Subnet側にNACLを 設定してIP制限する Client Network Load Balancer
  4. 少し詳しく • Passive Modeのため同様に負荷分散・冗⻑化不可 • やるなら Active/Standby 構成で、障害時は NLBに紐付いたEC2インスタンスを差し替える などいろいろパターンあり

    Private subnet Public subnet VPC FTP Server A Network Load Balancer A Private subnet Public subnet Network Load Balancer B FTP Server B • NLBを2つ作っておくパターン(AとB) • それぞれ、FTP Server A と B を紐付ける • (2つのPublic Subnetを指定すれば、NLBは 1つでもいい) • NLBにそれぞれ異なるEIP(EIP A、EIP B とする)が 紐づく • EIP A に ftp1.example.com, EIP B に ftp2.example.com をDNS登録して、FTP利⽤者 にメイン時は ftp1を、繋がらない場合は ftp2を 使ってもらうように伝えておく • ドメインは1つで、DNS変更を障害時に⾏う⽅ 法もあり • データ置き場として共有ストレージ(EFS)を利⽤ EFS
  5. 少し詳しく IP制限が必要ならNLBにはセキュリティグループは使 えないので、ターゲットグループが • インスタンス ターゲットなら、EC2インスタ ンス側のセキュリティグループでIP制限する • IPターゲットならPublic Subnet側にNACLを

    設定してIP制限する Private subnet Public subnet VPC FTP Server Network Load Balancer Private subnet Public subnet VPC FTP Server Network Load Balancer インスタンス ターゲットの場合、 • FTP Serverから⾒たFTP通信の送信元IPはクライ アントのIPになるため、 EC2インスタンス側のセ キュリティグループでIP制限が可能 IPターゲットの場合、 • FTP Serverから⾒たFTP通信の送信元IPはNLBの Private IPになるため、 EC2インスタンス側のセ キュリティグループで制限できない。 • 代わりに、 Public Subnet側にNACLを設定してIP 制限する Client Client インスタンス ターゲット IP ターゲット セキュリティグループでIP制限 X X NACLでIP制限
  6. ⽅法② AWS Transfer Familyで構築 • AWS Transfer Family(FTP) を作成 •

    VPC endpoint が作成されるタイプで作成 • NLBを作成し、ターゲットIPで VPC endpointのIPア ドレスを登録する • NLBは2つのPublic Subnetを指定して作成 • この結果、EIPが2つNLBに割り当てられる • ロードバランシングはできないので、AZ1側のEIPを main系、AZ1側のEIPをbackup系とする • それぞれドメイン登録しておくか、障害時にDNS 変更を⾏うかは要件次第で決める • IP制限が必要な場合は、前述の同じように、NACLを 設定する • FTPを作成する場合は、カスタム ID プロバイダーの 設定が必須 • API Gateway – Lambda – 何らかのデータスト ア(RDS, DynamoDB etc)で構築 Public subnet(AZ1) VPC Network Load Balancer Public subnet(AZ2) Transfer Family (FTP) Endpoints Endpoints Client Main Backup API Gateway Lambda ID/Passwordなどを 保存したデータストア
  7. ⽅法②の注意点 • 可⽤性 • Transfer Family⾃体はリージョンサービスなのでデフォルトで冗⻑化 されている • にもかかわらず、FTP Passive

    Modeの仕様上、Single AZ構成になら ざるをえない • 詳細は以下の「Trade-offs to consider」 • https://aws.amazon.com/blogs/storage/configuring-your-ftps-server- behind-a-firewall-or-nat-with-aws-transfer-family/ • ロギング • Transfer Familyからみたアクセス元IPは NLB のIPアドレスになるた め、クライアントのIPアドレスをロギングできない • IP制限⾃体は前述のNACLにより可能