Windows 2019
Sponsored Link

FTPサーバー : SSL/TLS の設定
2019/09/06
 
SSL/TLS を有効にした FTP サイトを追加します。
例として、[FTPGroup] というローカルグループを新規作成し、FTP を許可する任意のローカルユーザーを [FTPGroup] に追加して FTP over SSL/TLS 経由でファイルの読み書きができるように設定します。
[1]
事前に SSL 証明書を 購入 または 取得 または 作成しておきます。
当例では、自己署名の証明書を作成して進めます (作成方法はこちらを参照)
[2] PowerShell を管理者権限で起動して設定します。
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

# FTP用のグループ [FTPGroup] 追加
PS C:\Users\Administrator> New-LocalGroup -Name "FTPGroup" 

Name     Description
----     -----------
FTPGroup

# FTPを許可する任意のローカルユーザーを [FTPGroup] に追加
# 下例は ローカルユーザー [Serverworld] を [FTPGroup] に追加
PS C:\Users\Administrator> Add-LocalGroupMember -Group "FTPGroup" -Member "Serverworld" 

# 確認
PS C:\Users\Administrator> Get-LocalGroupMember -Name "FTPGroup" 

ObjectClass Name             PrincipalSource
----------- ----             ---------------
User        RX-7\Serverworld Local

# FTPサイトを追加
# -Name [管理上の任意の名前]
# -IPAddress [リスンするIPアドレス] (下例は 0.0.0.0)
# -Port [リスンするポート]
PS C:\Users\Administrator> New-WebFtpSite -Name "FTPSite01" -IPAddress "*" -Port 21 

Name             ID   State      Physical Path                  Bindings
----             --   -----      -------------                  --------
FTPSite01        2    Started                                   ftp *:21:

# 追加した FTPサイトで使用する物理フォルダーを設定
# 下例は FTP インストール時に作成されている [C:\inetpub\ftproot] 配下に [FTPSite01] を新規作成して設定
PS C:\Users\Administrator> mkdir 'C:\inetpub\ftproot\FTPSite01' 
PS C:\Users\Administrator> Set-ItemProperty "IIS:\Sites\FTPSite01" -Name physicalPath -Value 'C:\inetpub\ftproot\FTPSite01' 

# SSL/TLS 接続が必須に設定
PS C:\Users\Administrator> Set-ItemProperty "IIS:\Sites\FTPSite01" -Name ftpServer.security.ssl.controlChannelPolicy -Value "SslRequire" 
PS C:\Users\Administrator> Set-ItemProperty "IIS:\Sites\FTPSite01" -Name ftpServer.security.ssl.dataChannelPolicy -Value "SslRequire" 

# 証明書の Thumbprint 確認
PS C:\Users\Administrator> Get-ChildItem Cert:\LocalMachine\My 

   PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\My

Thumbprint                                Subject
----------                                -------
560F4FE5B89D70A8CAC5F65B1869C4F8A9274C15  CN=rx-8.srv.world

# 証明書ストアと Thumbprint を登録
PS C:\Users\Administrator> Set-ItemProperty "IIS:\Sites\FTPSite01" -Name ftpServer.security.ssl.serverCertStoreName -Value "My" 
PS C:\Users\Administrator> Set-ItemProperty "IIS:\Sites\FTPSite01" -Name ftpServer.security.ssl.serverCertHash -Value "560F4FE5B89D70A8CAC5F65B1869C4F8A9274C15" 

# 基本認証を設定
PS C:\Users\Administrator> Set-ItemProperty "IIS:\Sites\FTPSite01" -Name ftpServer.security.authentication.basicAuthentication.enabled -Value $true 

# ローカルグループ [FTPGroup] の読み取り/書き込み許可を設定
PS C:\Users\Administrator> Add-WebConfiguration "/system.ftpServer/security/authorization" -Location FTPSite01 -PSPath IIS:\ -Value @{accessType="Allow";roles="FTPGroup";permissions="Read,Write"} 

# 外部 IPアドレスを設定 (クライアントから接続可能な IPアドレス)
PS C:\Users\Administrator> Set-ItemProperty "IIS:\Sites\FTPSite01" -Name ftpServer.firewallSupport.externalIp4Address -Value "10.0.0.101" 

# FTPサイトの物理パスに設定したフォルダーに、FTPサイトでアクセス許可したグループのアクセス許可を設定
# 下例は フルコントロール + 継承有り
PS C:\Users\Administrator> icacls "C:\inetpub\ftproot\FTPSite01" /grant "FTPGroup:(OI)(CI)(F)" 
processed file: C:\inetpub\ftproot\FTPSite01
Successfully processed 1 files; Failed processing 0 files

# FTPサイトを再起動
PS C:\Users\Administrator> Restart-WebItem -PSPath 'IIS:\Sites\FTPSite01' 
FTPサーバー : SSL/TLS の設定 (GUI)
 
GUI で設定する場合は以下のように実行します。
[3] 事前に FTP アクセスを許可するローカルグループを新規追加して、実際に FTP を許可するローカルユーザーを該当グループに追加しておきます。 当例では [FTPGroup] を追加して、[Serverworld] ユーザーを所属させ、FTP アクセスを許可します。 ローカルユーザーの作成等はこちらを参照ください
[4] 事前に追加する FTP サイトで使用する物理フォルダーを作成し、先に追加した FTP を許可するグループのアクセス権を設定しておきます。 当例では、FTP サーバーインストール時に自動で作成される [C:\inetpub\ftproot] 配下に [FTPSite01] フォルダーを新規作成し、先に追加した FTP 用のグループにフルコントロールの権限を設定して進めます。
[5] 事前に SSL 証明書を 購入 または 取得 または 作成しておきます。
当例では、以下のように自己署名の証明書を作成して進めます (作成方法はこちらを参照)
[6] FTP サイトを追加します。
[スタート] - [サーバーマネージャー] を起動し、[ツール] - [インターネット インフォメーション サービス マネージャー] を開きます。 次に、左ペインで [サイト] を選択し、右クリックのメニューから [FTP サイトの追加] を開きます。
[7] [FTP サイト名] には任意の管理上の名称を入力します。[物理パス] には先に追加した FTP サイト用の物理フォルダーを指定します。
[8] バインドの設定です。IP アドレス/ポート は既定のままで OK です。
以下の設定の場合、FTP サービスは 0.0.0.0:21 でリスンします。
[SSL] は [必要] を選択し、[SSL 証明書] には先に追加した SSL 証明書を選択します。
(当例 [5] のように [証明書 - ローカルコンピューター] - [個人] - [証明書] 配下に登録している場合、自動で選択肢に表示される)
[9] 認証とアクセス権の設定です。
当例では、認証には [基本認証] を設定し、アクセス権は [指定された役割またはユーザー グループ] を選択します。
[10] アクセス権に [指定された役割またはユーザー グループ] を選択した場合、アクセス許可するグループを指定します。 当例では [3] で新規作成したグループを指定し、アクセス許可は [読み取り/書き込み] に設定します。
[11] FTP サイトが追加されました。左ペインで追加された FTP サイトを選択し、中央ペインで [FTP ファイアウォールのサポート] をクリックします。
[12] [ファイアウォールの外部 IP アドレス] に、FTP クライアントから接続可能な IPアドレスを設定します。 以上で FTP over SSL/TLS サイトの設定は完了です。
関連コンテンツ