1. 安装
sudo yum install vsftpd
#启动
sudo systemctl start vsftpd
#设置开机自启动
sudo systemctl enable vsftpd
#查看状态
sudo systemctl status vsftpd
2. 配置
# 创建一个组
groupadd www
# 创建一个用户,不允许登陆和不创主目录
useradd -s /bin/false -g www -M www
useradd -g www -s /bin/false -u 1003 sftp
# 更改目录权限
chown www:www /www/wwwroot
chmod -R 775 /www/wwwroot
#编辑conf
vim /etc/vsftpd/vsftpd.conf
写入如下内容
#端口
listen_port=10080
local_root=/www/wwwroot
anonymous_enable=NO
tcp_wrappers=YES
#读写配置
listen=YES
local_enable=YES
write_enable=YES
#功能设置
max_clients=5
max_per_ip=3
local_umask=022
dirmessage_enable=YES
connect_from_port_20=YES
ascii_upload_enable=YES
ascii_download_enable=YES
#日志配置
dual_log_enable=YES
xferlog_std_format=YES
xferlog_enable=YES
vsftpd_log_file=/var/log/vsftpd/vsftpd.log
xferlog_file=/var/log/vsftpd/xferlog
#限制用户设置
allow_writeable_chroot=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
#虚拟用户模式
user_config_dir=/etc/vsftpd/virtual_user
guest_enable=YES
guest_username=sftp
pam_service_name=vsftpd
virtual_use_local_privs=YES
#设置被动模式及端口范围
pasv_enable=YES
pasv_min_port=52800
pasv_max_port=52900
pasv_promiscuous=YES
pasv_address=服务器ip地址
创建虚拟用户目录
mkdir /etc/vsftpd/virtual_user
创建用户列表,注意奇数行是用户名,偶数行是密码
vim /etc/vsftpd/virtual_user.txt
添加如下内容
test
123456
test2
123456
生成虚拟口令认证的db文件
db_load -T -t hash -f /etc/vsftpd/virtual_user.txt /etc/vsftpd/virtual_user.db
编辑vsftpd的PAM认证文件
vim /etc/pam.d/vsftpd
内容为
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtual_user
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtual_user
session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth required pam_shells.so
auth include password-auth
account include password-auth
session required pam_loginuid.so
session include password-auth
创建虚拟用户目录配置文件
vim /etc/vsftpd/virtual_user/用户名
内容为
# 每个虚拟用户的单独配置,会覆盖模板配置文件配置
local_root=/www/wwwroot
anon_umask=022
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
建立限制用户访问目录的空文件
touch /etc/vsftpd/chroot_list
创建日志文件
mkdir -p /var/log/vsftpd
touch /var/log/vsftpd/vsftpd.log
touch /var/log/vsftpd/xferlog
重启vsftpd服务
sudo systemctl restart vsftpd
添加SSL证书支持
检查vsftpd是否支持ssl模块
ldd $(which vsftpd) | grep ssl
#显示如下
libssl.so.10 => /usr/lib64/libssl.so.10 (0x00007f64c2470000)
建立专门给vsftpd使用的凭证数据
cd /etc/pki/tls/certs
make vsftpd.pem
cp -a vsftpd.pem /etc/vsftpd/
ll /etc/vsftpd/vsftpd.pem
修改vstpd.conf配置文件
vim /etc/vsftpd/vsftpd.conf
在末尾添加
ssl_enable=YES
allow_anon_ssl=YES
force_anon_data_ssl=YES
force_anon_logins_ssl=YES
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
重启服务
sudo systemctl restart vsftpd