-
查看虚机上是否安装vsftpd命令:rpm -qa | grep vsftpd,确认没有安装,开始安装
-
安装vsftpd:yum -y install vsftpd
安装成功后查看下是否安装成功:systemctl status vsftpd,此时vsftpd的服务状态为dead
安装成功后可以在/etc下查看到vsftp的配置文件
可以添加开机自启命令:systemctl enable vsftpd -
配置vsftpd
anonymous_enable=NO >>是否允许匿名用户访问,YES支持,NO禁用
local_enable=YES >>是否允许本地用户访问,YES支持,NO禁止
write_enable=YES >>是否允许本地用户修改ftp目录下文件,YES允许,NO禁止
local_umask=022 >>本地用户新增文件的权限,022: rxwr-xr-x(所有者全部权限,属组读写,其它人读写)
#anon_upload_enable=NO >>是否允许匿名用户上传文件,YES允许(须将全局的write_enable=YES),NO禁止
#anon_mkdir_write_enable=NO >>是否允许匿名用户创建新目录,YES允许,NO禁止
dirmessage_enable=YES >>允许为目录配置显示信息,显示每个目录下面的message_file文件的内容
xferlog_enable=YES >>开启日志功能
connect_from_port_20=YES >>是否设定FTP服务器将启用FTP数据端口的连接请求,21为连接请求的端口
#chown_uploads=YES >>是否允许改变上传文件的属主
#chown_username=whoever >>想要改变的上传文件的属主,如果需要,则输入一个系统用户名
#xferlog_file=/var/log/xferlog >>日志文件存放位置,默认该日志文件为/var/log/vsftpd.log
xferlog_std_format=YES >>使用标准日志格式
#idle_session_timeout=600 >>设置数据传输中断时间间隔
#data_connection_timeout=120 >>设置数据连接超时时间
#nopriv_user=ftpsecure >>当服务器运行于最底层时使用的用户名
#async_abor_enable=NO >> 是否识别异步ABOR请求,如果FTP client会下达“async ABOR”这个指令时,这个设定才需要启用,而一般此设定并不安全,所以通常将其取消
#ascii_upload_enable=YES >>是否启用 ASCII 模式上传数据
#ascii_download_enable=YES >>是否启用 ASCII 模式下载数据
#ftpd_banner=Welcome to blah FTP service. >>login时显示欢迎信息.如果设置了banner_file则此设置无效
#deny_email_enable=YES >>设置时必须提供一个档案/etc/vsftpd/banner_emails,内容为 email address。若是 使用匿名登入,则会要求输入 email address,若输入的 email address 在此档案内,则不允许进入
#banned_email_file=/etc/vsftpd/banned_emails >>禁止使用匿名用户登陆时作为密码的电子邮件地址
#chroot_local_user=YES >>是否允许用户离开设置的根目录
#chroot_list_enable=YES >>如果启动这项功能,则所有列在chroot_list_file之中的使用者不能更改根目录
#chroot_list_file=/etc/vsftpd/chroot_list >>定义不能更改用户主目录的文件
#ls_recurse_enable=YES >>是否能使用ls -R命令以防止浪费大量的服务器资源
listen=NO >>启动独立模式,只接受IPV4的连接
listen_ipv6=YES >>同时监听IPv4和IPv6端口
pam_service_name=vsftpd >>定义PAM 所使用的名称,预设为vsftpd
userlist_enable=YES >>限制了/etc/vsftpd/user_list文件里的用户不能访问
tcp_wrappers=YES >>开启tcp_wrappers支持
-
设置FTP用户
添加用户ftptest1及目录为/home/test: useradd -d /home/test ftptest1
设置用户ftptest1密码:passwd ftptest1
-
启动vsftpd:service vsftpd start
-
查看vsftpd监听端口:netstat -ntlp
-
确认防火墙,并关闭
systemctl status firewalld -
配置ssl
①检查vsftpd是否支持ssl模块:ldd $(which vsftpd) | grep ssl
②给vsftpd生成ssl证书,在etc/pki/tls/certs下
③将生成的证书复制到etc/vsftpd下
④修改vsftpd.conf文件
ssl_enable=YES >>启用SSL
allow_anon_ssl=YES >>当ssl_enable=YES工作,允许匿名用户使用安全的ssl连接
force_anon_data_ssl=YES >>当ssl_enable=YES工作,所有匿名登录将被强制使用安全的ssl连接
force_anon_logins_ssl=YES >>当ssl_enable=YES工作,所有匿名登录将强制使用安全的ssl连接发送密码
force_local_data_ssl=YES >>当ssl_enable=YES工作,所有本地用户登录被强制使用安全的ssl连接
force_local_logins_ssl=YES >>当ssl_enable=YES工作,所有本地用户登录将强制使用安全的ssl连接发送密码
ssl_tlsv1=YES >>当ssl_enable=YES工作,允许使用TLS V1协议连接,TLS V1连接是首选
rsa_cert_file=/etc/vsftpd/vsftpd.pem >>指定用户SSL加密连接的RSA证书位置
-
重启vsftpd。
-
搭建过程中其他需要注意的
①确认21端口防火墙开放命令
firewall-cmd --permanent --query-port=21/tcp
firewall-cmd --permanent --add-port=21/tcp
②Filezilla连接vsftpd
报错1:
Status: Insecure server, it does not support FTP over TLS.
Command: USER root
Response: 530 Permission denied.
Error: Could not connect to server
解决方案:vsftpd不支持TLS,需要配置SSL/TLS。
③ftpusers和user_list两个文件用途与关系
ftpusers不受任何配制项的影响,它总是有效,且是一个黑名单
user_list则是和vsftpd.conf中的userlist_enable和userlist_deny两个配置项紧密相关的,它可以有效,也可以无效,有效时它可以是一个黑名单,也可以是一个白名单
Case 1: userlist_enable=YES, userlist_deny=YES
user_list有效且是一个黑名单,在user_list中的用户不允许登录
Case 2: userlist_enable=YES, userlist_deny=NO
user_list有效且是一个白名单,在user_list中的用户才允许登录
Case 3: userlist_enable=NO,userlist_deny=NO
user_list无效
Case 4: userlist_enable=NO,userlist_deny=YES
user_list无效
注意:使用user_list白名单后,匿名用户将无法登入!除非显式在user_list中加入一行:anonymous