vsftpd (Very Secure FTP Daemon)
proftpd
pure-ftpd
sudo apt-get install vsftpd # Debian/Ubuntu
sudo yum install vsftpd # CentOS/RHEL
# 禁止匿名登录
anonymous_enable=NO
# 允许本地用户登录
local_enable=YES
# 启用chroot限制用户在其主目录
chroot_local_user=YES
# 允许写入(需配合文件系统权限)
write_enable=YES
# 限制用户列表(可选)
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO # 仅允许列表中的用户
sudo useradd -m ftpuser -s /bin/bash
sudo passwd ftpuser
# 限制用户只能通过FTP访问(禁用shell登录)
sudo usermod -s /bin/false ftpuser
# 确保用户主目录权限正确
sudo chown -R ftpuser:ftpuser /home/ftpuser
sudo chmod 755 /home/ftpuser
# 创建上传目录并设置权限
sudo mkdir /home/ftpuser/upload
sudo chown ftpuser:ftpuser /home/ftpuser/upload
sudo chmod 775 /home/ftpuser/upload
# 创建虚拟用户数据库
sudo mkdir /etc/vsftpd
sudo touch /etc/vsftpd/virtual_users.txt
sudo db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db
# 配置PAM认证
# 编辑/etc/pam.d/vsftpd,添加认证配置
# 在vsftpd.conf中添加
guest_enable=YES
guest_username=virtual
local_root=/home/virtual/$USER
user_sub_token=$USER
# 在vsftpd.conf中添加
file_open_mode=0666
local_umask=022
# 允许特定IP访问
allow_writeable_chroot=YES
tcp_wrappers=YES
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
bash
sudo chmod a-w /home/ftpuser
sudo mkdir /home/ftpuser/files
sudo chown ftpuser:ftpuser /home/ftpuser/files
或在vsftpd.conf中添加:
ini
allow_writeable_chroot=YES
530 Login incorrect
连接超时
bash
sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw allow 40000:50000/tcp # 被动模式端口范围
生成SSL证书
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
配置vsftpd.conf
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
重启服务
sudo systemctl restart vsftpd
通过以上配置,您可以建立一个相对安全且功能完善的FTP服务器,满足基本的文件传输需求。