在配置防火墻前,需確保系統已安裝vsftpd
(FTP服務)及防火墻管理工具(ufw
或iptables
):
sudo apt update
sudo apt install vsftpd ufw iptables # 同時安裝vsftpd、ufw(推薦)和iptables(可選)
UFW(Uncomplicated Firewall)是Debian/Ubuntu系統的簡化防火墻工具,操作便捷,適合大多數場景。
sudo ufw enable # 啟用防火墻
sudo ufw default deny incoming # 默認拒絕所有入站連接(增強安全性)
驗證UFW狀態:
sudo ufw status verbose # 查看規則及狀態(需顯示“Status: active”)
FTP服務依賴控制連接(端口21)和數據連接(端口20),需首先開放:
sudo ufw allow 21/tcp # FTP控制連接(必須)
sudo ufw allow 20/tcp # FTP數據連接(主動模式必需)
被動模式(PASV)下,FTP服務器會隨機開放一個端口范圍供客戶端連接。需在vsftpd.conf
中指定范圍,并在UFW中開放:
vsftpd.conf
(/etc/vsftpd.conf
):sudo nano /etc/vsftpd.conf
添加/修改以下參數(示例范圍:50000-50050,可根據需求調整):pasv_enable=YES # 啟用被動模式
pasv_min_port=50000 # 被動模式最小端口
pasv_max_port=50050 # 被動模式最大端口
sudo systemctl restart vsftpd
sudo ufw allow 50000:50050/tcp # 根據vsftpd.conf中的范圍調整
允許系統接受已建立的連接(如FTP數據傳輸的后續數據包),避免中斷現有會話:
sudo ufw allow proto tcp from any to any port 20:65535 state ESTABLISHED,RELATED
sudo ufw reload # 重新加載規則(無需重啟服務)
sudo ufw status # 確認規則已正確添加(如“21/tcp ALLOW”、“50000:50050/tcp ALLOW”)
iptables是Linux內核級防火墻工具,適合需要高級規則的場景(如復雜網絡環境)。
sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT # 控制連接
sudo iptables -A INPUT -p tcp --dport 20 -j ACCEPT # 數據連接(主動模式)
與UFW類似,需先在vsftpd.conf
中設置被動模式端口范圍(如50000-50050),然后開放:
sudo iptables -A INPUT -p tcp --dport 50000:50050 -j ACCEPT # 被動模式
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -P INPUT DROP # 默認拒絕所有入站連接
sudo iptables -P FORWARD DROP # 默認拒絕所有轉發連接
sudo iptables -P OUTPUT ACCEPT # 允許所有出站連接(根據需求調整)
Debian系統需安裝iptables-persistent
工具,確保重啟后規則不丟失:
sudo apt install iptables-persistent
sudo netfilter-persistent save # 保存當前規則到/etc/iptables/rules.v4
sudo netfilter-persistent reload # 重新加載規則
vsftpd.conf
中的pasv_min_port
/pasv_max_port
必須與防火墻開放的端口范圍完全一致,否則客戶端無法連接。anonymous_enable=NO
)、限制用戶訪問其主目錄(chroot_local_user=YES
)(已在vsftpd配置中體現);sudo tail -f /var/log/syslog
或sudo ufw logging on
),及時發現異常連接。iptables-persistent
工具保存,避免重啟后丟失。通過以上策略,可實現Debian系統下vsFTP服務的防火墻安全配置,兼顧可用性與安全性。