1. 声明

版本信息:
本文档的最新版本将张贴于: LinuxSir.Org论坛 Debian 发行版讨论区 ;

也能够从 http://www.debsir.org/ 获取.

反馈:
任何评论, 错误报告, 其他信息连同批评, 请邮寄到 etony@tom.com ;

或在LinuxSir.Org论坛 Debian发行版讨论区 张贴.

版权信息:
本文档的版权(c)2006-2007 归 etony C.F.AN 任何.

转载请注明源自 http://www.debsir.org/ .

2. FTP 原理
FTP Transfer Protocol 件传输协议的缩写,在RFC 959中具体说明。

FTP会话时包含了两个通道,一个叫控制通道,一个叫数据通道。

控制通道:控制通道是和FTP服务器进行沟通的通道,连接FTP,发送FTP指令都是通过控制通道来完成的。

数据通道:数据通道是和FTP服务器进行文档传输或列表的通道。

FTP协议中,控制连接均有客户端发起,而数据连接有两种工作方式:PORT方式和PASV方式


PORT模式(主动方式)
FTP 客户端首先和FTP Server的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。 PORT命令包含了客户端用什么端口(一个大于1024的端口)接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口发送数据。 FTP server必须和客户端建立一个新的连接用来传送数据。

PASV模式(被动方式)
在建立控制通道的时候和PORT模式类似,当客户端通过这个通道发送PASV 命令的时候,FTP server打开一个位于1024和5000之间的随机端口并且通知客户端在这个端口上传送数据的请求,然后FTP server 将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接传送数据。


假如从C/S模型这个角度来说,PORT对于服务器来说是OUTBOUND,而PASV模式对于服务器是INBOUND,这一点请特别注意,尤其是在使用防火墙的企业里,这一点很关键,假如配置错了,那么客户将无法连接。

3. VSFTPD
vsftpd 是个 UNIX 类操作系统上运行的服务器的名字,他能够运行在诸如 Linux, BSD, Solaris, HP-UX 连同 IRIX 上面。他支持很多其他的 FTP 服务器不支持的特征。比如:

很高的安全性需求
带宽限制
良好的可伸缩性
创建虚拟用户的可能性
IPv6支持
中等偏上的性能
分配虚拟 IP 的可能性
高速
vsftpd 的名字代表"very secure FTP daemon", 安全是他的研发者 Chris Evans 考虑的首要问题之一。在这个 FTP 服务器设计研发的最开始的时候,高安全性就是个目标。

一个例子就是 vsftpd 是在 chroot 模式下工作的,chroot 模式就是为程式(这里就是 vsftpd 了)单独指定一个新的目录,他也就不能访问那个目录之外的程式和文档了 --- 所以这也称为“被锁上的”。一个可能被潜在的攻击者破坏的 FTP 服务器将被从系统的其他部分单独开来,从而避免了更大的损失。

由于有了如此多的特性,其中 FTP 服务的安全性应该是最重要的,vsftpd 比其他 FTP 服务器更加优越。WU-FTPD http://www.wu-ftpd.org/ 在这里能够被视作一个反面的例子,因为他在过去的几年中出现了太多的安全缺陷。

4. VSFTPD的基本配置
4.1 安装

源代码安装
周详参阅:http://www.vsftpdrocks.org/source/

下载源代码

wget ftp://vsftpd.beasts.org/users/cevans/vsftpd-1.2.1.tar.gz


解压

tar zxvf vsftpd-1.2.1.tar.gz


进入源代码目录

cd vsftpd-1.2.1


编译

make


创建用户
假如不存在 nobody用户,请创建


useradd nobody


创建目录
vsftpd 需要 /usr/share/empty 目录,假如不存在,请创建:


mkdir /usr/share/empty


安装

make install


复制配置文档到/etc目录

cp vsftpd.conf /etc


以单独方式启动vsftpd服务

/usr/local/sbin/vsftpd &

4.2 使用Debian的方式安装

# aptitude update
# aptitude install vsftpd( 2.0.5)

5. 配置文档说明

/etc/vsftpd.conf
vsftpd的主配置文档 /etc/ftpusers 记录不允许访问FTP服务器的用户名单管理员能够把一些对系统安全有威胁的敏感账户记录在这个文档中,以免对系统造成威胁


# /etc/ftpusers: list of users disallowed FTP access. See ftpusers(5).

root
daemon
bin
sys
sync
games
man
lp
mail
news
uucp
nobody


/etc/vsftpd.user_list
此文档和userlist_file 选项有关, 也可通过userlist_file选项指定其他文档, 默认为/etc/vsftpd.user_list,配置userlist_enable=YES时方可生效, 默认(userlist_deny=YES)指定不能访问服务器的用户列表,如设定userlist_deny=NO,则FTP服务器仅允许此列表中的用户访问。

/etc/init.d/vsftpd
vsftpd的启动脚本

/var/log/vsftpd.log
vsftpd的日志文档


5.1 配置相关内容参阅:

man vsftpd.conf

或参阅:我翻译的VSFTPD.CONF联机手册 http://etony.9966.org/doc/other/vsftpd-man-zh.html

5.2 系统的启动和停止

启动服务

/etc/init.d/vsftpd start


重启服务

/etc/init.d/vsftpd restart


停止服务

/etc/init.d/vsftpd stop

也能够使用 rcconf 工具配置vsftpd 服务是否在系统引导时启动

6. 配置示例
一个示例文档


# 以单独模式启动

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!