1. 安装vsftpd
在Debian系统上,首先通过以下命令更新系统并安装vsftpd:
sudo apt update && sudo apt install vsftpd -y
安装完成后,进入配置文件修改阶段。
2. 基本安全配置(/etc/vsftpd.conf)
编辑vsftpd主配置文件,设置以下核心参数以阻断常见攻击路径:
anonymous_enable=NO(禁止匿名用户登录,避免未授权访问服务器文件);local_enable=YES(仅允许系统本地用户通过FTP登录);chroot_local_user=YES(将用户限制在自己的主目录内,防止越权访问系统其他目录);allow_writeable_chroot=YES(解决chroot后用户无法上传文件的问题,需确保主目录权限正确);write_enable=YES(允许本地用户上传文件,若无需上传可设为NO)。3. 增强安全配置
传统FTP传输为明文,易被窃听。通过SSL/TLS加密可保护数据传输安全:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
ssl_enable=YES
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
force_local_data_ssl=YES # 强制数据传输加密
force_local_logins_ssl=YES # 强制登录过程加密
ssl_tlsv1=YES # 仅允许TLSv1协议(禁用SSLv2/3等不安全协议)
ssl_sslv2=NO
ssl_sslv3=NO
保存后重启vsftpd服务使配置生效。限制FTP服务端口,减少攻击面:
sudo ufw allow 20/tcp # FTP数据传输端口(主动模式)
sudo ufw allow 21/tcp # FTP控制端口
sudo ufw allow 30000:31000/tcp # 被动模式数据端口范围
sudo ufw reload # 重新加载防火墙规则
注意:若使用被动模式,需在vsftpd配置文件中添加pasv_min_port=30000和pasv_max_port=31000。4. 用户与权限管理
避免使用root用户登录,创建专用FTP用户并设置家目录:
sudo adduser ftpuser # 创建用户(按提示设置密码)
sudo mkdir -p /var/ftp/ftpuser # 创建用户家目录
sudo chown ftpuser:ftpuser /var/ftp/ftpuser # 设置目录所有者
sudo chmod 755 /var/ftp/ftpuser # 设置目录权限(用户可读写,其他用户只读)
将用户添加至vsftpd配置的白名单(可选,增强控制):
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO # 仅允许列表中的用户登录
将用户名添加至/etc/vsftpd.userlist文件。
PermitRootLogin no,并重启SSH服务:sudo systemctl restart sshd
防止攻击者通过FTP猜测root密码登录系统。5. 其他安全优化
max_clients=50(最大同时连接数)和max_per_ip=5(单个IP最大连接数),防止暴力破解或资源耗尽;local_max_rate=102400(单位:字节/秒,此处限制为100KB/s)控制本地用户下载速度,避免占用过多带宽;xferlog_enable=YES(启用传输日志)和xferlog_std_format=YES(使用标准日志格式),便于后续审计可疑活动(日志文件默认位于/var/log/xferlog)。6. 重启服务应用配置
完成所有配置后,重启vsftpd服务使更改生效:
sudo systemctl restart vsftpd
通过以上步骤,可显著提升Debian系统上vsftpd服务器的安全性,防范匿名访问、数据泄露、端口扫描等常见攻击。