手机分类
  导航: 电脑时代在线 · 服务器频道 · 业界观察
有问题吗?看 疑难解答 电脑术语

Linux:运用vsftpd构建安全地FTP服务

 
硬件盘点
手机推荐
 
『Linux:运用vsftpd构建安全地FTP服务』如果文章有大量图片,显示会较慢,请等待图片下载完成
 
点击数: 更新时间:2005-8-19 

FTP协议的安全隐患不能成为拒绝使用FTP的原因,本文介绍一种构建安全FTP服务的方法。

文件传输协议(FTP)是互联网上用户使用频率很高的一种协议,它基于客户机/服务器(client/server)架构,主要用来提供用户的文件传输以及上传下载功能。然而,由于该协议在最初的设计过程当中没有充分考虑到网络日益发展的今天可能存在的诸多安全性问题,因而存在着很大的安全隐患。本文将对该文件传输协议进行原理介绍,并讲述如何在Linux环境下,使用vsftpd(very secure FTP daemon)来构建安全的FTP应用。

vsftpd的特性

vsftpd 是一个基于GPL发布的类Unix类操作系统上运行的服务器的名字(是一种守护进程),它可以运行在诸如Linux、BSD、Solaris、HP-UX以及IRIX上面。它支持很多其他传统的FTP服务器所不支持的特征。它具有如下特点:非常高的安全性、带宽限制、良好的扩展性 、支持创建虚拟用户、支持IPv6、支持虚拟IP、高速、稳定。

vsftpd的名字代表“very secure FTP daemon”,它的开发者Chris Evans考虑的首要问题就是数据传输的安全性。所以,在上述所有的特性当中,较高的安全性是处于最重要的地位。vsftpd比其他诸如Wu-ftpd和Proftpd之类的FTP服务器更加优越。另外,在速度方面,据统计,使用ASCⅡ模式下载数据的速度是Wu-ftpd的两倍。在Linux2.4系列版本的内核下,千兆以太网的下载速度可以达到86MB/S;在稳定性方面,根据ftp.redhat.com的数据,它可以支持15000个并发用户,所以其总体性能也是非常高的。

vsftpd的安装过程

vsftpd 守护程序的安装相当简单,在每个主要发行版中都可以找到vsftpd的RPM包,很多情况下,它已经被装上了。如果没有的话,源代码可以在网站:http://vsftpd.beasts.org/上找到,下载后执行手工安装。目前最新的版本为:vsftpd2.0.3。

得到源代码并解开tar包后,进入新建的目录,并运行make。下面是进行手工安装的示例:

# tar xzvf vsftpd-2.0.3.tar.gz

# cd vsftpd-2.0.3

# make

这之前我们应该看看用户“nobody”和目录“/usr/share/empty”是否存在,如果需要的话我们就新建这一对用户和目录。如果我们允许用户匿名访问,用户“ftp”和目录“var/ftp”也需要创建。使用如下两个命令完成:

# mkdir /var/ftp

# useradd -d /var/ftp ftp

由于安全原因,目录 “/var/ftp” 不应该属于用户 “ftp”,也不应该有写权限。如果用户已经存在的话,用下面的两个命令,我们可以改变目录的所有者并去掉其他用户的写权限:

# chown root.root /var/ftp

# chmod og-w /var/ftp

达到了所有的先决条件后,我们可以安装 vsftp-daemon 了。

# make install

这样,就完成了vsftpd的安装,当然,这个安装过程比较复杂,在我们现在使用的Linux系统当中,很多都是使用RPM包来安装的,这样简单快捷,下面介绍如何通过使用RPM包来安装vsftpd。

在RedHat Linux9中自带了vsftpd,下面是安装的步骤:

1. 首先查看是否安装了vsftpd,如果已经安装,则可以直接使用。

# rpm - q|grep vsftpd

2. 没有安装的话,将下载来的vsftpd-1.1.3-8.i386.rpm的RPM包进行安装。

# rpm - vh vsftpd-1.1.3-8.i386.rpm

通过以上两步,就能顺利地完成安装过程。

配置文件介绍

配置文件的路径为 /etc/vsftpd.conf。和Linux系统中的大多数配置文件一样,vsftpd的配置文件中以#开始注释,下面对配置文件的重要内容选项进行详细的介绍,合理的使用配置文件是保证FTP安全传输的前提。

查看配置文件:

#vi /etc/vsftpd.conf

设置是否允许匿名访问:

# 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

设置是否对所有的FTP操作作日志,如果设置是,则可能产生巨大的数据:

# Logging of all FTP activities? YES/NO

# Careful! This can generate large quantities of data.

log_ftp_protocol=NO

设置是否只允许在端口20建立连接:

# 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

设置访问所使用的PAM:

# 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=YES

设置是否使用tcp_wrappers作为主机访问控制方式:

tcp_wrappers =YES

启动 FTP 服务

启动vsftpd可以采用三种方式:inetd、xinetd和standalone(独立)工作模式。由于目前使用的xinetd扩展了inetd,它比inetd更加高效和实用,包括诸如请求记录、访问控制、将业务与网络接口绑定等改进,所以通常使用xinetd,本文将介绍xinetd以及standalone两种启动方式。

1. xinetd方式启动

使用该启动方式,在上述的配置文件当中,应该将listen=YES设为list=NO,并且将tcp_wrappers=YES设为tcp_wrappers=NO,并且使用如下命令将vsftpd的文档目录拷贝到/etc/xinetd.d目录下:

# cp /usr/share/doc/vsftpd-1.1.3/vsftpd.xinetd /etc/xinetd.d/vsftpd

# vi /etc/xinetd.d/vsftpd

将disable=yes设为disable=no即可。一个关于该启动方式的的配置文件如下所示:

# cat /etc/xinetd.d/vsftpd

# default: on

# description: The vsftpd FTP server serves FTP connections. It uses \

# normal, unencrypted usernames and passwords for authentication.

service ftp

{

socket_type = stream

wait = no

user = root

server = /usr/sbin/vsftpd

nice = 10

disable = no

flags = IPv4

}

现在,就可以使用如下命令来启动vsftpd了。

停止独立运行的vsftpd:

# service vsftpd stop

重新启动xinetd守护进程:

# service xinetd restart

另外一点需要说明的是:如果想在系统启动时就自动运行该服务,那么需要使用setup命令,在网络服务配置的项目中,选中vsftpd守护进程即可。

2. 独立工作模式启动

vsftpd也可以工作在独立工作模式下。这样,我们需要再次打开“/etc/vsftpd.conf”做如下修改:

# Shall the vsftp daemon run in standalone operation? YES/NO

listen=YES

在这项设置之后,守护进程可以用如下方式启动:

# service vsftpd start

同样地,在独立工作模式下,我们必须保证vsftpd没有被xinetd启动,这个可以使用如下命令来进行检查:

# pstree|grep vsftpd

测试运行

在成功地安装和配置之后,我们将对该FTP服务器进行简单的测试运行,示例如下:

# ftp liyang

Connected to liyang.

220 (vsFTPd 1.1.3)

Name (liyang:root): anonymous

331 Please specify the password.

Password:

230 Login successful. Have fun.

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 20 500 100 400 Jun 04 16:14 mp3

drwxr-xr-x 3 500 100 464 Feb 09 21:28 test

drwxr-xr-x 57 500 100 5143 Jun 15 19:23 working

226 Directory send OK.

上述过程测试了FTP服务器的成功运行,并且浏览了服务器上的几个文件夹。我们注意到,vsftpd的安装和配置都很简单,但它提供了很多特性和很高的安全性。一个非常显著的例子就是vsftpd是在chroot模式下工作的。chroot模式就是登录的用户单独指定一个固定的目录,这个目录一般是用户登录的主目录。在使用过程当中,用户被限制不能访问除那个目录之外的其他任何程序和文件,所以这样就使得在系统中潜在的攻击者被严格地和其他用户目录空间隔离开来,从而不能破坏提供服务的FTP服务器。这样即算出现攻击事件,也极大地缩小了受损的范围空间和大部分的程序文件,从而提高了系统的安全性。

当然,本文仅仅是对vsftpd的配置使用和启动作了简单的介绍,这个服务器还提供了大量的可供设置的选项,包括基本性能的配置、安全选项的使用、基于本地用户的访问控制、基于主机的访问控制策略等等,这些都需要用户在长期的实践过程当中加以摸索和总结,才能极大地发挥这个FTP服务器的性能和安全效果。

下期话题预报:由于没有对代理服务器的访问控制策略做全面细致的配置,导致用户可以随意地通过代理服务器访问许多非法站点,而且这些行为往往很难追踪,给管理工作带来极大不便。下期,李洋博士将介绍Linux下非常著名、常用的Squid代理服务器的使用,并着重讲述如何使用其提供的访问控制策略,来保证代理服务器的合法使用。

链接

FIP基本原理

FTP的通信过程分为用户验证、建立控制通道、建立数据通道、数据传输、关闭通道几个阶段。FTP 的连接控制使用 TCP (Transmission Control Protocol, 传输控制协议),它保障了数据的可靠传输。因此,FTP 在数据传输中不需要关心分组丢失和数据错误检测。因为 TCP 保障了每个分组都顺序地、没有错误地、无重复地到达。

FTP 中根据发送方式的不同分为三种不同的传输类型:流(Stream)、块(Block)、压缩(Compressed)。其中,流(stream)模式以end-of-file (EOF)标志传输的结束,另两种传输模式以 end-of-record (EOR)来标志传输的结束。另外还有两种不同的传输模式:ASCII、Binary(二进制)。ASCII模式用于文本文件的传输,而二进制模式用于程序和类似的数据的传输。用户不需要选择特定的传输模式,现在所有的客户端都可以识别传输的文件的类型自动切换模式。

用户验证使用的用户名和密码都是使用明文传输的,这是一个非常严重的安全隐患。黑客可以通过使用Sniffer等抓包工具对该用户验证过程采用“中间人”攻击、会话劫持等攻击手段来获取用户和密码,破坏正常的数据传输。这以后,人们逐渐认识到该协议的脆弱性。直到1997年10月,RFC2228[2]的发布才定义了FTP的安全性补充规范。


如果您有什么疑问,可以至论坛提出或者解答他人的疑问   返回页面顶部

】【关闭窗口
·上一篇文章:
·下一篇文章:
·导航: 电脑时代在线 · 服务器频道 · 业界观察
相关文章
 
搞笑自拍|图片故事|美女图库|体坛宝贝|明星爆料|世界奇观|风光摄影|历史回忆|大千世界
Photshop超炫图片
advertisement
关于站点 - 广告服务 - 联系我们 - 版权隐私 - 免责声明 - 合作伙伴 - 程序支持 - 网站地图 - 返回顶部  
网站文本地图
  版权所有:电脑时代在线 2005-2007 欢迎各种媒体转载我们的原创作品[转载请注明出处]
copyright © 2005-2007 www.PCvz.com online services. all rights reserved. 蜀ICP备05015578
Template designed by LaoJiang. Optimized for 1024x768 to Firefox,Opera and MS-IE. Site powered by EQL.
红盾
热爱电脑,热爱生活
拥有电脑,拥有生命
让我们享受拥有电脑的时光