vsftpd是very secure FTP的简写形式,是一款非常安全的FTP软件。该软件是基于GPL开发的,被设计为Linux平台下稳定、快速、安全的FTP软件,它支持IPv6以及SSL加密。Vsftpd的安全性主要体现在三个方面:进程分离,处理不同任务的进程彼此是独立运行的;进程运行时均以最小权限运行;多数进程都使用chroot进行了禁锢,防止客户非法共享目录,这里的chroot是改变根的一种技术,如果我们通过vsftpd共享了/var/ftp目录,则该目录对客户端而言就是共享的根目录。
vsftpd虽然是一款FTP软件,但FTP不同于其他的互联网协议,它使用多端口通信。当客户端连接服务器请求资源时,服务器会使用21端口与客户端进行通信,该端口专门处理客户端发送给服务器的请求命令,也就是俗称的命令端口。而最终服务器与客户端进行数据传输时,还需要使用另一个数据端口,数据端口号取决于服务器运行的模式是主动模式还是被动模式。
--------------------------------------分割线 --------------------------------------
Ubuntu实用简单的FTP架设
Ubuntu 13.04 安装 LAMP\vsftpd\Webmin\phpMyAdmin 服务及设置
RHEL6平台下SeLinux和vsftpd的匿名上传的简单案例
--------------------------------------分割线 --------------------------------------
4.3.1 FTP工作模式
1. 主动(active mode)FTP工作模式
第一步,客户端随机开启大于1024的X端口与服务器的21端口建立连接通道,通道建立后,客户端随时可以通过该通道发送上传或下载的命令。
第二步,当客户端需要与服务器进行数据传输时,客户端会再开启一个大于1024的随机端口Y,并将Y端口号通过之前的命令通道传送给服务器的21端口。
第三步,服务器获取到客户端的第二个端口后会主动连接客户端的该端口,通过三次握手后,完成服务器与客户端数据通道的建立,所有的数据均通过该数据通道进行传输。
2. 被动(passive mode)FTP工作模式
第一步,客户端随意开启大于1024的X端口与服务器的21端口建立连接通道。
第二步,当客户端需要与服务器进行数据传输时,客户端从命令通道发送数据请求要求上传或下载数据。
第三步,服务器收到数据请求后会随机开启一个端口Y,并通过命令通道将该端口信息传送给客户端。
第四步,客户端在收到服务器发送过来的数据端口Y的信息后,将在客户端本地开启一个随机端口Z,此时客户端再主动通过本机的Z端口与服务器的Y端口进行连接,通过三次握手连接完成后,即可进行数据传输。
FTP协议最初使用主动模式工作,但现在客户端主机多数都位于防火墙后面,而且防火墙策略一般不允许入站数据。也就是说,客户端主机可以连接外网,但外网不可以直接接入客户端主机。这样采用主动模式FTP服务器最终将无法正常工作,所以就有了后来的被动模式的FTP服务。
4.3.2 安装与管理vsftpd
安装包:vsftpd
RPM格式的vsftpd软件安装完成后,该软件的主程序是/usr/sbin/vsftpd,下面是vsftpd相关的核心文件与目录列表说明。
/etc/logrotate.d/vsftpd(日志轮转)
/etc/pam.d/vsftpd(基于PAM的vsftpd验证配置文件)
/etc/rc.d/init.d/vsftpd(vsftpd启动脚本,可以使用service调用)
/etc/vsftpd(vsftpd软件主目录)
/etc/vsftpd/ftpusers(默认的vsftpd黑名单)
/etc/vsftpd/user_list(可以通过只配置文件设置该文件为黑名单或白名单)
/etc/vsftpd/vsftpd.conf(vsftpd主配置文件)
/usr/sbin/vsftpd(vsftpd主程序)
/usr/share/doc/vsftpd-2.2.2(vsftpd文档资料路径)
/var/ftp(默认vsftpd共享目录)