very secure file transfer protocal daemon 它是基于 tcp 的服务,不支持 udp,FTP 使用范围端口,20 和 21,分别叫做数据端口和控制端口。

 
一、VSFTPD 两种模式工作原理
vsftpd 的两种模式: 主动模式和被动模式

 
主动模式(active port)
       当客户端主动以一个随机非特权端口 N(N>1024)连接 FTP 服务器的 21 端口(控制端口)并开始监听本机的 N+1 这个端口,发送 FTP 命令到"N+1"端口,再到 FTP 服务器,服务器接收后从 20 的数据端口连接到客户端的端口,即是 N+1 端口

 

 
被动模式(pasv)
       客户端打开两个任意的非特权端口 N(>1024)和 N+1 的端口,使用 N 端口连接FTP 服务器的 21 端口后,提交 pasv 命令,提交后服务器会开启一个任意的非特权端口 P,同样 P 也是>1024,并发送端口 P 命令给客户端,然后客户端会以 N+1 的端口来连接传输数据

 

二、企业案例分析
 


 
        虚拟用户的实现:在没有使用虚拟用户的情况下,只能是由一个系统用户来控制这个目录,但是考虑到多工作人员的使用和使用的安全情况下,必须要使用虚拟多用户来控制,怎么控制,是由生成虚拟用户通过 conf 的配置文件来给予权限。

 

 
三、PAM 模块和 VSFTPD 的启动方式
        PAM(Pluggable Authentication Modules)即可插拔式认证模块,它是一种高效而且灵活便利的用户级别的认证方式,它也是当前 Linux 服务器普遍使用的认证方式。

 
        PAM 机制将把多个低级别验证模式集成到高级别 API 中,该 API 将允许以独立于底层验证模式的方式编写使用验证的程序 。 PAM的主要特征表现为通过 /etc/pam.d 或 /etc/pam.conf 文件实现动态验证配置

 
 

 
    vsftpd 提供了  standalone 和  inetd 两种运行模式。简单解释一下,standalone 一次性启动,运行内存中的,优点是对接入信号反应快,缺点是占系统资源,用于对实时反应要求较高的环境。而 inetd 不同,由客户端连接发送请求时才调用 FTP 进程,因此占用的资源比较少。除了反应速度和占用资源两方面的影响外,vsftpd 还提供了一些额外的高级功能,inetd 模式
支持 per_IP(单一 IP)限制,standalone 模式则更有利于 PAM 验证功能的应用。

 

 
讲解重要知识
crypt=0:明文密码
crypt=1:使用 crpyt()函数(对应 SQL 数据里的 encrypt(),encrypt()随机产生 salt)
crypt=2:使用 MYSQL 中的 password()函数加密
crypt=3:表示使用 md5 的散列方式
listen=YES
anonymous_enable   设置匿名是否能访问
local_enable   本地账号是否可以登陆
write_enable   写的权限
anon_upload_enable 上传的权限
anon_mkdir_write_enable   创建文件夹的权限
anon_other_write_enable   除了 mkdir 外的其他权限,例如重命名
chroot_local_user   禁止访问上级目录
guest_enable  开启虚拟用户
guest_username  虚拟用户
pasv_min_port  设置 pasv 模式下的开启最小的端口
pasv_max_port  设置 pasv 模式下的开启最大的端口
ftpd_banner  登陆后显示的信息
pam_service_name   PAM 认证文件
user_config_dir   虚拟用户 conf 目录
dual_log_enable   是否采用 VSFTPd 自己的日志记录方式
use_localtime   表示是否使用本地的时区
vsftpd_log_file   日志文件存放名字和目录

 

 
########以下可以添加##################
max_clients              最大连接数
anon_max_rate         匿名用户和虚拟用户限速
listen_port                 使用的端口
pasv_enable               pasv 模式,登陆的时候使用 passive