【Windows】Windows Server 2019にIISのFTPSを構築する

どうも、Tです。

仕事でFTPサーバーが必要になったのでWindowsで立ててみることにしました。

せっかくなのでセキュアなFTPSを設定してみます。

Windows Firewallは事前に無効化しているのでFirewallの設定は記載していません。

環境

  • Windows Server 2019
  • Firewallは事前に無効化

事前準備

FTPユーザーの作成

FTP接続用のローカルユーザーを作成します。

ここは任意ですが、パスワードの変更禁止と無期限を設定しておきます。

ここも無期限ですが、FTP用のユーザーでOSログインはさせたくないため、Usersグループを削除しておきます。

FTP用フォルダの作成

FTP接続時のルートフォルダを作成します。「ftphome」という名前にしました。

ftpuserのアクセス権を付与します。

書込みをさせたいので、「変更」を「許可」にしておきます。

インストール・設定

FTPインストール

サーバーマネージャーからFTPのインストールを行います。

FTPはIISの機能なので、「Webサーバー(IIS)」をチェックします。

「FTPサーバー」をチェックします。

サーバーマネージャーのIISから「Microsoft FTP Service」が「実行中」であることを確認します。

FTP設定

FTPの設定を行います。「IISマネージャー」を起動します。

FTPサイトを追加します。

「FTPサイト名」に任意の名前を設定します。

「物理パス」は接続時のルートフォルダになるため、事前に準備したフォルダを指定します。

一旦SSLなしで接続確認を行うため、「SSL」は「無し」を設定しています。

認証を行いたいので、「基本」をチェックします。

FTPサーバーの接続元を制限したいので「FTP IPアドレスとドメインの制限」を設定します。

操作欄の「許可エントリの追加」をクリックします。

接続元のIPアドレスを指定します。

FTP接続時のユーザー認証を行うため、「FTPの承認規則」を設定します。

「許可規則の追加」をクリックします。

「指定されたユーザー」に事前に追加した「ftpuser」を設定します。

アクセス許可は、「読み取り」「書き込み」の両方を設定します。

確認

コマンドラインからFTPサーバーへの接続を確認します。

ここまででFTPサーバーに正常にアクセスできることを確認できました。

FTPS設定

サーバー証明書の発行

FTPを暗号化するため、SSL証明書(オレオレ証明書)を作成します。

サーバー証明書からも作成できますが、証明書の有効期限が1年間しか作成できません。

有効期限10年の証明書を発行したいので、コマンドラインから作成します。

PowerShellから実行してください。コマンドは下記の通り。

有効期限は最後の「AddYears(10)」で指定しています。

New-SelfSignedCertificate -DnsName <発行先とか発行元の名前> -CertStoreLocation "cert:\LocalMachine\My" -NotAfter (Get-Date).AddYears(10)

サーバー証明書を開きます。

先ほど作成した証明書が登録されていることを確認します。

有効期限が10年後になっています。

FTPのSSL設定

FTPに証明書を設定します。

「FTPのSSL設定」をクリックします。

「SSL証明書」に先ほど作成した証明書を指定します。

「SSLポリシー」は「SSL接続が必要」を選択し「適用」をクリックします。

※暗号化をより高くしたい場合は、「SSL接続に128ビット暗号化を使用する」をチェックしてください。

確認

ftpコマンドで接続をすると「コマンドが無効です。」になります。

WindowsのFTPコマンドは、FTPSに対応していないため正常な動作です。

FTPSに対応したクライアントソフトで接続確認を行います。

今回は、FileZillaを利用しました。「暗号化」に「明示的なFTPover TLSが必要」を指定します。これでかならずFTPSで接続します。

オレオレ証明書のため、下記の警告がでてきます。「OK」をクリックします。

※次から表示しない場合は、「今後は常にこの証明書を信用する」にチェックを入れます。

正常に接続できました。

試しに、ファイルを転送して書込みも行えるか確認します。

以上で、WindowsでFTPSサーバーを構築することができました。

参考

Windows Server 2012 での FTPサイトの作成 (IIS - Internet Information Service Tips)
FTP サービスで FTPS を使う - クリエイティブWeb
Windowsで自己署名証明書(オレオレ証明書)を作成方法。 | puti se blog
Windowsで5年や10年の長期有効期限の自己署名証明書(通称オレオレ証明書)を使用したくなることがります。LinuxではOpenSSLがあったりしますが、Windowsでは自己署名証明書を作成する方法はないのでしょうか?
https://support.jetglobal.com/hc/en-us/articles/235636308-How-To-Create-a-SHA-256-Self-Signed-Certificate
PowerShell で自己証明書を生成 - Qiita
# 個人用証明書ストアに生成$cert = New-SelfSignedCertificate ` -DnsName "server01", ` "server01.honsya.local",…
自己署名証明書の作り方がいつの間にか変わっていました - Qiita
PowershellDSCでAzureManagementAPIを証明書認証で利用していて、今回新たに環境構築していました。その際に、windowsのPCで自己署名証明書を作成したかったのですが、…

まとめ

IISはあまり好きではないですが、仕事で必要になったので検証でした。

今後もそんなに触る気はありません・・・。