在 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 的方式加密,但是我們沒有 $$ 申請憑證,所以採用測試用的 自我簽署憑證,首先點選 IIS 的 伺服器憑證
點選 建立自我簽署憑證
輸入名字
這樣就 OK 了
在 IIS 管理員 的 站台 按滑鼠右鍵,選擇 Add FTP Site
輸入網站的名稱 (不能與現有的名稱重覆),以及對應的實體檔案位置
在 SSL 認證 的下拉式選單,選擇先前建立的 SSL 憑證
先建立一個基本認證的使用者就好
完成後就多一個 FTP 網站了
我們的 FTP採用 被動模式 (參考:網路相關資訊整理),所以得開啟被動模式要使用的 Ports
由於個別 FTP 網站的防火牆設定是繼承來的,所以我們得先修改最上層的 FTP 防火牆設定
因為我們的 FTP 只是要臨時上傳資料用的,使用量不大,所以只要開啟 41000 - 41009 等 10 個 Ports 就好了,而外部防火牆則是 Server 本身的 IP,設定完畢後套用即可
接下來是 Server 本身防火牆的設定,先以系統管理員的身份執行 DOS Box
分別輸入下列兩行指令
從 系統管理工具 | 具有進階安全性的 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)
待研究:
參考:FTP Publishing Service: 檔案交流的基礎服務
FTP 測試補充說明:
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 測試正常
留言