一、基础准备:生成SSL/TLS证书(用于加密传输)
在Linux系统上,首先需要为FileZilla Server创建SSL/TLS证书,确保数据传输的加密性。执行以下命令:
# 创建证书目录
sudo mkdir -p /etc/ssl/private
# 生成自签名证书(有效期365天,RSA密钥长度2048位)
sudo openssl req -x509 -nodes -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem -days 365 -newkey rsa:2048
此命令会生成包含私钥和公钥的PEM格式证书,用于后续配置。
二、FileZilla Server安全配置
默认的FTP控制端口(21)易被自动化工具扫描,需修改为不常用端口(如14147)。操作路径:
FileZilla Server界面 → 编辑 → 设置 → 常规设置,在“监听端口”处输入新端口(如14147)。
通过TLS加密FTP传输数据(包括密码和文件内容),避免明文泄露。操作路径:
编辑 → 设置 → SSL/TLS设置,勾选“启用FTP over TLS支持”,选择生成的证书文件(/etc/ssl/private/vsftpd.pem),并设置:
TLS版本:仅允许TLS 1.2(禁用SSLv2/SSLv3,避免已知漏洞);客户端认证:可选“强制”(要求客户端提供证书,进一步提升安全性)。/home/ftpuser),并设置权限(如“读取+写入”但禁止删除);sudo apt update && sudo apt upgrade filezilla-server(Debian/Ubuntu)或对应包管理器升级;/etc/filezilla/server.xml(配置文件)和用户数据,防止数据丢失。三、FileZilla Client安全配置
SFTP基于SSH协议,提供端到端加密,无需额外配置SSL证书。操作路径:
文件 → 站点管理器 → 新建站点,输入主机名/IP、用户名,端口设为22(SSH默认端口),协议选择“SFTP - SSH File Transfer Protocol”。
若必须使用FTP协议,需在客户端启用TLS:
站点管理器 → 选择站点 → 加密,选择“要求显式FTP over TLS”(强制客户端与服务器之间的加密连接)。
四、系统层安全加固
使用firewalld开放必要端口(如FileZilla Server的自定义端口、SFTP的22端口、被动模式端口范围),并拒绝其他端口:
# 开放自定义FTP端口(如14147)
sudo firewall-cmd --zone=public --permanent --add-port=14147/tcp
# 开放SFTP端口(22)
sudo firewall-cmd --zone=public --permanent --add-port=22/tcp
# 开放被动模式端口范围(如40000-50000)
sudo firewall-cmd --zone=public --permanent --add-port=40000-50000/tcp
# 重新加载防火墙规则
sudo firewall-cmd --reload
被动模式端口范围需在FileZilla Server的“被动模式设置”中同步配置。
在FileZilla Server的“用户管理”中,删除匿名用户(anonymous),或限制其仅能访问特定目录(如/var/ftp/pub),并禁止写入权限。