Windows 10、11、Windows ServerでFTPサーバーを素早くセットアップする方法

Windows に FTP サーバーをインストールして設定する方法(理由とヒント付き)

FTPサーバーを手動でセットアップするのは、特にWindowsやIISの設定に詳しくない場合は、少し大変に感じるかもしれません。しかし、実際に細かく見てみると、見た目ほど複雑ではありません。このガイドでは、ロールのインストール、ユーザー権限の設定、ユーザー分離の設定、そしてスクリプト作成に慣れている方であればPowerShellを使った設定方法まで解説しています。大きなメリットは、セットアップが完了すれば、WindowsエクスプローラーからでもFTPクライアントからでも、ファイルのやり取りが簡単になるということです。さらに、ユーザー分離により、他のユーザーのフォルダに誤ってアクセスしてしまう心配もなく、すべてを整理して安全に保つことができます。どちらの方法を選んでも、最終的には非常に機能的なFTPサーバーが完成し、必要に応じてさらに調整を加えることができます。

WindowsでFTPを修正および設定する方法

WindowsにFTPサーバーをインストールしてFTPサイトを作成する

まず、FTP サーバー コンポーネントをインストールする必要があります。Windows Server では、まずサーバー マネージャーを開き、「役割と機能の追加ウィザード」を実行します。Webサーバー (IIS) の役割が表示されたら展開し、「FTP サービス」「FTP 拡張機能」にチェックを入れます。これは簡単ですが、すべてが正しく読み込まれていることを確認するために、後でサーバーを再起動する必要がある場合があります。Windows 10 または 11 では、もう少し簡単です。「Windows の機能の有効化または無効化」( 「ファイル名を指定してoptionalfeatures実行」ボックスで実行)を開き、「インターネット インフォメーション サービス」を展開して、「FTP サーバー」チェックボックスをオンにするだけです。これを行うだけで、必要なコンポーネントが簡単にインストールされます。

完了したら、IIS 管理コンソール ( inetmgr) から FTP サイトを作成します。コンソールで、[サイト] > [FTP サイトの追加]に移動します。 MyTestSiteなどのサイト名を入力し、ルート ディレクトリを などに設定しますC:\inetpub\ftproot。次の手順では、データを暗号化するための SSL 証明書を選択します。テストの場合は、[SSL なし]を選択します。ただし、実際の運用では、インターネット上で資格情報が公開されるのを防ぐために、FTPS を設定することをお勧めします。今のところは、デフォルトの認証および承認設定のままにしておき、後でアクセス許可を調整します。FTP サーバーをすべての人に公開するとあまり役に立たないことを忘れないでください。

ユーザーアクセス権限の設定(そしてそれが重要な理由)

Windows は、ユーザーログインに主に 2 つの方法、匿名認証基本認証をサポートしています。ほとんどの場合、特に機密データを管理している場合は、基本認証を使用して既知のユーザーのみがログインできるようにすることをお勧めします。これにより、安全性が大幅に向上します。誰が何にアクセスできるかを簡単に管理するには、ftp_usersというローカルグループを作成します。次に、以下のコマンドを使用して、 ftp_user1などのユーザーやドメインユーザーをこのグループに追加します。

net user ftp_user1 /add net localgroup ftp_users ftp_user1 /add net localgroup ftp_users woshub\m.korman /add 

これにより、権限管理がより明確になり、新規ユーザーの追加が容易になります。また、このグループにNTFSの読み取り/書き込み権限が付与されていることを確認してくださいC:\inetpub\ftproot(フォルダを右クリック > プロパティ > セキュリティ)。権限がないと、ユーザーは接続できますが、ファイルのアップロードやダウンロードができなくなり、本来の目的が達成されません。次に、IISコンソールで、FTPサイトの「FTP承認規則」 > 「許可規則の追加」に移動します。ftp_users選択し、読み取り/書き込み権限を付与します。この手順により、実質的にFTPがユーザーグループに開放されます。シークレットハンドシェイクは不要になります。

これで、任意のFTPクライアント、あるいはWindowsエクスプローラー(ftp://192.168.1.100/)で適切なユーザー名とパスワードを入力して接続すれば、ファイルが表示されるはずです。FTPサイトのルートディレクトリが表示されるはずです(後でロックダウンする予定がない限り)。

ユーザー分離の構成(各ユーザーのファイルを分離しておく)

ここからが少しややこしいところです。Windows には、FTP ユーザー ディレクトリを非公開にして、ユーザーが自分のものだけを見ることができるようにするためのモードがいくつか用意されています。IISのFTP ユーザー分離設定では、通常、「ユーザー名ディレクトリ」または「ユーザー名ディレクトリ (グローバル仮想ディレクトリを無効にする)」を選択します。なぜでしょうか。複数のユーザーを管理している場合、全員が互いのフォルダーにアクセスできないようにするためです。「ユーザー名物理ディレクトリ」モードが一般的です。まず、やのように、ユーザーごとに個別のフォルダーを作成する必要がありますC:\inetpub\ftproot\ftp_user1。パス パターンは、ローカル アカウント ( ) を使用しているか、ドメイン アカウント ( )C:\inetpub\ftproot\woshub\m.kormanを使用しているかによって異なります。%UserName%%UserDomain%\%UserName%

ただし、ユーザーは自分のフォルダしか閲覧できないため、こっそりと覗き見ることはできません。これにより、特に管理者が常に監視できない場合など、全体のセキュリティが強化され、管理が容易になります。フォルダには権限を設定し、関連するユーザーのみがアクセスできるようにしてください。そうしないと、誰かが誤って、あるいは意図的にフォルダ外を覗き見してしまう可能性があります。

PowerShell を使ってスピードアップ (自動化がお好きなら)

コマンドラインの方が好みなら、PowerShellを使えばFTPサーバーのインストールと設定をスムーズに行うことができます。まず、以下のコマンドでロールをインストールします。

Install-WindowsFeature Web-FTP-Server -IncludeAllSubFeature -IncludeManagementTools

Windows 10 または 11 では、次のようにします。

Enable-WindowsOptionalFeature -Online -FeatureName IIS-FTPServer Enable-WindowsOptionalFeature -Online -FeatureName IIS-FTPSvc Enable-WindowsOptionalFeature -Online -FeatureName IIS-FTPExtensibility 

次に、ローカル ユーザーとグループを作成します。

$pass = ConvertTo-SecureString "myPassw0rd22!" -AsPlainText -Force New-LocalUser -Name ftp_user1 -Password $pass New-LocalGroup -Name ftp_users Add-LocalGroupMember -Group ftp_users -Member ftp_user1 

次に、FTP ディレクトリ (たとえば、C:\inetpub\ftproot\MyFTP) を設定し、必要に応じて作成して、権限を設定します。

$ftproot='C:\inetpub\ftproot\MyFTP' New-Item -Path $ftproot -ItemType Directory icacls $ftproot /grant "ftp_users:(OI)(CI)(F)" 

次のようなコマンドを使用して、SSL および認証オプションを構成します。

$FtpSite="IIS:\Sites\MyFTP" Set-ItemProperty $FtpSite -Name ftpServer.security.ssl.controlChannelPolicy -Value "SslAllow" Set-ItemProperty $FtpSite -Name ftpServer.security.ssl.dataChannelPolicy -Value "SslAllow" Set-ItemProperty $FtpSite -Name ftpServer.security.authentication.basicAuthentication.enabled -Value $true Add-WebConfiguration "/system.ftpServer/security/authorization" -Location MyFTP -PSPath IIS:\ -Value @{accessType="Allow";roles="ftp_users";permissions="Read, Write"} 

多すぎるように思えるかもしれませんが、一度コツをつかめば、特に複数のFTPサイトを展開したり、複数のサーバー間でセットアップを自動化したりする場合、処理速度が速くなります。外部アクセスが必要な場合は、Windowsファイアウォールまたはハードウェアファイアウォールでポート21を開くことを忘れないでください。また、MicrosoftのIIS PowerShellドキュメントで再度確認してください。

まとめ

  • サーバー マネージャーまたはオプション機能を使用して FTP ロールをインストールします。
  • ユーザー/グループを作成し、権限を慎重に割り当てます。
  • 整理整頓を保つために、必要に応じてユーザーの分離を設定します。
  • スクリプトが優先される場合は、PowerShell を使用して迅速に展開します。
  • セキュリティを最優先することを忘れないでください。SSL、ファイアウォール ルール、安全なアクセス許可が重要です。

まとめ

WindowsでのFTPサーバーの設定は、インストール、権限の設定、ユーザー分離の有効化、そして可能であればSSLによるセキュリティ保護といった手順さえ理解してしまえば、比較的簡単です。設定によっては、権限の問題やファイルが表示されないといった小さな問題が発生することもありますが、一般的にはこれらのガイドラインに従えば、ほとんどの問題は解決します。様々なデバイスやFTPクライアントから接続テストを行い、すべてが意図したとおりに動作することを確認してください。このガイドラインが、誰かの試行錯誤の手間を大幅に省くのに役立つことを願っています。