Fail2Ban是防止暴力破解的常用工具,可监控vsftpd日志(/var/log/vsftpd.log),自动识别多次登录失败的IP地址并临时封禁。
sudo apt install fail2ban。/etc/fail2ban/jail.d/vsftpd.conf,添加以下内容:[vsftpd]
enabled = true # 启用vsftpd监控
filter = vsftpd # 使用vsftpd专用过滤规则
action = iptables-multiport[name=VSFTPD, port="21"] # 封禁端口为21(FTP控制端口)
logpath = /var/log/vsftpd.log # 日志文件路径
maxretry = 5 # 允许的最大失败次数(10分钟内)
findtime = 600 # 检测时间窗口(秒)
bantime = 3600 # 封禁时长(秒,1小时)
sudo systemctl restart fail2ban。通过vsftpd配置文件(/etc/vsftpd.conf)调整参数,降低暴力破解成功率:
max_login_attempts=3,限制用户在单次会话中最多尝试3次登录,超过则断开连接。chroot_local_user=YES,将用户限制在自己的主目录(如/home/username),防止访问系统其他目录。anonymous_enable=NO,避免匿名用户尝试猜测密码。local_enable=YES,仅允许系统本地用户登录。sudo systemctl restart vsftpd。暴力破解工具通常针对明文FTP协议,启用SSL/TLS(FTPS)可加密数据传输,增加破解难度:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
/etc/vsftpd.conf,添加以下内容:ssl_enable=YES # 启用SSL
allow_anon_ssl=NO # 禁止匿名用户使用SSL
force_local_data_ssl=YES # 强制数据连接使用SSL
force_local_logins_ssl=YES # 强制登录过程使用SSL
ssl_tlsv1_2=YES # 仅使用TLS 1.2及以上版本(更安全)
rsa_cert_file=/etc/ssl/private/vsftpd.pem # 证书路径
rsa_private_key_file=/etc/ssl/private/vsftpd.pem # 私钥路径
sudo systemctl restart vsftpd。通过防火墙(如UFW)限制FTP端口(21/tcp)的访问,仅允许可信IP地址连接:
sudo ufw allow 21/tcp(FTP控制端口)。sudo ufw allow 50000:51000/tcp
sudo ufw enable。sudo ufw deny from all to any port 21
sudo ufw allow from <trusted_ip> to any port 21
替换<trusted_ip>为实际可信IP地址。弱密码是暴力破解的主要突破口,需确保FTP用户使用强密码:
passwd命令为用户设置密码时,要求包含大小写字母、数字和特殊字符(如Aa1@2025),长度不少于8位。pwquality(Debian自带),可通过/etc/security/pwquality.conf调整密码复杂度规则(如最小长度、字符类型要求)。及时修补vsftpd和系统的安全漏洞,降低被暴力破解的风险:
sudo apt update && sudo apt upgrade -y。sudo apt install --only-upgrade vsftpd升级。sudo systemctl restart vsftpd。通过以上措施组合使用,可显著降低Debian系统上vsftpd遭受暴力破解的风险,提升FTP服务器的安全性。