在 Windows Server 2008 上面架設 FTP Server

原本不想架的,但總不能每次都用 Dropbox。之前因為是架在 Windows XP 上,相對不太穩定,現在已經換 Windows Server 2008,所以決定再給它一次機會了!


Server 2008 的 IIS 為 7.0,但其內建的 FTP Server 是舊的,使用 IIS 6.0  的管理主控台,故需要另外下載 FTP 7.5 來安裝,安裝完畢後,從 系統管理工具 開啟 IIS 管理員,即可看到 FTP 的選項



建立 SSL 憑證

為了保護資料在網路上不被竊取,我們採用 SSL 的方式加密,但是我們沒有 $$ 申請憑證,所以採用測試用的 自我簽署憑證,首先點選 IIS 的 伺服器憑證


點選 建立自我簽署憑證


輸入名字


這樣就 OK 了



建立 FTP 網站

IIS 管理員 的 站台 按滑鼠右鍵,選擇 Add FTP Site


輸入網站的名稱 (不能與現有的名稱重覆),以及對應的實體檔案位置


SSL 認證 的下拉式選單,選擇先前建立的 SSL 憑證


先建立一個基本認證的使用者就好


完成後就多一個 FTP 網站了



設定防火牆

我們的 FTP採用 被動模式 (參考:網路相關資訊整理),所以得開啟被動模式要使用的 Ports

由於個別 FTP 網站的防火牆設定是繼承來的,所以我們得先修改最上層的 FTP 防火牆設定


因為我們的 FTP 只是要臨時上傳資料用的,使用量不大,所以只要開啟 41000 - 41009 等 10 個 Ports 就好了,而外部防火牆則是 Server 本身的 IP,設定完畢後套用即可


接下來是 Server 本身防火牆的設定,先以系統管理員的身份執行 DOS Box


分別輸入下列兩行指令

netsh advfirewall firewall add rule name="FTP Service" action=allow service=ftpsvc protocol=TCP dir=in

netsh advfirewall set global StatefulFTP disable


從 系統管理工具 | 具有進階安全性的 Windows 防火牆 看看改了那些設定


在 輸入規則 多了我們剛剛設定的 FTP Service


打開 程式和服務 的標籤,點選 服務 的 設定 按鈕


原來它是綁定 FTP Service (ftpsvc) 的,若不用此方式的話,就要用手動的方式把先前在 FTP 防火牆設定的被動模式的 Ports 一個一個加進來 (開 100 個就加 100 次喔!)


參考:如何設定被動模式 FTP 伺服器的 Windows 防火牆


設定使用者

我們使用 Windows 基本驗證的方式,所以要到 電腦管理 的 使用者 去建立 FTP 的使用者


輸入使用者名稱 FtpGuest 與密碼,以及把密碼 不能變更永久有效 兩個選項打勾。另外密碼需符合 本機安全性原則 中,帳戶原則 的 密碼原則,先前沒注意到,一直沒辦法建立使用者,還以為電腦又有問題了


FileZilla 試試看吧,先到 站台管理員 新增站台



先用內部的 IP,加密選擇 需要透過外顯示 TLS 的 FTP,然後輸入使用者帳號與密碼


由於 SSL 憑證不是第三方公證單位簽發的,所以會有以下的警告視窗


連線成功後,可以試試上傳與下載 (測試 OK)



已用 WireShark 確認過內容有加密



最後試試看從外面連進來,所以 NAT 要針對 Server 開啟 TCP Port 21, 41000 - 41009,至於 TCP Port 80 則是原本的 WWW Server 用的



全部設定完後竟然無法連線,原來 FTP Server 需要重開機才能正常工作,如果變更 FTP 登入使用者的密碼也是一樣,如果沒開機則會沿用舊的 (重新啟動 FTP 服務也沒用),甚至連使用者停用或刪除都還可以用,應該是 Cache 的緣故



回家試傳大檔案看看吧 (測試 OK)

待研究:
  • 使用 ASP.NET Membership 使用者登入,整合 IIS 管理
  • 使用者隔離 Home Directory 與共用目錄的問題
  • 區分使用者權限,對自己上傳的檔案有完整的權限,而對別人的檔案只有下載的權限,不能修改與刪除

參考:FTP Publishing Service: 檔案交流的基礎服務

FTP 測試補充說明:


  • PC2 - Switch Hub - FTP Server:區域網路內的電腦使用內部 IP 測試正常
  • PC2 - Switch Hub - Router - ADSL Modem - Internet - ADSL Modem - Router - Switch Hub - FTP Server:區域網路內的電腦使用外部 IP 測試失敗 (是不是因為經過兩次 NAT 的關係?)
  • PC1 - ADSL Modem - Internet - ADSL Modem - Router - Switch Hub - FTP Server:外部的電腦使用外部 IP 測試正常

留言

這個網誌中的熱門文章

Linux 批次檔的寫法

【分享】如何顯示 Debug Message

[分享] Visual Studio 遠端偵錯