戰(zhàn):從安裝到被動(dòng)模式防火墻排錯(cuò))
簡介FileZilla Server v0.9.60 是一款輕量級(jí)開源FTP服務(wù)器軟件面向需要在內(nèi)網(wǎng)或公網(wǎng)中快速搭建文件交換服務(wù)的個(gè)人站長、企業(yè)管理員及入門運(yùn)維人員能有效解決傳統(tǒng)共享方式效率低、權(quán)限控制難的問題。該資源包為zip壓縮格式整包僅2.1MB共包含兩個(gè)文件其中exe安裝程序負(fù)責(zé)部署服務(wù)器核心與管理界面htm說明文檔則講解了安裝步驟、端口配置、用戶賬戶建立及目錄權(quán)限設(shè)置等關(guān)鍵操作。目前已有456人瀏覽學(xué)習(xí)適合FTP基礎(chǔ)薄弱但想動(dòng)手實(shí)踐的初學(xué)者也適合需要參考配置細(xì)節(jié)的中級(jí)維護(hù)人員。讀者可獲得完整的安裝介質(zhì)和官方說明從而理解主動(dòng)/被動(dòng)模式差異掌握多用戶創(chuàng)建、細(xì)粒度讀寫權(quán)限分配、SSL/TLS加密設(shè)置以及日志監(jiān)控排錯(cuò)等技能有效支撐項(xiàng)目協(xié)作、數(shù)據(jù)備份或?qū)ν馕募螺d等場景。1. 老牌 FTP 服務(wù)器FileZilla Server v0.9.60 到今天還能怎么用FileZilla Server v0.9.60 是一套在 Windows 上跑了十幾年的經(jīng)典 FTP 服務(wù)端體積小、配置直觀、內(nèi)存占用低。它解決的是那個(gè)樸素問題給同事、設(shè)備或自動(dòng)化腳本一條穩(wěn)定可預(yù)期的文件上傳下載通道。共享文件夾雖然方便但權(quán)限和日志都弱一截跨平臺(tái)對(duì)接也麻煩所以“FTP 服務(wù)器代替文件共享”的說法在運(yùn)維里一直沒斷過。無論是 eNSP 實(shí)驗(yàn)里練習(xí)配置 FTP 服務(wù)器還是 LabVIEW 上位機(jī)里要填一個(gè) FTP 地址后端連的往往就是這類服務(wù)。這篇筆記從安裝講到踩坑適合剛接手服務(wù)器運(yùn)維、需要搭一套內(nèi)網(wǎng) FTP 的從業(yè)者。2. 把 v0.9.60 裝起來安裝選項(xiàng)、服務(wù)管理與第一個(gè)端口檢查安裝包是 Windows 下的向?qū)桨惭b點(diǎn)完“Next”就能用。但這里有兩個(gè)決定后續(xù)體驗(yàn)的選項(xiàng)要提前想好服務(wù)端口和管理口令。如果只是內(nèi)網(wǎng)用默認(rèn) 21 端口沒問題如果 21 已經(jīng)被 IIS 或其他軟件占住最好一開始就改成 10021 這類高位端口后面涉及的防火墻規(guī)則也一并調(diào)整免得裝到一半再返工。2.1 安裝向?qū)Ю锏娜齻€(gè)關(guān)鍵選項(xiàng)端口、服務(wù)賬戶、管理口令安裝過程中會(huì)問你 FTP 服務(wù)監(jiān)聽端口默認(rèn) 21一般不用動(dòng)。第二個(gè)問題是“Install as service”勾選后跟著系統(tǒng)自啟建議保持勾選因?yàn)?FTP 服務(wù)通常要長時(shí)間在線出問題頂多是重啟不會(huì)因?yàn)闆]登錄 Windows 就斷掉。第三個(gè)坑在管理口令。FileZilla Server 裝好后日常配置是通過一個(gè)獨(dú)立的“FileZilla Server Interface”程序連到服務(wù)上做的默認(rèn)管理端口是 14147。安裝向?qū)Ю锿ǔS幸徊綍?huì)讓你設(shè)置管理接口密碼如果當(dāng)時(shí)跳過了裝好后也要在連接界面里補(bǔ)上。否則局域網(wǎng)內(nèi)任何人連上 14147 端口都能改你配置這比 FTP 弱口令問題更隱蔽。我一直建議安裝完成第一件事就是給管理接口設(shè)個(gè)密碼。如果你在安裝時(shí)把服務(wù)賬戶從系統(tǒng)賬戶改成指定用戶后面還要注意FileZilla Server 進(jìn)程用哪個(gè)賬戶運(yùn)行訪問磁盤目錄時(shí)就用哪個(gè)賬戶的權(quán)限。很多人配置完發(fā)現(xiàn)客戶端能登錄、但讀寫目錄報(bào) 550就是這里卡住了跟 FTP 軟件本身沒關(guān)系是 NTFS 權(quán)限沒給到。提示v0.9.60 的安裝向?qū)Ы缑娲蠖嗍怯⑽牡牡x項(xiàng)不復(fù)雜關(guān)鍵是別把“Install as service”和“Start after installation”這兩個(gè)勾選弄反。2.2 服務(wù)啟動(dòng)、重啟與開機(jī)自啟三條管理命令裝完后服務(wù)默認(rèn)叫“FileZilla Server”注意服務(wù)名不帶“FTP”字樣。日常重啟用 sc 或 net 命令都行sc query FileZilla Server net stop FileZilla Server net start FileZilla Serversc query 用于查看服務(wù)當(dāng)前狀態(tài)輸出里有 STATE 一行RUNNING 說明在跑STOPPED 就要結(jié)合日志看為什么沒起來net stop 和 net start 是重啟服務(wù)最快的方式順序不能反一條失敗會(huì)直接給出錯(cuò)誤碼。如果想改開機(jī)自啟類型用這條sc config FileZilla Server start auto注意 start 后面必須有一個(gè)空格寫錯(cuò)會(huì)提示“參數(shù)不正確”。這個(gè)細(xì)節(jié)很容易在復(fù)制命令時(shí)被忽略。如果你傾向圖形界面在 services.msc 里找到同名服務(wù)右鍵屬性改啟動(dòng)類型也一樣兩條路的效果沒有區(qū)別。補(bǔ)充兩個(gè)常見的小狀況。net stop 時(shí)如果服務(wù)本來就沒跑控制臺(tái)會(huì)提示“服務(wù)尚未啟動(dòng)”這不是故障不用管sc query 報(bào)“指定的服務(wù)未安裝”則說明服務(wù)名不對(duì)去 services.msc 里確認(rèn)一下準(zhǔn)確名稱再執(zhí)行。2.3 管理接口連不上的兩個(gè)原因端口占用和密碼不匹配裝好服務(wù)后打開開始菜單里的 FileZilla Server Interface默認(rèn)連本機(jī) 14147 端口。常見的報(bào)錯(cuò)是“Could not connect to server”九成是這兩件事一是服務(wù)沒起來用 2.2 的 sc query 確認(rèn)二是 14147 被別的進(jìn)程占用。查端口占用用這條命令netstat -ano | findstr 14147這條命令會(huì)把監(jiān)聽 14147 的進(jìn)程 PID 顯示出來再打開任務(wù)管理器對(duì)照 PID 就能判斷是誰搶的。另外v0.9.60 的管理接口和 FTP 服務(wù)是分開的管理接口沒起來時(shí) FTP 端口照常工作所以客戶端能連、管理界面連不上并不矛盾。除了查端口占用還可以直接 telnet 127.0.0.1 14147能連上說明管理服務(wù)在聽連接被拒絕則是服務(wù)沒監(jiān)聽。注意 telnet 在一些精簡版 Windows 上需要先在控制面板啟用 Telnet 客戶端否則會(huì)提示“不是內(nèi)部或外部命令”。2.4 批量部署的思路把配置文件當(dāng)作后悔藥v0.9.60 的配置不像新版那樣有注冊(cè)表依賴主要落在 FileZilla Server.xml 這個(gè)文件里。實(shí)際交付時(shí)我一般先把一臺(tái)機(jī)器的手工配置徹底調(diào)好然后停服務(wù)、備份這個(gè) xml再復(fù)制到新機(jī)器上覆蓋最后啟動(dòng)服務(wù)。用戶名、密碼、共享目錄都跟著走省去重新點(diǎn)一遍界面的時(shí)間。配置文件里記錄的是相對(duì)路徑還是絕對(duì)路徑取決于你添加共享目錄時(shí)怎么填的。批量部署時(shí)最好統(tǒng)一填絕對(duì)路徑否則目錄遷移時(shí)客戶端看到的路徑全亂。這類“先手工調(diào)好再復(fù)制配置”的做法比在每臺(tái)機(jī)器上重新配置要穩(wěn)定得多。還有一點(diǎn)要記住復(fù)制 xml 時(shí)注意版本落差v0.9.60 的 xml 和新版 FileZilla Server 的 xml 結(jié)構(gòu)不一致不能簡單覆蓋。要升級(jí)應(yīng)該先把老版本里的用戶、目錄、權(quán)限逐項(xiàng)記下來再到新版里重新配置。配置文件好用但不能跨大版本救命。3. 用戶、組與目錄權(quán)限配置一個(gè)最小可用的 FTP 目錄用戶和目錄權(quán)限是 FileZilla Server 使用頻率最高的部分。FTP 工具的客戶端五花八門服務(wù)端行為卻很固定登錄時(shí)校驗(yàn)用戶名和密碼登錄后按每個(gè)用戶配置的共享目錄與權(quán)限決定能看什么、能傳什么。這個(gè)模型一旦理解后面的配置都是在填空。3.1 創(chuàng)建用戶最容易漏掉的 Enabled 勾選項(xiàng)在管理界面里 Edit Users點(diǎn) Add 輸入用戶名再勾選 Enabled、填好密碼一個(gè)用戶就算建成了。最常犯的錯(cuò)是忘了勾 Enabled——界面里新用戶默認(rèn)未啟用客戶端會(huì)一直收到“530 Login incorrect”查密碼也沒用因?yàn)榉?wù)端根本沒放行。填密碼時(shí)的幾個(gè)習(xí)慣長度不低于 10 位包含大小寫和數(shù)字這屬于基本要求。v0.9.60 時(shí)代沒有原生的密碼策略強(qiáng)制密碼復(fù)雜與否完全靠自覺。內(nèi)網(wǎng)實(shí)驗(yàn)可以寬松一點(diǎn)但只要能聯(lián)網(wǎng)的設(shè)備建議按生產(chǎn)環(huán)境標(biāo)準(zhǔn)對(duì)待。用戶和組的關(guān)系要分清用戶是登錄主體組只是權(quán)限集合。同一個(gè)用戶可以加入多個(gè)組共享目錄會(huì)疊加而不是互相覆蓋。這個(gè)特性在配置跨部門臨時(shí)協(xié)作時(shí)很好用基礎(chǔ)組給公共目錄項(xiàng)目組再給項(xiàng)目目錄。另外匿名用戶在設(shè)置里默認(rèn)關(guān)閉內(nèi)網(wǎng)文件共享場景一般沒必要開開著只會(huì)增加弱口令和濫用風(fēng)險(xiǎn)。用戶頁下方的“Shared folders”用于添加共享目錄。目錄權(quán)限一欄有五個(gè)勾選項(xiàng)Read、Write、Append、Delete、List以及一個(gè)額外的“ Subdirs”。新手最容易在“ Subdirs”上翻車。3.2 目錄權(quán)限五個(gè)選項(xiàng)Read/Write/Append/Delete/List 和 Subdirs這五個(gè)選項(xiàng)控制的是對(duì)目錄內(nèi)文件的操作能力按照常見需求可以分成三檔見下表權(quán)限組合典型用途說明Read List只讀下載下載目錄、固件包、資料庫Read Write List上傳與下載日常文件交換不允許刪除全選完全控制臨時(shí)交接目錄、團(tuán)隊(duì)共享盤“ Subdirs”的作用是“是否允許訪問子目錄”。如果不勾客戶端登錄后能看到根目錄但進(jìn)入子目錄或執(zhí)行 dir 時(shí)可能出錯(cuò)勾上后子目錄才會(huì)正常枚舉。實(shí)際配置時(shí)共享目錄本身和子目錄的權(quán)限是綁定在同一套勾選里的也就是說你不能給根目錄勾了 Read卻想禁止根目錄下某個(gè)子目錄的讀取——老版本做不到這么細(xì)只能通過拆分成多個(gè)共享目錄來實(shí)現(xiàn)。3.3 用 Windows 自帶 ftp.exe 驗(yàn)證三行命令確認(rèn)配置配置完別急著用大客戶端Windows 自帶的 ftp.exe 足以完成最小驗(yàn)證ftp -n 192.168.1.10 user ftpusr 123456 dir bye第一行 -n 表示禁止自動(dòng)登錄避免連上后就彈賬號(hào)交互第二行輸入用戶名和密碼注意是在 ftp 提示符下輸入不是 Shell 里第三行 dir 執(zhí)行列目錄如果這里能列出內(nèi)容說明用戶名、密碼、目錄權(quán)限、數(shù)據(jù)連接都正常如果列出后像“卡住不動(dòng)”則問題大概率出現(xiàn)在下一章的被動(dòng)模式或防火墻。命令行里直接帶密碼會(huì)被進(jìn)程列表看到這只是本地驗(yàn)證手段。正式環(huán)境的巡檢腳本建議用第 6 章的 Python 寫法避免賬號(hào)口令出現(xiàn)在歷史記錄里。還要學(xué)會(huì)看錯(cuò)誤碼530 Login incorrect 停在認(rèn)證階段優(yōu)先查用戶名和密碼550 表示權(quán)限不足需要回到共享目錄權(quán)限里勾選對(duì)應(yīng)選項(xiàng)服務(wù)器發(fā)回“200 Port command successful”后沒有報(bào)文則是數(shù)據(jù)連接問題繼續(xù)往防火墻方向查。3.4 組與虛擬目錄批量授權(quán)和路徑美化用戶多了以后逐個(gè)配權(quán)限很痛苦。FileZilla Server 提供了 Group組機(jī)制先在 Edit Groups 里建一個(gè)組配置好共享目錄與權(quán)限再把用戶加進(jìn)組用戶會(huì)自動(dòng)繼承組的權(quán)限。之后要調(diào)整某個(gè)部門的上傳權(quán)限只改組配置即可不用挨個(gè)用戶點(diǎn)。虛擬目錄解決的是“路徑不好看”的問題。比如物理目錄在 D:\shared\release\2024想讓客戶端登錄后直接看到 /pub 這個(gè)整潔路徑就在共享目錄里把“Native directory”填物理路徑“Virtual path”填 /pub。虛擬路徑必須以 / 開頭且不能與已有目錄沖突。這個(gè)功能做文件分發(fā)時(shí)非常實(shí)用客戶端拿到的是一個(gè)穩(wěn)定的邏輯路徑底層物理目錄換了也不影響操作。虛擬目錄的層級(jí)可以嵌套比如 /pub/2024 指向 D:\archive\2024。但要注意虛擬路徑和物理路徑的對(duì)應(yīng)關(guān)系在配置里是明文保存的不要因此把 FTP 目錄路徑當(dāng)作安全邊界——真正的訪問控制靠的還是前面的權(quán)限勾選。4. 主動(dòng)模式、被動(dòng)模式與防火墻客戶端卡住列目錄的根源FTP 有個(gè)區(qū)別于 HTTP 的特點(diǎn)控制連接和數(shù)據(jù)連接是分開的。登錄、發(fā)命令走 21 端口目錄列表和文件傳輸走另外一條數(shù)據(jù)連接。數(shù)據(jù)連接的建立方式不同就產(chǎn)生了主動(dòng)模式和被動(dòng)模式。v0.9.60 絕大多數(shù)“能登錄、不能傳文件”的問題都出在這一層。4.1 主動(dòng)模式與被動(dòng)模式的差異三句話講清楚模式數(shù)據(jù)連接發(fā)起方服務(wù)端使用端口典型問題主動(dòng)模式Active服務(wù)器主動(dòng)連接客戶端服務(wù)端 20 端口客戶端在內(nèi)網(wǎng)/NAT 后時(shí)服務(wù)器連不到客戶端被動(dòng)模式Passive客戶端主動(dòng)連接服務(wù)器服務(wù)端被動(dòng)端口區(qū)間服務(wù)端被動(dòng)端口或防火墻未放行一句話總結(jié)主動(dòng)模式是“服務(wù)器來找你”被動(dòng)模式是“你去找服務(wù)器”。局域網(wǎng)內(nèi)兩者幾乎無感一旦經(jīng)過路由器或云安全組被動(dòng)模式更可控因?yàn)槌稣痉较蚴强蛻舳税l(fā)起的絕大部分網(wǎng)絡(luò)環(huán)境會(huì)放行。因而互聯(lián)網(wǎng)場景里默認(rèn)選擇被動(dòng)模式這也是 FileZilla 客戶端默認(rèn)配置。4.2 被動(dòng)端口范圍設(shè)置區(qū)間別設(shè)太小也別把防火墻規(guī)則設(shè)太大在管理界面的 Passive settings 里勾選 “Use custom port range”填寫起始和結(jié)束端口例如 1000-2000。保存后服務(wù)器會(huì)在該區(qū)間內(nèi)為每次數(shù)據(jù)連接分配一個(gè)端口。區(qū)間的選擇有講究。設(shè)得太小比如 10 個(gè)端口并發(fā)用戶一多就報(bào)“無法建立數(shù)據(jù)連接”設(shè)得太大則防火墻規(guī)則會(huì)變成一個(gè)大范圍暴露面。經(jīng)驗(yàn)做法是按“并發(fā)用戶數(shù) × 50”估算例如 20 個(gè)并發(fā)用戶給 1000 個(gè)端口足夠日常使用實(shí)驗(yàn)環(huán)境直接給 1000-2000 也行。被動(dòng)模式下還有一個(gè)關(guān)鍵參數(shù)服務(wù)器返回給客戶端的 IP 地址。在 Passive settings 里“Use the following IP”勾選后可以強(qiáng)制指定一個(gè)對(duì)外 IP。如果服務(wù)器在內(nèi)網(wǎng) NAT 后面不填寫這一項(xiàng)客戶端會(huì)被引導(dǎo)去連服務(wù)器的內(nèi)網(wǎng) IP自然是連不通的。4.3 防火墻放行三條 netsh 命令覆蓋大部分場景Windows 自帶的防火墻規(guī)則可以用命令快速配置省去圖形界面里反復(fù)點(diǎn)擊的麻煩netsh advfirewall firewall add rule nameFTP-21 dirin actionallow protocolTCP localport21 netsh advfirewall firewall add rule nameFTP-PASV dirin actionallow protocolTCP localport1000-2000 netsh advfirewall firewall add rule nameFTP-ACTIVE-20 dirout actionallow protocolTCP remoteport20第一條放行 FTP 控制端口 21第二條放行被動(dòng)模式的數(shù)據(jù)端口區(qū)間第三條是主動(dòng)模式下服務(wù)器以 20 端口向客戶端發(fā)數(shù)據(jù)連接時(shí)所需的出站規(guī)則。如果只做純被動(dòng)模式第三條可以不配但為了兼容某些強(qiáng)制主動(dòng)的客戶端加上更省心。規(guī)則名前綴統(tǒng)一一點(diǎn)FTP-后續(xù)排查防火墻策略時(shí)一眼能認(rèn)出來。4.4 NAT 與公網(wǎng)訪問外部 IP 怎么填、端口怎么轉(zhuǎn)填被動(dòng)端口后最常見的翻車是把外部 IP 忘了。服務(wù)器在被動(dòng)模式回復(fù)客戶端時(shí)默認(rèn)帶上自己的網(wǎng)卡 IP如果這個(gè) IP 是 192.168.x.x那么公網(wǎng)客戶端收到后根本沒法連。解決方法是前面說的在 Passive settings 里填上路由器或云服務(wù)器的公網(wǎng) IP同時(shí)把 21 端口和被動(dòng)端口區(qū)間都在路由器或安全組里做端口轉(zhuǎn)發(fā)。這里有一個(gè)容易被忽略的點(diǎn)公網(wǎng) IP 往往是動(dòng)態(tài)的如果變了被動(dòng)模式也會(huì)失效。所以長期跑公網(wǎng)的 FTP一般建議配合動(dòng)態(tài) DNS 或者干脆用新版 FileZilla Server它對(duì)這些場景的處理成熟得多。老版本 v0.9.60 更適合內(nèi)網(wǎng)環(huán)境硬要暴露公網(wǎng)就要接受這類維護(hù)成本。4.5 多網(wǎng)卡與虛擬化環(huán)境監(jiān)聽地址別默認(rèn)服務(wù)器虛擬化普及后一臺(tái) Windows 虛擬機(jī)往往帶多個(gè)網(wǎng)卡管理網(wǎng)、業(yè)務(wù)網(wǎng)、存儲(chǔ)網(wǎng)。FileZilla Server 默認(rèn)在所有網(wǎng)卡上監(jiān)聽 21 端口等于業(yè)務(wù)網(wǎng)和存儲(chǔ)網(wǎng)都暴露了 FTP 服務(wù)。常見做法是在服務(wù)的監(jiān)聽設(shè)置里把監(jiān)聽地址限定為業(yè)務(wù)網(wǎng)網(wǎng)卡的 IP而不是全地址。這樣做的直接好處有兩個(gè)一是攻擊面減少存儲(chǔ)網(wǎng)和管理網(wǎng)的流量不會(huì)走到 FTP 服務(wù)二是日志里的來源 IP 更干凈排錯(cuò)時(shí)不用猜是哪個(gè)網(wǎng)卡進(jìn)來的。如果你用的是云主機(jī)還應(yīng)該把安全組規(guī)則控制在“僅允許業(yè)務(wù)網(wǎng)段訪問 21 和被動(dòng)端口”。5. 避坑排查老版本 v0.9.60 的五個(gè)翻車現(xiàn)場配置看起來都對(duì)運(yùn)行起來就是有問題這是 FTP 服務(wù)的常態(tài)。下面五條都是反復(fù)出現(xiàn)過的現(xiàn)場按現(xiàn)象、原因、解決的順序?qū)懛奖阒苯訉?duì)照。5.1 能登錄但列不出目錄被動(dòng)端口沒放行現(xiàn)象客戶端輸入用戶名密碼成功緊接著列目錄時(shí)卡住最后報(bào)“Connection timed out”或“無法打開數(shù)據(jù)連接”。原因控制連接走 21 端口是通的但列表操作需要數(shù)據(jù)連接。默認(rèn)配置下客戶端用的是被動(dòng)模式而服務(wù)器被動(dòng)端口比如 1000-2000沒有被防火墻或路由器放行數(shù)據(jù)連接建立失敗??刂七B接只是負(fù)責(zé)發(fā)命令目錄數(shù)據(jù)不會(huì)擠在 21 端口里傳這是很多新手一開始沒轉(zhuǎn)過彎來的地方。解決按 4.3 節(jié)放行被動(dòng)端口區(qū)間并確認(rèn)路由器或安全組同時(shí)放行臨時(shí)驗(yàn)證可以把 FileZilla 客戶端里的傳輸模式改成主動(dòng)如果改成主動(dòng)立刻正常就證明問題出在被動(dòng)端口而不是用戶權(quán)限。5.2 上傳大文件傳一半斷掉主動(dòng)模式出站被攔現(xiàn)象小文件正常數(shù)百兆的文件傳到一半就掉線重試后還是同一位置附近中斷。原因客戶端選擇了主動(dòng)模式數(shù)據(jù)連接由服務(wù)器的 20 端口發(fā)起。很多企業(yè)網(wǎng)絡(luò)或云安全組對(duì)“服務(wù)器主動(dòng)連客戶端”的出站流量做了限制導(dǎo)致數(shù)據(jù)流中斷。小文件可能剛好趕在限制生效前完成大文件則躲不過去。解決最簡單的方式是讓客戶端改用被動(dòng)模式FileZilla 客戶端默認(rèn)就是這個(gè)查一下站點(diǎn)設(shè)置是否被手動(dòng)改過服務(wù)端同時(shí)確認(rèn)被動(dòng)端口區(qū)間正常。如果你確實(shí)只能走主動(dòng)模式再檢查服務(wù)器出站 20 端口是否被防火墻攔截按 4.3 添加第三條規(guī)則。還要提醒一句斷點(diǎn)續(xù)傳在老版本上雖然支持但如果連接中途斷掉很多客戶端會(huì)從頭再傳這不算服務(wù)端故障更多是網(wǎng)絡(luò)鏈路問題。5.3 日志被爆破刷屏與弱口令風(fēng)險(xiǎn)沒有 Fail2ban 要靠自己現(xiàn)象日志文件里出現(xiàn)大量 “530 Login incorrect”來源 IP 分散幾分鐘就能刷出幾百條記錄更嚴(yán)重的情況是某個(gè)賬號(hào)真被爆破成功目錄被上傳了不相關(guān)的文件。原因v0.9.60 是十多年前的版本沒有內(nèi)置的失敗鎖定或 IP 封禁機(jī)制FTP 協(xié)議默認(rèn)明文傳輸口令在網(wǎng)絡(luò)上可被嗅探。網(wǎng)上能搜到大量“ftp 弱口令”相關(guān)的攻擊案例很多都指向這類老舊 FTP 服務(wù)。老的 FTP 服務(wù)一旦暴露到公網(wǎng)就是掃描器的重點(diǎn)目標(biāo)。解決一是立即關(guān)閉匿名訪問確認(rèn) Anonymous 用戶沒有啟用二是把密碼改成強(qiáng)口令三是用 Windows 防火墻或云安全組把來源 IP 限制到已知網(wǎng)段四是如果做了 FTP 監(jiān)控把 530 的頻次閾值設(shè)低一些方便第一時(shí)間發(fā)現(xiàn)而不是等日志把磁盤寫滿才察覺。最徹底的方案是換到新版 FileZilla Server 或改用 SFTP老版本只適合純內(nèi)網(wǎng)控制環(huán)境。5.4 中文目錄名亂碼客戶端顯示亂碼內(nèi)容現(xiàn)象上傳的中文文件名客戶端列目錄時(shí)顯示亂碼或者下載下來的文件名變成一團(tuán)亂碼文件內(nèi)容本身沒問題。原因FTP 協(xié)議早期沒有標(biāo)準(zhǔn)的文件名編碼約定v0.9.60 時(shí)代的中文目錄名編碼很大程度上取決于服務(wù)器操作系統(tǒng)的區(qū)域設(shè)置和客戶端的解析方式。FileZilla 客戶端自己有一套編碼協(xié)商但第三方 FTP 工具常常不按套路來互相之間就會(huì)出現(xiàn)“客戶端顯示亂碼服務(wù)端看文件卻正?!钡墓脂F(xiàn)象。解決先在 FileZilla 客戶端的站點(diǎn)管理器里把字符集強(qiáng)制設(shè)置為“UTF-8”大多數(shù)情況能恢復(fù)正常如果仍然亂碼去服務(wù)器控制面板把“非 Unicode 程序的語言”改成簡體中文并重啟實(shí)在不行目錄和文件名改用純英文這是最省事的做法。做 FTP 服務(wù)不像維護(hù)網(wǎng)盤別在文件命名上追求個(gè)性越簡單越不容易出問題。5.5 服務(wù)在跑但 21 端口連不上端口被其他程序搶占現(xiàn)象sc query 顯示服務(wù) Running但客戶端連接 21 端口超時(shí)本地 telnet 127.0.0.1 21 也失敗。原因多數(shù)情況是 Windows 自帶的 IIS FTP 服務(wù)或某個(gè)開發(fā)工具占用了 21 端口導(dǎo)致 FileZilla Server 實(shí)際沒有綁定成功。老系統(tǒng)上同時(shí)裝了兩套 FTP 的沖突很常見而且這類系統(tǒng)往往還跑著其他服務(wù)排查起來更容易暈頭轉(zhuǎn)向。解決先用下面命令查 21 端口被誰占用netstat -ano | findstr :21拿到 PID 后在任務(wù)管理器里定位進(jìn)程如果是 IIS FTP停掉服務(wù)或在 IIS 管理器里改端口再重啟 FileZilla Server。也可以直接把 FileZilla Server 的監(jiān)聽端口改成 10021避開沖突客戶端相應(yīng)改一下端口即可。用 telnet 127.0.0.1 21 驗(yàn)證時(shí)能看到 220 開頭的歡迎信息就是正常的。6. 從驗(yàn)證到留存一條 Python 巡檢腳本與配置備份習(xí)慣配置穩(wěn)定后剩下的問題是如何長期維護(hù)。我習(xí)慣把“驗(yàn)證”從手工點(diǎn)界面變成腳本順手還能當(dāng) FTP 監(jiān)控用。下面這段 Python 用標(biāo)準(zhǔn)庫 ftplib不需要裝第三方依賴from ftplib import FTP ftp FTP() ftp.connect(192.168.1.10, 21, timeout10) ftp.login(ftpusr, 123456) print(ftp.nlst()) # 被動(dòng)模式列目錄 ftp.cwd(/pub) ftp.retrbinary(RETR config.ini, open(config.ini, wb).write) ftp.storbinary(STOR report.txt, open(report.txt, rb)) ftp.quit()connect 的 timeout 參數(shù)建議設(shè)短一點(diǎn)超過就報(bào)錯(cuò)nlst 返回的目錄列表能同時(shí)驗(yàn)證用戶名、密碼和被動(dòng)端口鏈路retrbinary 和 storbinary 分別測試下載和上傳。腳本放到計(jì)劃任務(wù)里每天跑一次任何一步失敗都能報(bào)警這比等用戶報(bào)障主動(dòng)得多。配置文件備份同樣重要。v0.9.60 的配置集中在 FileZilla Server.xml 里服務(wù)停止后把它復(fù)制到另一個(gè)磁盤或備份目錄?;謴?fù)時(shí)覆蓋同名文件再啟動(dòng)服務(wù)即可賬號(hào)、目錄、權(quán)限都會(huì)原樣回來。我吃過一次虧FTP 根目錄放在系統(tǒng)盤日志和臨時(shí)上傳文件把 C 盤塞滿之后又趕上配置改動(dòng)沒備份恢復(fù)起來相當(dāng)費(fèi)勁?,F(xiàn)在我的固定流程是根目錄放 D 盤、每周備份一次 xml、巡檢腳本固定跑一遍登錄和傳輸。這套流程雖然簡單但足夠讓老版本再穩(wěn)穩(wěn)服役很多年。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取