こんにちは
株式会社クラスアクト インフラストラクチャ事業部の大塚です。
今回はWindowsサーバでFTPSサーバを構築していきたいと思います。
(Windows Server使いこなせると強いですよね。。。苦手意識払拭していきたいところではある。。。)
今回はExplicit FTPSでDataChannelはエファメラルポートを使用します。
環境構築
FTPS用のユーザを用意する
Windowsサーバにログインした後、ServerManagerを起動して、Computer Managementを押下します。
Local Users and GroupsからUsersを選択。一覧が表示されますので適当なところを右クリックしてNew Userを選択します。
今回はftp_adminというユーザを作成しました。
パスワード変更できない設定と、パスワード期限切れ無しはなんとなく入れてます。
作成したユーザを右クリックして、プロパティを表示。
Member ofで所属しているGroupを確認するとUsersグループのみ参加していることがわかります。
Addボタンを押下して、追加処理をしていきます。
Remote Desktop Usersと、Administratorsグループを追加します。
Applyして、OKします。
FTPSで使用するフォルダを用意する
今回はCドライブ直下にftp_folderを作成しました。これを使っていきたいと思います。
作成したフォルダのプロパティを開き、SecurityでAdministratorsがあることを確認します。
※ftp_adminユーザが所属するグループがあり、そのグループの権限にReadやWrite権限があればOKです。
※個別でグループを作成して、そのグループを明示的に指定してあげたほうが良いっぽくはあります。
FTPSサーバインストール
構築していきます。とはいいつつ、最初はFTPで構築して、あとからFTPS化していこうと思います。
まずServer Managerを開き、ManageタブからAdd Roles and Featuresを選択します。
Role-based or feature-based installationを選択している状態でNextを押下します。
Server Rolesの部分で、Web Server(IIS)を選択します。
こんな感じのポップアップが表示されるので、Add Featuresを押して次に進みます。
Web Server Role(IIS)というタブが追加されているので、これを押下します。
今回はFTPSサーバを作るだけでWebサーバは不要なのでチェックを外して、FTP ServiceとIIS Management Consoleだけチェックを入れて次に進みます。
確認画面が出てきますので内容を確認してInstallを押下します。
Installation succceededとなることを確認します。
Closeを押下します。
Server ManagerのROLES AND SERVER GROUPSにFile and Storage ServicesとIISが表示されるようになっていることとを確認します。
FTPSサーバ構築
検索的でIISと検索すると、Internet Information Services(IIS) Managerが表示されるのでこれを押下します。
自分のコンピュータ名のSitesを右クリックするとAdd FTP Siteという項目があるのでこれを押下します。
サイト名とPhysical pathを求められます。以下のように入力して次に進みます。
サイト名:FTPS
Physical path:上記で作成したCドライブ配下のフォルダ
BindingはAll Unassaingnedで21ポート、SSLは後から設定を入れるのでここではNo SSLで次に進みます。
AuthenticationはBasic、AuthorizationはSpecific usersでftp_admin、PermissionはRead,Write双方にチェックを入れました。
ここでこの設定を入れることで、例えばWinSCPでアクセスする時に指定のユーザでしかFTPサーバを使えなくなります。
Windows Defender Firewallは無効化しておきます。
AWSのSGでコントロールしているので、ここでは不要としています。これが有効化されていると、FTP接続できません。
アクセスできました。フォルダ、ファイルも作成出来ていそうです。
FTPS化をするための自己証明書を作成する
IIS Managerを開き、自分のサーバ名をクリック。
IISのところにServer Certificatesがあるのでこれをクリックします。
証明書が一覧で表示されます。画面右にあるCreate Self-Signed Certificateをクリックします。
フレンドリ名を任意のものとして、Personalを設定しOKをクリックします。
作成出来ました。これだと1年間の有効期限がついてしまい、変更できないようです。
これを使うでも良いのですが、有効期限が邪魔なのでPowerShellを使って作り直します。
※PowerShellを使わない場合はこれをFTPに噛ませればOKです。
以下のコマンドを実行します。
-DnsNameのところはホスト名かIPアドレスだけでもいいのですが、一応どっちも付けておきます。
有効期限は100年としてます。
New-SelfSignedCertificate -DnsName "ftps-server", "57.181.41.99" -FriendlyName "ftps-server" -CertStoreLocation "cert:\LocalMachine\My" -NotAfter (Get-Date).AddYears(100)
実行結果は以下となりました。
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
Install the latest PowerShell for new features and improvements! https://aka.ms/PSWindows
PS C:\Users\Administrator> New-SelfSignedCertificate -DnsName "ftps-server", "57.181.41.99" -FriendlyName "ftps-server" -CertStoreLocation "cert:\LocalMachine\My" -NotAfter (Get-Date).AddYears(100)
PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\My
Thumbprint Subject
---------- -------
39D973BBC86E6497B72C6D83BBD42AACAC92F987 CN=ftps-server
certlm.mscを実行します。
PersonalからCertificatesを押下すると、2つ表示されています。1つはIIS Managerで作成したもの、もう一つはPowerShellで作成したものです。
FTPサーバに自己証明書を紐づける
IIS ManagerからFTPSのサイトを選択します。
FTP SSL Settingsを選択します。
自己証明書は100年指定したほうを、SSL PolicyはRequire SSL connectionsとします。
設定を反映するために画面右にあるApplyを押下します。
FTPサービスを再起動しておきます。
右クリックして、refreshを実行します。
接続テストをします。
その前に、名前解決をさせるためにWinSCPを起動しているPCの以下ファイルに追記をしていきます。
C:\Windows\System32\drivers\etc\hosts
以下を追記しました
# 20250920 FTPS検証用
57.181.41.99 ftps-server
cmdでping疎通を確認します。
Microsoft Windows [Version 10.0.26100.6584]
(c) Microsoft Corporation. All rights reserved.
C:\Users\ohtsu>ping ftps-server
ftps-server [57.181.41.99]に ping を送信しています 32 バイトのデータ:
57.181.41.99 からの応答: バイト数 =32 時間 =16ms TTL=117
57.181.41.99 からの応答: バイト数 =32 時間 =17ms TTL=117
57.181.41.99 からの応答: バイト数 =32 時間 =15ms TTL=117
57.181.41.99 からの応答: バイト数 =32 時間 =14ms TTL=117
57.181.41.99 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 14ms、最大 = 17ms、平均 = 15ms