Ubuntu系统中vsftpd安全设置指南
首先更新系统软件包列表并安装vsftpd,确保使用最新版本修复已知漏洞:
sudo apt update
sudo apt install vsftpd
/etc/vsftpd.conf)编辑vsftpd主配置文件,通过以下关键参数限制访问和权限:
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES # 允许chroot目录可写(解决“500 OOPS”错误)
/etc/vsftpd.user_list文件指定允许/拒绝登录的用户,提升访问控制粒度。userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO # 仅允许列表中的用户登录(设为YES则为拒绝)
为防止数据在传输过程中被窃取或篡改,必须启用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
force_local_data_ssl=YES # 强制数据传输加密
force_local_logins_ssl=YES # 强制登录过程加密
ssl_tlsv1=YES # 仅使用TLSv1协议(禁用SSLv2/3)
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
被动模式可避免防火墙拦截主动模式的随机端口连接,提升连接稳定性:
pasv_enable=YES
pasv_min_port=40000 # 被动模式端口范围起始值
pasv_max_port=40100 # 被动模式端口范围结束值
需同步配置防火墙允许该端口范围(见下文)。
允许FTP必要端口及被动模式端口,阻断非法访问:
# 允许FTP控制端口(21)和数据端口(20)
sudo ufw allow 21/tcp
sudo ufw allow 20/tcp
# 允许被动模式端口范围
sudo ufw allow 40000:40100/tcp
# 启用防火墙
sudo ufw enable
# 检查防火墙状态
sudo ufw status
应用所有配置变更:
sudo systemctl restart vsftpd
# 设置开机自启
sudo systemctl enable vsftpd
Aa123456@),避免弱密码被破解。local_umask设置文件创建掩码(如022),确保用户上传的文件权限合理(如-rw-r--r--),防止其他用户修改或删除文件。/var/log/vsftpd.log(或配置的日志路径),查看登录记录、传输行为等,及时发现异常(如频繁登录失败、大量文件下载)。sudo usermod -s /sbin/nologin ftpuser # 将ftpuser的shell设为无登录权限