在 Windows Server 2008 R2 發布後,gOxiA 就開始著手於相關的測試和評估。IIS 是重點測試和評估之一!而今天與大家分享的是如何在 IIS7 上配置 FTP7 使用 IIS管理憑據 方式進行身份驗證。提到 MSFTP 服務,恐怕知道的人多,但是真正使用的人少!特別是 IDC 環境下多數會選擇 Serv-U FTP Server,gOxiA 從 Windows Server 2008 開始就不再使用 Serv-U,原因很簡單!Serv-U 不是免費的,此次 Serv-U 默認存在安全隱患。況且開放 FTP 也是為了方便自己維護網站,下載上傳資料用!所以用系統自身的軟件不是更好!維護也相對容易很多!但是,使用過 MSFTP 的朋友知道從 FTP7 開始,微軟才為 MSFTP 設計提供了對非 Windows 身份驗證功能的支持,也就是說如果我們要訪問 MSFTP 則不必再在系統裡添加用戶帳號,而可以使用 IIS 來統一管理單獨的憑據!現在我們再也不用擔心,使用 MSFTP 會存在用戶帳號安全隱患的問題。
這是一篇 Step by Step,所以其中涉及到的相關原理及知識內容不作過多介紹!我們將通過 IIS7 提供的 IisManagerAuth 身份驗證模塊來實現 IIS管理憑據的 FTP 帳號。具體步驟如下:
在 開始配置之前,我們需要修改相關目錄的目錄安全權限,這一步驟是必須的,否則在登錄 FTP 的時候會出現錯誤。如下圖所示,我們會看到由於權限不足導致無法讀取配置文件的錯誤提示。而無權限讀取的文件是位於 inetsrv\config 下的 redirection.config 文件。經過 gOxiA 的測試發現即使為該文件添加了相應的權限但仍提示登錄失敗,最終要配置 config 目錄權限,賦予 Network Service(FTP7 進程的默認帳戶)有讀取權限後才能正常登錄。
為了簡單的演示目錄權限的設置過程,gOxiA 參考了 IIS.net 中相關文章的命令行,其中涉及到的 cacls 可以直接運行就可以得到參數幫助。要執行的命令行如下:
cacls c:\windows\system32\inetsrv\config /G "Network Service":R /E
配置了 config 目錄權限後,請確保 "Network Service"對該目錄下的 administration.config 和 redirection.config 文件有讀取權限,否則請執行如下命令行:
cacls c:\windows\system32\inetsrv\config\administration.config /G "Network Service":R /E cacls c:\windows\system32\inetsrv\config\redirection.config /G "Network Service":R /E
之後創建一個 FTP 的默認目錄,注意請添加"Network Service"有完全控制的權限。
下面,我們開始配置 IIS7,創建一個 FTP 站點,為其啟用 IisManagerAuth,並創建一個 IIS管理憑據的帳戶,使其具備 FTP 相應的訪問權限。
在開始之前請確認已經安裝了 IIS7 的 管理服務組件,否則請進入服務器管理,單擊添加角色服務,選中 IIS7 的管理服務組件,進行安裝。
默認可以使用 C:\Inetpub\Ftproot 作為 FTP 主目錄,當然也可以根據自己的需要創建或選擇一個目錄,但是需要注意,請賦予"Network Service"有完全控制權限。
下來我們配置 IIS7 啟用 IIS管理器憑據,在啟用之後才能使用 IisManagerAuth。為此,打開 IIS管理器,雙擊"管理服務",選中"Windows 憑據或 IIS 管理器憑據",最後單擊右邊操作列表下的"應用"。
之後使用"IIS管理器用戶"創建一個 IIS 所管理的用戶帳號。為此,雙擊"IIS 管理器用戶",單擊"添加用戶",在彈出的窗體中輸入用戶名和密碼。
上述操作一旦完成,就可以開始創建一個 FTP 站點,首先選中 IIS 管理器左邊的導航窗體中的"網站",之後單擊鼠標右鍵,左鍵單擊"添加 FTP 站點…"。
"站點信息"中輸入 FTP 站點名稱,如:Default FTP Site。並選擇默認的內容目錄,本例中 gOxiA 使用的是 C:\inetpub\ftproot,單擊"下一步"。
在"綁定和 SSL 設置"中,根據需要啟用虛擬主機名,注意:FTP"虛擬主機名"可能不被一些客戶端所支持。此外請將 SSL 默認的配置"需要"更改為"允許",否則如果不配置 SSL 證書並使用 SSL FTP 登錄方式將導致客戶端連接失敗。
在 "身份驗證和授權信息"配置中,更具需要選擇身份驗證方式,並指定一個用戶和權限。如果你只允許 IIS管理器用戶能夠訪問該 FTP 站點,那麼這一步可以不配置,直接單擊"完成"。方便大家的學習,本例中允許系統用戶中的 Administrator 對該 FTP 有讀取和寫入的權限。
現在以 Windows 身份驗證方式的 FTP 站點已經創建好了,下面我們可以使用 Administrator 來登錄 FTP。
經過測試,創建的 FTP 站點已經正常運行,下面我們將要為該 FTP 站點添加之前創建的 IIS管理器用戶 — goxia 有相應的訪問權限。
首先,選中"Default FTP Site",在內容窗體中雙擊"FTP 身份驗證",進入"FTP 身份驗證"設置後單擊右邊操作中的"自定義提供程序…",在彈出窗體中勾選"IisManagerAuth"。
啟用了 IisMangerAuth 後,打開"FTP 授權規則",添加指定的用戶 — goxia,並賦予有相應的訪問權限。
最後我們來使用 goxia 這個 IIS 管理器用戶登錄 FTP 進行測試。
如 果首次登錄失敗,提示無法驗證用戶和密碼,則需要打開該 FTP 站點的"IIS 管理器權限"設置,添加 goxia 這個帳號。之後測試登錄成功後再將其帳號從中刪除即可。查找 IIS.net 的相關指引文檔,發現默認是要執行這步配置的,但是 gOxiA 認為這一步是配置用戶是否具有該 FTP 的遠程管理權限的,一旦配置並啟用 IIS 的遠程管理服務,那麼該帳號具備的權限可能會造成安全隱患。目前 gOxiA 也未完全理解。希望有網友指點一二!