็†ฑ้–€ๅˆ†้กž
 ่ผ‰ๅ…ฅไธญ…
็›ฎ้Œ„

๐Ÿ”ง Windows FTP Server ๅพž้›ถ้–‹ๅง‹:่™›ๆ“ฌ็›ฎ้Œ„、ๆฌŠ้™、TLS ่จญๅฎš่ˆ‡ PowerShell ๅฟซ้€Ÿๅปบ็ฝฎๆต็จ‹

    ๐Ÿ”ง Windows FTP Server ๅพž้›ถ้–‹ๅง‹:่™›ๆ“ฌ็›ฎ้Œ„、ๆฌŠ้™、TLS ่จญๅฎš่ˆ‡ PowerShell ๅฟซ้€Ÿๅปบ็ฝฎๆต็จ‹

    FTP(File Transfer Protocol)ไปๆ˜ฏ่จฑๅคšไผๆฅญๅ…ง้ƒจไบคๆ›ๆช”ๆกˆ็š„้‡่ฆ็ฎก้“。 Windows Server ๅ…งๅปบ IIS FTP ๆœๅ‹™,ๆญ้… FTPS(SSL/TLS)ๅฏไปฅๅ…ผๅ…ท็›ธๅฎนๆ€ง่ˆ‡ๅฎ‰ๅ…จๆ€ง。 ๆœฌๆ–‡ๆไพ›ๅฎŒๆ•ดๅปบ็ฝฎๆ–นๅผ,ๅŒ…ๅซ GUI、PowerShell、่‡ชๅ‹•ๅŒ–้ƒจ็ฝฒ、่™›ๆ“ฌ็›ฎ้Œ„、TLS ๆ†‘่ญ‰、Firewall ็ญ‰่จญๅฎš。

    ไธ€、ๅฎ‰่ฃ FTP Server(GUI)

    1. ้–‹ๅ•Ÿ Server Manager → Add Roles and Features
    2. ้ธๆ“‡「Web Server (IIS)」
    3. ๅ‹พ้ธ「FTP Server」ๅบ•ไธ‹ๅ…ฉ้ …:
      • FTP Service
      • FTP Extensibility
    4. 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)

    1. ้–‹ๅ•Ÿ IIS Manager
    2. ๅณ้ต Sites → Add FTP Site
    3. ๅกซๅ…ฅ Site Name:ไพ‹ๅฆ‚「FTP-Site」
    4. Physical Path:D:\FTP
    5. Binding:
      • IP:ไผบๆœๅ™จ IP(ๅปบ่ญฐๅ›บๅฎš)
      • Port:21
      • SSL:ๅˆๆœŸๅฏ้ธ「No SSL」→ ๅพŒ็บŒๅ†่จญๅฎš TLS
    6. Authentication:Basic
    7. 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 ๆไพ›ๅฎŒๆ•ด่‡ชๅ‹•ๅŒ–่ƒฝๅŠ›,้žๅธธ้ฉๅˆๅคง้‡ไผบๆœๅ™จ้ƒจ็ฝฒ่ˆ‡่ทจ็’ฐๅขƒๅŒๆญฅ。


    ๐Ÿ”— ๅปถไผธ้–ฑ่ฎ€

    — WWFandy・Windows Server ้ƒจ็ฝฒ็ญ†่จ˜

    ๐Ÿ”— ๅˆ†ไบซ้€™็ฏ‡ LINE Facebook X

    ๆฒ’ๆœ‰็•™่จ€:

    ๅผต่ฒผ็•™่จ€

    ๅญ—็ดš