2017年11月01日
川俣晶の縁側ソフトウェア技術雑記total 944 count

Azure上のIISとFTPSでファイル転送する場合の罠

Written By: 川俣 晶連絡先

問題 §

  1. 「IISのFTPSはImplicitモードをサポートしない」は間違いであった。実際にはサポートする
  2. ftpとftpsにはサーバとクライアント以外に決定的な相違点があった
  3. Azure上でPASVモードを使用するには、追加のノウハウが必要

IISで使用するImplicitモード §

「まず訂正事項だ。以下のようにIISのFTPSはImplicitモードをサポートしないと以前書いたが間違っていた。確かに接続可能だった」

Subject: IISサーバにWinSCPとFTPSでファイル転送する場合の罠

Keyword: 【▲→川俣晶の縁側→ソフトウェア→技術雑記】

URL: IISサーバにWinSCPとFTPSでファイル転送する場合の罠

名前: 佐々木 緒

本文:

お世話になります。サイトを拝見しました。

IISでFTPSの待ち受けポートを設定することは可能です。したがってImplicitモードでの通信も可能です。

方法は単純に、サイトバインドで種類「ftp」、ポート「990」のバインドを追加すれ

ばOKです。ポート「20」との併用も可能です。

ただし、Windowsファイアウォールで受信規則「FTP Server Secure (FTP SSL Tra

ffic-In)」(990ポートの受信)と、パッシブモードであれば受信規則「FTP Server Passive (FTP Passive Traffic-In)」(ハイポートの受信)、アクティブモードであれば送信規則「FTP Server Secure (FTP SSL Traffic-Out)」(989ポートの受信)を許可する必要があります。

全て設定すれば、Explicit/Implicitおよびパッシブ/アクティブの組み合わせを問わず通信可能なFTPSサーバーを構成できます。便利ですね。

「確かに990で通信できた。ありがとう」

「良かったね」

ftpとftpsの相違点 §

「今回調査して分かったことだが、以下の2点の理由により実際に動作しない設定でも動作してしまう」

  • ftpのアクティブモードを特別扱いするファイアウォールやルータは多く、実はNATの内側でもルータの内側でもアクティブモードは動作してしまう
  • 接続に失敗するとモードを切り換えてリトライするクライアントが多い

「つまり、PASVモードで接続成功と思っていても、実はアクティブモードで接続しているケースがあり得るわけだね?」

「そうだ」

「なぜそれが問題の?」

「ftpsのトラフィックは暗号化されているので、同じように特別扱いはされない。つまり、ftpで上手く通信できている環境で、ftpsも通るとは限らない」

「それは問題を切り分ける場合の注意事項だね」

Azure上でPASVモードを使用できない問題 §

「AzureでPASVモードが使用できないので、じっくり調べたところ、思わぬことが分かった。どんなことだい?」

「PASVコマンドの応答して、以下のようなレスポンスが戻り、そこでデータチャンネルのIPアドレスとポート番号が指定される」

227 Entering Passive Mode (104,41,173,83,27,90).

「それで?」

「ところが、このIPアドレスはAzure仮想マシンのInternal IPでも、Public IPでもない。そのため、ftpsクライアントはサーバが存在しないIPアドレスに接続をトライして結果として接続できずにタイムアウトしていた」

「対策はなんだい?」

「IISマネージャの【FTPファイアウォールのサポート】の【ファイアウォールの外部IPアドレス】を、仮想マシンのPublic IPに書き換える。これで動作する」

「ftpsクライアントが正しいIPアドレスにアクセスしに行くからだね」

「そうだ」

「これで円満に解決?」

「いいや。そうじゃない。仮想マシンが持つIPアドレスは変化する可能性がある。だから、IPアドレスが変わってしまうとまた接続不能に戻ってしまう」

「えー」

「というわけで、ここから絶対IPアドレスに依存しないために更に一工夫が必要だ」

「そんなことが可能なのかい?」

「実は可能だ。WinSCPやfilezillaは、間違った設定で運用されているftpsサーバ対策として、PASVコマンドの応答としてローカルIPアドレスが指定されているときは、そのアドレスを使用せずコマンドチャンネルを接続したIPアドレスと同じIPアドレスを使うモードを持っている。デフォルトでオンだ。だから、これを使う」

「どう使うの?」

「IIS側で設定するIPアドレスをわざとプライベートIPアドレスに設定する。たとえば、IIS側のftp設定で【ファイアウォールの外部IPアドレス】を192.168.1.1に書き換える。すると賢いftpsクライアントはそれを検出してそのアドレスを使わないようにして、サーバ本来のPublic IPアドレスを使ってくれる」

「それで繋がるわけだね」

「WinSCPやfilezillaでその設定を切っていなければな」

補足 §

「ネットを検索すると、ftpで上手く転送できないときはアクティブモード固定に設定するというバッドノウハウが見つかるが、その意味は【頭のいいルータやファイアウォールがよろしくやってくれるからそれでオッケー】であって、よろしくやってくれないftpsでは正解から遠ざかるばかりだと分かった」

「ftpsを使うには、正攻法で正しいPASVモードを設定しないとダメだって事だね」

「そう、正しいPASVモードね。初期値がPASVモードというだけで、リトライしたときにアクティブモードで接続するような設定では上手く行かない」

「ftpでは動いてしまうのだね?」

「確実ではないが動いてしまう環境も多いようだ」

「でも、ftpsでは動かないのだね?」

「動かない。何しろトラフィックが暗号化されているからな。途中に入った機器が内容を理解することはできない」

Facebook

キーワード【 川俣晶の縁側ソフトウェア技術雑記
【技術雑記】の次のコンテンツ
(ありません)
【技術雑記】の前のコンテンツ
2017年
10月
23日
LINQに対する.NET FW 4.7.1と.NET Core 2.0の拡張の調査
3days 65 count
total 1080 count

このサイト内の関連コンテンツ リスト

2016年
01月
28日
AzureのVMでftpサーバーを作成する方法
3days 0 count
total 2083 count
2016年
01月
30日
IISサーバにWinSCPとFTPSでファイル転送する場合の罠
3days 0 count
total 5649 count
2017年11月01日
川俣晶の縁側ソフトウェア技術雑記total 944 count

Azure上のIISとFTPSでファイル転送する場合の罠

Written By: 川俣 晶連絡先

問題 §

  1. 「IISのFTPSはImplicitモードをサポートしない」は間違いであった。実際にはサポートする
  2. ftpとftpsにはサーバとクライアント以外に決定的な相違点があった
  3. Azure上でPASVモードを使用するには、追加のノウハウが必要

IISで使用するImplicitモード §

「まず訂正事項だ。以下のようにIISのFTPSはImplicitモードをサポートしないと以前書いたが間違っていた。確かに接続可能だった」

Subject: IISサーバにWinSCPとFTPSでファイル転送する場合の罠

Keyword: 【▲→川俣晶の縁側→ソフトウェア→技術雑記】

URL: IISサーバにWinSCPとFTPSでファイル転送する場合の罠

名前: 佐々木 緒

本文:

お世話になります。サイトを拝見しました。

IISでFTPSの待ち受けポートを設定することは可能です。したがってImplicitモードでの通信も可能です。

方法は単純に、サイトバインドで種類「ftp」、ポート「990」のバインドを追加すれ

ばOKです。ポート「20」との併用も可能です。

ただし、Windowsファイアウォールで受信規則「FTP Server Secure (FTP SSL Tra

ffic-In)」(990ポートの受信)と、パッシブモードであれば受信規則「FTP Server Passive (FTP Passive Traffic-In)」(ハイポートの受信)、アクティブモードであれば送信規則「FTP Server Secure (FTP SSL Traffic-Out)」(989ポートの受信)を許可する必要があります。

全て設定すれば、Explicit/Implicitおよびパッシブ/アクティブの組み合わせを問わず通信可能なFTPSサーバーを構成できます。便利ですね。

「確かに990で通信できた。ありがとう」

「良かったね」

ftpとftpsの相違点 §

「今回調査して分かったことだが、以下の2点の理由により実際に動作しない設定でも動作してしまう」

  • ftpのアクティブモードを特別扱いするファイアウォールやルータは多く、実はNATの内側でもルータの内側でもアクティブモードは動作してしまう
  • 接続に失敗するとモードを切り換えてリトライするクライアントが多い

「つまり、PASVモードで接続成功と思っていても、実はアクティブモードで接続しているケースがあり得るわけだね?」

「そうだ」

「なぜそれが問題の?」

「ftpsのトラフィックは暗号化されているので、同じように特別扱いはされない。つまり、ftpで上手く通信できている環境で、ftpsも通るとは限らない」

「それは問題を切り分ける場合の注意事項だね」

Azure上でPASVモードを使用できない問題 §

「AzureでPASVモードが使用できないので、じっくり調べたところ、思わぬことが分かった。どんなことだい?」

「PASVコマンドの応答して、以下のようなレスポンスが戻り、そこでデータチャンネルのIPアドレスとポート番号が指定される」

227 Entering Passive Mode (104,41,173,83,27,90).

「それで?」

「ところが、このIPアドレスはAzure仮想マシンのInternal IPでも、Public IPでもない。そのため、ftpsクライアントはサーバが存在しないIPアドレスに接続をトライして結果として接続できずにタイムアウトしていた」

「対策はなんだい?」

「IISマネージャの【FTPファイアウォールのサポート】の【ファイアウォールの外部IPアドレス】を、仮想マシンのPublic IPに書き換える。これで動作する」

「ftpsクライアントが正しいIPアドレスにアクセスしに行くからだね」

「そうだ」

「これで円満に解決?」

「いいや。そうじゃない。仮想マシンが持つIPアドレスは変化する可能性がある。だから、IPアドレスが変わってしまうとまた接続不能に戻ってしまう」

「えー」

「というわけで、ここから絶対IPアドレスに依存しないために更に一工夫が必要だ」

「そんなことが可能なのかい?」

「実は可能だ。WinSCPやfilezillaは、間違った設定で運用されているftpsサーバ対策として、PASVコマンドの応答としてローカルIPアドレスが指定されているときは、そのアドレスを使用せずコマンドチャンネルを接続したIPアドレスと同じIPアドレスを使うモードを持っている。デフォルトでオンだ。だから、これを使う」

「どう使うの?」

「IIS側で設定するIPアドレスをわざとプライベートIPアドレスに設定する。たとえば、IIS側のftp設定で【ファイアウォールの外部IPアドレス】を192.168.1.1に書き換える。すると賢いftpsクライアントはそれを検出してそのアドレスを使わないようにして、サーバ本来のPublic IPアドレスを使ってくれる」

「それで繋がるわけだね」

「WinSCPやfilezillaでその設定を切っていなければな」

補足 §

「ネットを検索すると、ftpで上手く転送できないときはアクティブモード固定に設定するというバッドノウハウが見つかるが、その意味は【頭のいいルータやファイアウォールがよろしくやってくれるからそれでオッケー】であって、よろしくやってくれないftpsでは正解から遠ざかるばかりだと分かった」

「ftpsを使うには、正攻法で正しいPASVモードを設定しないとダメだって事だね」

「そう、正しいPASVモードね。初期値がPASVモードというだけで、リトライしたときにアクティブモードで接続するような設定では上手く行かない」

「ftpでは動いてしまうのだね?」

「確実ではないが動いてしまう環境も多いようだ」

「でも、ftpsでは動かないのだね?」

「動かない。何しろトラフィックが暗号化されているからな。途中に入った機器が内容を理解することはできない」

Facebook

キーワード【 川俣晶の縁側ソフトウェア技術雑記
【技術雑記】の次のコンテンツ
(ありません)
【技術雑記】の前のコンテンツ
2017年
10月
23日
LINQに対する.NET FW 4.7.1と.NET Core 2.0の拡張の調査
3days 65 count
total 1080 count
【技術雑記】のコンテンツ全リスト【技術雑記】の表紙

このサイト内の関連コンテンツ リスト

2016年
01月
28日
AzureのVMでftpサーバーを作成する方法
3days 0 count
total 2083 count
2016年
01月
30日
IISサーバにWinSCPとFTPSでファイル転送する場合の罠
3days 0 count
total 5649 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

http://mag.autumn.org/tb.aspx/20171101143129
サイトの表紙【技術雑記】の表紙【技術雑記】のコンテンツ全リスト 【技術雑記】の入手全リスト 【技術雑記】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.25 (Alpha-Test) Copyright (c) 2004-2017 Pie Dey.Co.,Ltd.