在定制化开发前,需完成VSFTP的安装与环境配置:
sudo yum update -y && sudo yum install vsftpd -y
sudo systemctl start vsftpd && sudo systemctl enable vsftpd
local_enable=YES(默认开启)。anonymous_enable=NO。chroot_local_user=YES将所有本地用户限制在其主目录(如/home/username),防止越权访问系统文件。chroot_list_enable=YES,并在/etc/vsftpd/chroot_list中添加例外用户名(如管理员账户)。guest_enable=YES # 启用虚拟用户
guest_username=ftp # 指定虚拟用户的宿主系统用户(需存在)
user_config_dir=/etc/vsftpd/vuser_conf # 虚拟用户个性化配置目录
pasv_enable=YES
pasv_min_port=10000 # 被动模式最小端口
pasv_max_port=20000 # 被动模式最大端口
local_max_rate限制用户最大传输速率(单位:字节/秒),避免带宽占用过高。例如,限制为1MB/s:local_max_rate=1048576
ascii_upload_enable=YES
ascii_download_enable=YES
xferlog_file=/var/log/vsftpd/xferlog # 传输日志(记录上传/下载详情)
xferlog_std_format=YES # 使用标准xferlog格式(兼容第三方工具分析)
log_ftp_protocol=YES # 记录FTP协议交互日志(如命令、响应)
logrotate工具自动切割日志,避免日志文件过大。需编辑/etc/logrotate.d/vsftpd,添加如下内容:/var/log/vsftpd/*.log {
daily
rotate 7
compress
missingok
notifempty
}
若系统启用SELinux,需调整相关策略以允许FTP访问用户主目录:
sudo setsebool -P ftp_home_dir on # 允许FTP访问用户主目录
sudo setsebool -P allow_ftpd_full_access on # 允许FTP访问文件(如上传/删除)
使用firewalld开放FTP端口(21)及被动模式端口范围(10000-20000):
sudo firewall-cmd --permanent --add-service=ftp # 开放FTP服务(默认端口21)
sudo firewall-cmd --permanent --add-port=10000-20000/tcp # 开放被动模式端口范围
sudo firewall-cmd --reload # 重新加载防火墙规则
启用TLS加密传输,保护数据隐私(避免明文传输用户名、密码):
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/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/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/vsftpd.pem
若需为不同用户分配不同权限(如限制上传、禁止删除),可通过虚拟用户个性化配置文件实现:
echo "ftpuser1" > /etc/vsftpd/vuser_passwd.txt
echo "ftppass1" >> /etc/vsftpd/vuser_passwd.txt
db_load工具将文本文件转换为数据库格式:sudo db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db
/etc/pam.d/vsftpd,替换为数据库认证:auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required pam_userdb.so db=/etc/vsftpd/vuser_passwd
/etc/vsftpd/vuser_conf/下为每个用户创建配置文件(如ftpuser1),定制权限:local_root=/var/ftp/ftpuser1 # 虚拟用户主目录
write_enable=YES # 允许上传
anon_upload_enable=NO # 禁止匿名上传
anon_mkdir_write_enable=NO # 禁止匿名创建目录
idle_session_timeout=300 # 空闲超时5分钟
max_clients=5 # 最大并发连接数
ftp localhost
ftp localhost
tail -f /var/log/vsftpd/xferlog
tail -f /var/log/vsftpd.log
通过以上步骤,可实现VSFTP在CentOS上的定制化开发,满足不同场景下的FTP服务需求。定制化过程中需注意安全性(如禁用匿名、启用加密)、性能(如调整并发连接数)及易用性(如日志审计),确保服务稳定可靠。