Azure仮想マシン上にFTPサーバを構築する

Azureにwindows10の仮想マシンを作成して、FTPサーバを立てるための備忘録です。業務でFTP送信機能を実装することになり、検証用にFTPサーバ構築が必要になりました。私自身あまりAzureを触ったことがなく、FTPもはじめて使ったので同じような方がいれば参考にしてください。
・[1. 仮想マシン作成](#11-仮想マシン作成)
・[2. IISのインストール](#2-iisのインストール)
・[3. FTPサーバを有効にする](#3-ftpサーバを有効にする)
・[4. FTPユーザを作成する](#4-ftpユーザを作成する)
・[5. FTPサイトの作成](#5-ftpサイトの作成)
・[6. コマンドで動作確認](#6-コマンドで動作確認)
・[7. FTPサイトのパッシブモードの作成](#7-ftpサイトのパッシブモードの設定)
・[8. FTPサイトのファイアウォールの設定](#8-ftpサイトのファイアウォールの設定)
・[9. Windowsファイアウォールの設定](#9-windowsファイアウォールの設定)
・[10. Azure側の設定](#10-azure側の設定)


## 1. 仮想マシン作成
https://learn.microsoft.com/ja-jp/azure/virtual-machines/windows/quick-create-portal
こちらの公式記事を参考にしてまずは仮想マシンを作成します。

## 2. IISのインストール
IISとは、Windows用のWebサーバーソフトのことです。IISには多くの機能が統合されており、Linux用のWebサーバーソフトと比較して対応範囲が広いのが特徴です。IISの中にFTPサーバーの機能が含まれているので今回はこちらを利用します。

1.1で作成したVMにリモートデスクトップで接続します。PowerShell プロンプトを開き、次のコマンドを実行します。
``
Install-WindowsFeature -name Web-Server -IncludeManagementTools
``

## 3. FTPサーバを有効にする
IISのインストールが完了したらFTPサーバを有効化していきます。
(1)Windowsキーを押して「コントロールパネル」と入力し、Control Panelをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630415/bd1ba6f7-b6e4-4195-b559-d3e99707572c.png)

(2)プログラムをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630415/f2fd2305-cee1-4669-810f-083a7b4f4db7.png)

（3）「Windowsの機能の有効化または無効化」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630415/4b0a4eab-94c6-4f22-85e0-6c927c67739a.png)

（4）「FTP Service」と「IIS管理コンソール」を選択してOKボタンをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630415/44260961-d63a-4e8d-b182-325072fd31c6.png)

設定が上手くいったか確認したい方は、Windowsキーを押してから「IIS」と入力してみてください。以下のように表示されていれば、問題ありません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630415/28f5ed7b-a70a-411e-b527-499a12b2c3ac.png)

## 4. FTPユーザを作成する
次に、FTPユーザを作ります。
（1）Windowsキーを押して「ユーザー」を入力し、「他のユーザーの追加、編集、削除」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630415/2bee5bf4-8b86-4c4a-bcbb-c89083d849af.png)

（2）「その他のユーザーをこのPCに追加」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630415/303695e5-ac75-4d6c-98d8-d1ad6f77dc85.png)

（3）ユーザー名やパスワードなどを入力し、「次へ」ボタンをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630415/485ae954-a800-47fa-9186-55a613dfdf6c.png)

登録が完了すると、以下のようにユーザーが登録されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630415/0bdfdcff-7228-4d32-b2f5-8bdd768d881d.png)

## 5. FTPサイトの作成
次に、作成したユーザーを使ってFTPサイトを作成・設定します。
（1）Windowsキーを押してIISを入力し、インターネット インフォメーションサービス（IIS）マネージャーをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630415/f29b0d55-89a0-4262-9816-ab9059d8c41e.png)

（2）左側のメニューから「サイト」を選び、画面右端にある「FTPサイトの追加」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630415/efef383c-0cde-4b0b-a780-a23bba68b473.png)

（3）FTPサイト名、物理パスを入力・選択し、次へボタンをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630415/b1efa7d3-b8b6-4e4d-8818-1325251a6545.png)

（4）IPアドレスを「すべて未割り当て」にし、SSLを「無し」にして次へボタンをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630415/5aa7937c-bf5b-420a-a90f-2d4fab20161c.png)

（5） 匿名、匿名ユーザーを選択し、アクセス許可を2つともチェックして終了ボタンをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630415/c4b989a3-b007-4a02-9e4f-be9a20dec3c5.png)

上手くいくと、以下のように1行追加されるはずです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630415/cb4e8fae-abe3-4876-81d3-ee751b2efe4a.png)

## 6. コマンドで動作確認
FTPサーバーが正しく構築できたか、確認します。
（1）Windowsキーを押して「cmd」と入力し、コマンドプロンプトをクリック
（2）「ftp」と入力し、Enterキーを押す
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630415/9aabf844-283b-407b-8078-f021b2b3c067.png)

（3）「open localhost」を入力し、サイトに接続する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630415/1b7d6ec3-547f-4162-b935-949862d7f362.png)

（4）ローカルアカウントのユーザー名・パスワードを入力し、Enterキーを押してログイン
実際に実行し、以下のように「230 User logged in.」が出れば成功です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630415/4beeba68-9cdd-45a5-8aac-769fa0f8d85a.png)

## 7. FTPサイトのパッシブモードの設定
FTPにはアクティブモードとパッシブモードの２種類があります。簡単に言うと、アクティブモードはサーバ側からデータ転送用の線をクライアントに繋いで接続する方式です。対してパッシブモードはクライアントからサーバにデータコネクションを繋げます。今回はクライアントからサーバにファイルを送信するのでパッシブモードを使用します。

(1)IISマネージャーを起動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630415/4741f9a9-1b95-4b75-b8b1-542c1a7b1df2.png)

(2)起動したら【FTPファイアウォールのサポート】を選択して開きます。
【データチャネルポート範囲】にパッシブモードで使用する【ポート範囲】を設定します。
デフォルトは【0-0】です。
今回は【60000-60005】に設定してみました。
設定が完了したらしっかり【適用】をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630415/65f60fc4-da9e-4af9-8543-216360f0e8c1.png)

## 8. FTPサイトのファイアウォールの設定
次にFTPサイトのファイアウォール設定をします。
(1)IISでFTPサーバの作成したサイトを選択し、ファイアウォールの外部IPアドレス(仮想マシンのグローバルIP(パブリックIPアドレス))を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630415/317af77f-43d7-469a-84ac-9d5666e4b572.png)

## 9. Windowsファイアウォールの設定

(1)【コントロールパネル】→【システムとセキュリティ】→【 Windows Defenderファイアウォール】
【詳細設定】を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630415/c5ee3a62-eeba-46dd-be93-65620d13f2f9.png)

(2)セキュリティが強化された【Windows Defenderファイアウォール】ウィンドウが開くので
【受信の規則】を選択し、【新しい規則】をクリックします。

【新規の受信の規則ウィザード】が開くので、【ポート】を選択して【次へ】をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630415/62a81c5f-e61f-43c2-b165-e4a8d24b8b85.png)

(3)【特定のローカルポート】にパッシブモードで使用する【ポート範囲】を設定します。
今回は【60000-60005】になります。
【次へ】をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630415/f9987183-2618-41fa-8066-0b2eeba81873.png)

(4)【接続を許可する】を選択して【次へ】をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630415/403a19be-15a2-4ff4-be5e-21d4ffe5b2c6.png)

(5)ネットワークの要件によって適用するプロファイルを選択し【次へ】をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630415/e57fca1f-0643-47ed-affe-1365456505f1.png)

(6)適当な名前を付けて【完了】をクリックします。

(7)以下の受信規則をOKにしておきます。
FTPサーバー，FTPサーバーセキュリティ，FTPサーバーパッシブ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630415/4f6404bd-e001-40e6-a32f-2a8571e4f5fc.png)


諸々の設定が完了したら、FTPのサービスを再起動します。これで【パッシブモード】への変更は完了になります。

## 10. Azure側の設定
(1)受信ポート規則の追加をします。
作成した仮想マシンの「ネットワーク」の項目から「受信ポートの規則を追加する」で以下の2つを追加する。

サービス:FTPを許可(パッシブコネクション確立用:ポート21)
サービス:Custom、ポート:60000-60005を許可

これで設定は以上です。