๐ง Windows FTP Server ๅพ้ถ้ๅง:่ๆฌ็ฎ้、ๆฌ้、TLS ่จญๅฎ่ PowerShell ๅฟซ้ๅปบ็ฝฎๆต็จ
FTP(File Transfer Protocol)ไปๆฏ่จฑๅคไผๆฅญๅ ง้จไบคๆๆชๆก็้่ฆ็ฎก้。 Windows Server ๅ งๅปบ IIS FTP ๆๅ,ๆญ้ FTPS(SSL/TLS)ๅฏไปฅๅ ผๅ ท็ธๅฎนๆง่ๅฎๅ จๆง。 ๆฌๆๆไพๅฎๆดๅปบ็ฝฎๆนๅผ,ๅ ๅซ GUI、PowerShell、่ชๅๅ้จ็ฝฒ、่ๆฌ็ฎ้、TLS ๆ่ญ、Firewall ็ญ่จญๅฎ。
ไธ、ๅฎ่ฃ FTP Server(GUI)
- ้ๅ Server Manager → Add Roles and Features
- ้ธๆ「Web Server (IIS)」
- ๅพ้ธ「FTP Server」ๅบไธๅ
ฉ้
:
- FTP Service
- FTP Extensibility
- Install ๅฎๆ
ไบ、ไฝฟ็จ PowerShell ๅฎ่ฃ FTP(ๅปบ่ญฐ)
# ๅฎ่ฃ IIS + FTP ๆๅ
Install-WindowsFeature Web-Server, Web-Ftp-Server, Web-Mgmt-Tools
# ็ขบ่ชๅ่ฝ
Get-WindowsFeature Web-Ftp-Server
ไธ、ๅปบ็ซ FTP ๆ น็ฎ้่ๆฌๆฉๅธณ่
ๆญคๅธณ่ๅฏ็จๆผ FTP ่ช่ญ,ๅคงๅคไผๆฅญๆๅปบ็ซ「ๅฐ็จ FTP ๅธณๆถ」。
# ๅปบ็ซ่ณๆๅคพ
New-Item -Path "D:\FTP\" -ItemType Directory
# ๅปบ็ซ FTP ๅฐ็จๅธณ่
New-LocalUser -Name "ftpuser" -Password (Read-Host -AsSecureString) -Description "FTP Account"
# ่ณฆไบ NTFS ๆฌ้
icacls "D:\FTP" /grant "ftpuser:(OI)(CI)(M)"
ๅ、ๅปบ็ซ FTP Site(GUI)
- ้ๅ IIS Manager
- ๅณ้ต Sites → Add FTP Site
- ๅกซๅ ฅ Site Name:ไพๅฆ「FTP-Site」
- Physical Path:D:\FTP
- Binding:
- IP:ไผบๆๅจ IP(ๅปบ่ญฐๅบๅฎ)
- Port:21
- SSL:ๅๆๅฏ้ธ「No SSL」→ ๅพ็บๅ่จญๅฎ TLS
- Authentication:Basic
- Authorization:ๆๅฎไฝฟ็จ่ ftpuser
ไบ、ไฝฟ็จ PowerShell ๅปบ็ซ FTP Site(่ชๅๅ)
Import-Module WebAdministration
# ๅปบ็ซ IIS FTP Site
New-WebFtpSite -Name "FTP-Site" `
-Port 21 `
-PhysicalPath "D:\FTP" `
-Force
# ๅ็จ Basic ่ช่ญ
Set-WebConfigurationProperty `
-Filter /system.ftpServer/security/authentication/basicAuthentication `
-Name enabled -Value true `
-PSPath 'IIS:\Sites\FTP-Site'
# ๆๅฎๅ
่จฑไฝฟ็จ่
Add-WebConfiguration `
-Filter /system.ftpServer/security/authorization `
-Value @{accessType="Allow";users="ftpuser";permissions="Read,Write"} `
-PSPath 'IIS:\Sites\FTP-Site'
ๅ ญ、่จญๅฎ่ๆฌ็ฎ้(ไผๆฅญไบคๆ่ณๆๅธธ็จ)
ๅฏๅฐไธๅ้จ้็ฎ้ๆ ๅฐๅฐ FTP Site ๅบไธ,ไปฅ「้่ผฏๅ็จฑ」ๅ็พ。
# ๅปบ็ซ่ๆฌ็ฎ้
New-WebVirtualDirectory `
-Site "FTP-Site" `
-Name "public" `
-PhysicalPath "D:\FTP\Public"
ไธ、ๅ็จ FTPS(SSL/TLS ๅ ๅฏ)
1. ๆ่ญ่ฆๆฑๆนๆณ
- ไฝฟ็จไผๆฅญ CA(AD CS)
- ไฝฟ็จ Let's Encrypt(ๅฏๆญ้ win-acme ่ชๅๆดๆฐ)
- ไฝฟ็จ่ช็ฐฝๆ่ญ(ๆธฌ่ฉฆ็ฐๅข)
2. ๅปบ็ซ่ช็ฐฝๆ่ญ็คบ็ฏ(PowerShell)
$cert = New-SelfSignedCertificate `
-DnsName "ftp.domain.local" `
-CertStoreLocation Cert:\LocalMachine\My
3. ๅฐๆ่ญๅฅ็จ่ณ FTP Site
Set-WebConfigurationProperty `
-Filter /system.ftpServer/security/ssl `
-PSPath "IIS:\Sites\FTP-Site" `
-Name serverCertHash `
-Value $cert.Thumbprint
Set-WebConfigurationProperty `
-Filter /system.ftpServer/security/ssl `
-PSPath "IIS:\Sites\FTP-Site" `
-Name controlChannelPolicy -Value "SslAllow"
Set-WebConfigurationProperty `
-Filter /system.ftpServer/security/ssl `
-PSPath "IIS:\Sites\FTP-Site" `
-Name dataChannelPolicy -Value "SslAllow"
ๅ ซ、้ฒ็ซ็่จญๅฎ(่ขซๅๆจกๅผ)
1. ๅ็จ้ฒ็ซ็่ฆๅ(GUI)
IIS FTP ้้ๅ:
- TCP 21
- ่ขซๅๆจกๅผ:ไพๅฆ 50000–51000
2. PowerShell ่จญๅฎ้ฒ็ซ็็ฏไพ
# FTP ๆงๅถ้้
New-NetFirewallRule -DisplayName "FTP 21" -Direction Inbound -Protocol TCP -LocalPort 21 -Action Allow
# FTP ่ขซๅ้้
New-NetFirewallRule -DisplayName "FTP Passive" -Direction Inbound -Protocol TCP -LocalPort 50000-51000 -Action Allow
ไน、FTP ่ขซๅๆจกๅผ่จญๅฎ(IIS)
ๅจ IIS → FTP Firewall Support ่จญๅฎ:
- Data Channel Port Range:50000-51000
- External IP Address:ๅกซๅ ฅไผบๆๅจๅฐๅค IP(่ฅ NAT)
ๅ、FTP Log、็ฃๆง่ๆ ้ๆๆฅ
ๆฅ็ FTP Log
C:\inetpub\logs\LogFiles\FTPSVC2\
ๆชขๆฅ IIS FTP ็ๆ
Get-WebSiteState -Name "FTP-Site"
้ๆฐๅๅ FTP Site
Restart-WebItem "IIS:\Sites\FTP-Site"
๐ ็ต่ช
Windows FTP ๆญ้ IIS ๆฏไผๆฅญไธญๆๅธธ่ฆไธ็ธๅฎนๆงๆไฝณ็ๆชๆกไบคๆๅนณๅฐ。 ้้ๅบๆฌๅฎ่ฃ、่ๆฌ็ฎ้、ๅธณ่้้ข、FTPS ่้ฒ็ซ็่จญๅฎ,ไพฟ่ฝๅฟซ้ๅปบ็ฝฎๅฎๅ จๅฏ้ ็ FTP ๆๅ。 PowerShell ๆไพๅฎๆด่ชๅๅ่ฝๅ,้ๅธธ้ฉๅๅคง้ไผบๆๅจ้จ็ฝฒ่่ทจ็ฐๅขๅๆญฅ。
๐ ๅปถไผธ้ฑ่ฎ
- Windows Update ๆทฑๅบฆ่งฃๆ:USOClient、WaaS、WSUS ่ก็บๅทฎ็ฐ
- WSUS Client ๅผทๅถๅๅ ฑ(SYSTEM + COM + PsExec)
- Windows PE ๅฎๆดๆๅ(ๆถๆง็ฏ)
— WWFandy・Windows Server ้จ็ฝฒ็ญ่จ
ๆฒๆ็่จ:
ๅผต่ฒผ็่จ