MS_FTPServerOnCloud - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki
- 戻る(FTP)
- クラウド環境にFTPサーバを構築する場合
クラウド環境に FTP サーバを構築する場合、
- 先ず、NAPTがあると思うので、
(アクティブに対応の NAPT もあるらしいですが)
パッシブを "適切" に設定するのが良いようです。 - 以下のサーバー側の設定を "適切" に加えます。
- データ通信のサーバー側の IP アドレスをグローバル IP にする。
- データ通信のサーバー側のポート番号の範囲を限定する。
補足(FTP がクラウドで詰まる理由): FTP は
制御用とデータ用で 2 本の接続を張るという、
現代のネットワークとは相性の悪い設計になっている。【アクティブ モード】 クライアント →[21番:制御]→ サーバ クライアント ←[20番:データ]← サーバ ← サーバ側から接続を張る(!) ↑ クライアント側の FW / NAPT で弾かれる 【パッシブ モード】 クライアント →[21番:制御]→ サーバ 「データ用のポートは 50000 番です」と応答 クライアント →[50000番:データ]→ サーバ ← クライアント側から張る ↑ サーバ側の FW / NAPT を通す必要があるつまり、**どちらのモードでも「どちらか側の NAT / FW を
通り抜けなければならない」**という構造的な問題を抱えている。クラウドでは必ず NAPT(またはロード バランサ)が
前段に入るため、
選択 結果 アクティブ クライアント側の環境に依存する。企業 NW では大抵通らない パッシブ サーバ側で対処できる(本文の推奨) となり、パッシブ一択になる。
本文が挙げる 2 つの設定は、まさにその「サーバ側での対処」である。
補足(2 つの設定がなぜ必要か): 本文の 2 項目には
それぞれ明確な理由がある。① データ通信のサーバー側の IP アドレスをグローバル IP にする
【設定しない場合】 クライアント:「パッシブでお願いします」 サーバ :「10.0.0.4 の 50000 番に繋いでください」 ↑ 自分のプライベート IP を答えてしまう クライアント:(そんな IP には繋がらない)→ 転送が始まらないサーバは自分がグローバル IP を持っていることを知らない
(NAPT の内側にいるため)。
したがって、「応答に載せる IP」を手動で設定する必要がある。
IIS では[FTP ファイアウォールのサポート]の
**[ファイアウォールの外部 IP アドレス]**がこれにあたる。② データ通信のポート番号の範囲を限定する
【設定しない場合】 サーバは 1024〜65535 の任意のポートを使う ↓ NAPT / NSG で【全ポートを開ける】しかなくなる ← 論外 【範囲を限定した場合】 例:50000〜50100 に限定 ↓ その 101 ポートだけを開ければよいつまり、開けるポートを最小限にするための設定である。
同時接続数の見積りに応じて範囲を決める
(1 転送につき 1 ポートを消費する)。Azure であれば、この範囲を
Network Security Group (NSG)で許可し、
ロード バランサを使う場合は
AzureのGW / LB的なモノ。側にも
同じ範囲の規則が要る。
補足(FTPS だとさらに難しくなる): 参考リンクの 1 つ目・2 つ目が
「FTPS でファイル転送する場合の罠」であるとおり、
暗号化すると問題が増える。【FTP】 NAPT 機器が制御接続を覗き、 「50000 番を使う」という応答を読んで、 自動的にポートを開けてくれる(ALG: Application Level Gateway) 【FTPS】 制御接続が暗号化されている → NAPT 機器が中身を読めない → ALG が機能しない → 【手動で全部設定するしかない】つまり、暗号化した途端に「機器が気を利かせてくれる」仕組みが
効かなくなる。これが「罠」の正体である。したがって、FTPS では
必須事項 内容 パッシブ ポート範囲の明示 前述 外部 IP アドレスの明示 前述 その範囲を FW / NSG で開放 ALG に頼れない データ接続の TLS セッション再利用 サーバ設定によっては必須 をすべて手動で行う必要がある。
補足(そもそも FTP を選ぶべきか): 現在の実務では、
FTP / FTPS は積極的に選ぶ理由が乏しい。
手段 評価 FTP(平文) 論外(認証情報が平文で流れる) FTPS 上記の複雑さ。NAT との相性が悪い SFTP(SSH ベース) 22 番 1 本で済む。NAT の問題が無い(OpenSSH) HTTPS(Blob Storage、S3 等) 443 番 1 本。認証・監査・冗長化が容易 Azure Files(SMB) 社内ファイル共有として **「1 本の接続で済む」**という一点だけでも、
SFTP / HTTPS の方が構成が単純になる。Azure では Blob Storage が SFTP に対応しており、
サーバを立てずに SFTP のエンドポイントを提供できる
(Azureのストレージ)。
取引先の都合で FTP プロトコルが必須、といった
外部要因が無い限り、これらを選ぶのが妥当である。
- 【▲→川俣晶の縁側→ソフトウェア→技術雑記】
- IIS サーバに WinSCP と FTPS でファイル転送する場合の罠
http://mag.autumn.org/Content.modf?id=20160130154449 - Azure 上の IIS と FTPS でファイル転送する場合の罠
http://mag.autumn.org/Content.modf?id=20171101143129
- IIS サーバに WinSCP と FTPS でファイル転送する場合の罠
- 【AWS】AWS で FTP サーバー立てる時に気をつけるべき 2 つのこと+α | Developers.IO
https://dev.classmethod.jp/cloud/aws/to-be-aware-of-when-settingup-ftpserver-with-aws/ - Amazon Web Services の EC2 上に FTP サイトを構築する時に注意するポイント IIS の場合: ●○hinata_hisa○●
http://drawing-hisa.seesaa.net/article/405140053.html- How to Configure Windows Firewall for a Passive Mode FTP Server | Microsoft Docs
https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/dd421710
- How to Configure Windows Firewall for a Passive Mode FTP Server | Microsoft Docs
Tags: 移行, インフラストラクチャ, 通信技術, クラウド, IIS