|
|
This document is available in: English ChineseGB Deutsch Italiano Nederlands Turkce Polish |
by Mario M. Knopf <netzmeister/at/neo5k/dot/org> 关于作者: Mario 以忙于 Linux、网络和其它安全相关的话题为乐。在业余时间,他维护着两个网站:neo5k.org 和 linuxwallpapers.de. 目录: |
vsftpd - Very Secure FTP Daemon 简介摘要:
这篇文章是"Very Secure FTP Daemon" 的基本介绍。首先,我会粗略地介绍 FTP 和 vsftpd。之后,我们将会学习 vsftp 守护程序(deamon)的安装、设置和启动参数。最后,我们还要进行一个小小的功能测试。
|
FTP 的连接控制使用 TCP (Transmission Control Protocol, 传输控制协议),它保障了数据的可靠传输。因此,FTP 在数据传输中不需要关心分组丢失和数据错误检测。因为 TCP 保障了每个分组都按照顺序的、没有错误的、无重复的到达。
FTP 中根据发送方式的不同分为有三种不同的传输类型,流(stream)模式以 end-of-file (EOF) 标志传输的结束,另两种传输模式以 end-of-record (EOR) 来标志传输的结束
另外还有两种不同的传输模式:
ASCII 模式用于文本文件的传输,而二进制模式用于程序和类似的数据的传输。用户不需要选择特定的传输模式,现在所有的客户端都可以识别传输的文件的类型自动切换模式。
鉴权用的用户名和密码都是使用明文传输的,这是一个非常严重的安全隐患。这也是一些有关FTP的安全的考虑的出发点。1997 年10月,RFC2228[2] 终于发布了,它定义了 FTP 的安全性补充规范。
vsftpd 的名字代表"very secure FTP daemon", 安全是它的开发者 Chris Evans 考虑的首要问题之一。在这个 FTP 服务器设计开发的最开始的时候,高安全性就是一个目标。
一个例子就是 vsftpd 是在 chroot 模式下工作的,chroot 模式就是为程序(这里就是 vsftpd 了)单独指定一个新的目录,它也就不能访问那个目录之外的程序和文件了 --- 所以这也称为“被锁上的”。一个可能被潜在的攻击者破坏的 FTP 服务器将被从系统的其他部分独立开来,从而避免了更大的损失。有关 chroot 的更多信息可以在下边的文章[3]中得到。如果您对于 vsftpd 的其他安全机制有兴趣,推荐阅读文章 [4]。
由于有了如此多的特性,其中 FTP 服务的安全性应该是最重要的,vsftpd 比其他 FTP 服务器更加优越。WU-FTPD[5] 在这里可以被视作一个反面的例子,因为它在过去的几年中出现了太多的安全缺陷。
得到源代码并解开 tarball 后,进入新建的目录目录并运行 make。下面是必要的命令的示例:
neo5k@phobos> tar xzvf
vsftpd-x.x.x.tar.gz
neo5k@phobos> cd vsftpd-x.x.x
neo5k@phobos> make
neo5k@phobos> mkdir /var/ftp
neo5k@phobos> useradd -d /var/ftp ftp
neo5k@phobos> chown root.root /var/ftp
neo5k@phobos> chmod og-w /var/ftp
neo5k@phobos> make install
程序和 manpage 应该已经被拷贝到系统中的正确的位置了。如果出现了异常情况,麻烦一点的手工拷贝也可以完成这项工作。neo5k@phobos> cp vsftpd /usr/sbin/vsftpd
neo5k@phobos> cp vsftpd.conf.5 /usr/share/man/man5
neo5k@phobos> cp vsftpd.8 /usr/share/man/man8
neo5k@phobos> cp vsftpd.conf /etc
# Comment line
# Anonymus FTP-access permitted?
YES/NO
anonymous_enable=NO
# Permit anonymus upload? YES/NO
anon_upload_enable=NO
# Permission for anonymus users to make new directories?
YES/NO
anon_mkdir_write_enable=NO
# Permission for anonymus users to do other write operations
- like renaming or deleting? YES/NO
anon_other_write_enable=NO
# Log on by local users permitted? YES/NO
local_enable=YES
# Shall local users be locked into their home directory?
YES/NO
chroot_local_user=YES
# Highest permitted data transfer rate in bytes per second
for local logged on users. Default = 0 (unlimited)
local_max_rate=7200
# General write permission? YES/NO
write_enable=YES
# Enable messages when changing directories? YES/NO
dirmessage_enable=YES
# Welcome banner at users logon.
ftpd_banner="Welcome to neo5k's FTP service."
# Activate logging? YES/NO
xferlog_enable=YES
# Logging of all FTP activities? YES/NO
# Careful! This can generate large quantities of
data.
log_ftp_protocol=NO
# Confirm connections are established on port 20 (ftp data)
only. YES/NO
connect_from_port_20=YES
# Timeout during idle sessions
idle_session_timeout=600
# Data connection timeout
data_connection_timeout=120
# Access through Pluggable Authentication Modules
(PAM)
pam_service_name=vsftpd
# Standalone operation? YES/NO - depending on operation mode
(inetd, xinetd, Standalone)
# The author's FTP service is being startet with xinetd,
therefore the value here is NO.
listen=NO
neo5k@phobos> vi /etc/inetd.conf
# ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd ftp stream tcp nowait root /usr/sbin/tcpd vsftpd
# vsftp daemon. service ftp { disable = no socket_type = stream wait = no user = root server = /usr/sbin/vsftpd per_source = 5 instances = 200 no_access = 192.168.1.3 banner_fail = /etc/vsftpd.busy_banner log_on_success += PID HOST DURATION log_on_failure += HOST nice = 10 }
# Shall the vsftp daemon run in standalone
operation? YES/NO
listen=YES
neo5k@phobos> /usr/sbin/vsftpd &
如果程序运行路径的设置是正确的,下面的命令就可以启动服务器了neo5k@phobos> vsftpd &
对于后一种方式,我们可以这样看路径设置是否正确neo5k@phobos> echo $PATH
/usr/sbin:/bin:/usr/bin:/sbin:/usr/X11R6/bin
neo5k@phobos> ftp phobos Connected to phobos 220 "Welcome to neo5k's FTP service." Name (phobos:neo5k): testuser 331 Please specify the password. Password: 230 Login successful Remote system type is UNIX. Using binary mode to transfer files. ftp> ls -l 229 Entering Extended Passive Mode 150 Here comes the directory listing drwxr-xr-x 11 500 100 400 May 07 16:22 docs drwxr-xr-x 9 500 100 464 Feb 01 23:05 hlds drwxr-xr-x 39 500 100 4168 May 10 09:15 projects 226 Directory send OK. ftp>
当然,这个介绍仅仅是对 vsftpd 提供的环境的一瞥,这个 FTP 服务器还提供了大量的可供设置的选项。如果你想要更进一步研究 vsftpd 的话,应该访问项目的主页[6]并阅读更进一步的文档。
|
主页由LinuxFocus编辑组维护
© Mario M. Knopf, FDL LinuxFocus.org |
翻译信息:
|
2004-07-10, generated by lfparser version 2.46