IT猫扑网:您身边最放心的安全下载站! 最新更新| 软件分类| 专题汇总| 手机版

您当前所在位置:IT猫扑网 > 服务器 > FTP服务器 > 用vsftpd架设安全的FTP服务器

用vsftpd架设安全的FTP服务器

时间:2015-06-28 00:00 来源:IT猫扑网|http://www.itmop.com/ 作者:网管联盟 我要评论(0)

  在网站的建设中,FTP是一项重要的服务,利用它可以更容易分享有限的软件资源。Linux下有代表性的FTP服务器软件是Wu-FTP、ProFTP及vsftpd。Wu-FTP(Washington University FTP)是由美国华盛顿大学开发的、以效率和稳定性为参考量的FTP软件。它的功能强大,配置较复杂,由于开发时间较早,应用十分广泛,也因此成为黑客们主要的攻击目标。Wu-FTP的早期各级版本不断出现安全漏洞,系统管理员不得不因安全因素而经常对其进行升级。ProFTP针对Wu-FTP的弱项而开发,除了在安全性方面进行了改进外,还具备设置简单的特点,并提供了一些Wu-FTP没有的功能,大大简化了架设和管理FTP服务器的工作。vsftpd则凭借在安全性方面的出色表现,被很多大型网站广为采用。

vsftpd简介

  vsftpd在安全性、高性能及稳定性三个方面有上佳的表现。它提供的主要功能包括虚拟IP设置、虚拟用户、Standalone、inetd操作模式、强大的单用户设置能力及带宽限流等。在安全方面,它从原理上修补了大多数Wu-FTP、ProFTP,乃至BSD-FTP的安装缺陷,使用安全编码技术解决了缓冲溢出问题,并能有效避免&globbing&类型的拒绝服务攻击。目前正在使用vsftpd的官方网站有Red Hat、SuSE、Debian、GNU、GNOME、KDE、Gimp和OpenBSD等。

安装

  本文以1.1.3版本为例进行介绍(这是2002年11月9日发布的最新正式发行版本)。下载地址为ftp://vsftpd.beasts.org/users/cevans/。

1.构建vsftpd

首先解压缩包,代码如下:

$ tar xzvf vsftpd-1.1.3.tar.gz

  进入安装目录cd vsftpd-1.1.3。如果想在以后使用中启用tcp_wrapper功能,可在编译前修改&builddefs.h&文件中的语句,将&#undef VSF_BUILD_TCPWRAPPERS&改为&#define VSF_BUILD_TCPWRAPPERS&。tcp_wrapper功能主要应用于IP管理控制,比如可以为单独的一个IP地址使用特殊优先的FTP配置文件。然后,键入&make&生成一份可执行二进制程序代码。

2.前期准备

vsftpd的默认配置中需要用户&nobody&。添加该用户命令如下:

$ useradd nobody

vsftpd的默认配置中需要目录&/usr/share/empty&。添加该目录的命令如下:

$ mkdir /usr/share/empty/

  匿名FTP需要用户&ftp&的存在,并有一个有效的主目录(不允许用户&ftp&有拥有权和可写权)。如没有此目录则建立它,命令如下:

$ mkdir /var/ftp/
$ useradd -d /var/ftp ftp

3.安装相关配置文件、执行文件、帮助手册页等

运行&make install&,将源代码、帮助手册页等复制到相关路径。如果采用手工复制,命令如下:

$ cp vsftpd /usr/local/sbin/vsftpd
$ cp vsftpd.conf.5 /usr/local/man/man5
$ cp vsftpd.8 /usr/local/man/man8

另外,&make install&不能复制样例配置文件,建议手工复制,命令如下:

$ cp vsftpd.conf /etc

整个安装过程很简单,下面来看看如何操纵vsftpd的强大功能,进行vsftpd.conf文件的配置。

两种运行模式

  像其它守护程序一样,vsftpd提供了standalone和inetd(inetd或xinetd)两种运行模式。简单解释一下,standalone一次性启动,运行期间一直驻留在内存中,优点是对接入信号反应快,缺点是损耗了一定的系统资源,因此经常应用于对实时反应要求较高的专业FTP服务器。inetd恰恰相反,由于只在外部连接发送请求时才调用FTP进程,因此不适合应用在同时连接数量较多的系统。此外,inetd模式不占用系统资源。除了反应速度和占用资源两方面的影响外,vsftpd还提供了一些额外的高级功能,如inetd模式支持per_IP(单一IP)限制,而standalone模式则更有利于PAM验证功能的应用。

1.inetd运行模式

  从某种inetd运行vsftpd可以提供一种不错的功能——per_IP连接限制。这也是vsftpd 1.1.3版本最新推出并推荐的一种运行模式。实现per_IP连接限制要依赖于vsftpd提供的tcp_wrappers支持。如果使用标准的&inetd&,需编辑/etc/inetd.conf文件,并添加下面一行代码:

$ ftp stream tcp nowait root /usr/sbin/tcpd /usr/local/sbin/vsftpd

  确保删除或注释掉任何原存的FTP服务语句行。假如没有安装tcp_wrappers,或不需要使用它,可去掉&/usr/sbin/tcpd&部分。然后重载配置文件,命令如下:

$ kill -SIGHUP 'pidof inetd'

  大多数较新的系统采用的是xinetd超级服务守护进程。使用&vi /etc/xinetd.d/vsftpd& 看一下它的内容,如下:

disable = no
socket_type = stream
wait = no

# 这表示设备是激活的,它正在使用标准的TCP Sockets。

user = root
server = /usr/local/sbin/vsftpd

# 说明服务程序/usr/local/sbin/vsftpd已被用来控制FTP接入请求,并且该程序是作为root身份运行的(可能瞬间拥有过大的特权)。请确信已经把vsftpd二进制执行代码安装在了&/usr/local/sbin&目录下。

per_source = 5
instances  = 200

# 由于安全原因,从一个单一IP地址联入的最大允许数值是5。当前最大连接总数是200。

no_access  = 192.168.1.3

# 地址192.168.1.3将被拒绝访问。

banner_fail = /etc/vsftpd.busy_banner

# 显示给用户当连接被禁止时的文件。不论因任何原因而被拒绝(太多用户,IP被禁止)。

下面一行是产生的例子:

echo &421 Server busy, please try later.& > /etc/vsftpd.busy_banner
log_on_success  += PID HOST DURATION
log_on_failure  += HOST

  这将按照时间顺序日志所有尝试连接的IP地址,无论连接成功与否。假如连接启动了一个FTP服务,其进程ID和使用期也将被载入日志。如果使用的是Red Hat,这个日志信息将出现在/var/log/secure文件中。

最后,重启xinetd,命令如下:

$ /etc/rc.d/init.d/xinetd restart

需要注意的是,&/etc/xinetd.d&目录中仅能开启一个FTP服务。

2.standalone模式

  standalone模式便于实现PAM验证功能。进入这种模式首先要关闭xinetd下的vsftpd,设置&disable = yes&,或者注销掉&/etc/inetd.conf&中相应的行。然后修改&/etc/vsftpd.conf&中的选项为&listen=YES&。

配置vsftpd.conf

  下面来了解一下核心配置文件vsftpd.conf。它的地址为&/etc/vsftpd.conf&,控制语句格式为&语句=值&,注意不要在格式间加入任何空格和标点符号。man手册页中把控制语句分为布尔类(值为YES或NO)、数字类(值为数字)和字符串类(值为字符串)三种。为了管理方便、思路清晰,按照访问权(Access rights)、安全(Security)、功能(Features)和性能(Performance)分成四大类。下面是一个样本配置文件内容,用来说明常用的控制语句:

# Access rights
anonymous_enable=YES 
/*若不想启用匿名访问请修改值为NO*/
local_enable=NO 
/*关闭本地用户登陆服务,指所有非匿名用户*/
write_enable=NO 
/*关闭任何用户的写权限*/
anon_upload_enable=NO 
/*关闭匿名用户上传数据的能力*/
anon_mkdir_write_enable=NO 
/*关闭匿名用户建立目录的能力*/
anon_other_write_enable=NO 
/*关闭匿名用户执行建立和上传之外的写入类命令的操作,比如更
改名字和删除操作的能力*/

# Security
anon_world_readable_only=YES 
/*开启匿名用户只能使用许可权为全部可读的资源*/
connect_from_port_20=YES 
/*从标准端口20触发连接*/
hide_ids=YES 
/*隐藏FTP服务器中用户的ID,用&FTP&取代*/
pasv_min_port=50000 
pasv_max_port=60000 
/*设置pasv传输模式下的端口范围为50000-60000*/

# Features
xferlog_enable=YES 
/*开启日志,记录传输状态到文件/var/log/vsftpd.log*/
ls_recurse_enable=NO 
/*关闭&ls -R&命令,该命令常被用于DoS攻击,非常浪费系统资源,
但&mirror&镜像工具会用到它*/
ascii_download_enable=NO 
/*关闭ASCII模式下载,防止被用于DoS攻击,ASCII下载很消耗CPU负担*/
async_abor_enable=YES 
/*开启支持早期FTP客户端&async ABOR&命令的能力*/

# Porformance
one_process_model=YES 
/*开启每个IP单一进程模式,该模式仅支持具备一定能力的内核,
比如linux kernel 2.4*/
idle_session_timeout=120 
/*踢出空闲了两分钟后的用户*/
data_connection_timeout=300 
/*踢出空闲了五分钟后的下载*/
accept_timeout=60 
/*踢出挂起了一分钟后的passive连接*/
connect_timeout=60 
/*踢出挂起了一分钟后的活动连接*/
anon_max_rate=50000 
/*限止单个用户的下载速度为不超过50kbytes每秒*/

  至此,一个匿名服务器已经可以正常运行了,并且进行了安全方面的设置。实际中,根据FTP

关键词标签:服务器,安全,用户,文件

相关阅读 Linux下FTP的配置与应用 什么是ftp及ftp服务器 FTP出错解决和分析 proftp 安装设定文档 使用Win 2003搭建安全文件服务器 让Proftpd 的数据库模块支持MD5验证

文章评论
发表评论

热门文章 使用Win 2003搭建安全文件服务器 使用Win 2003搭建安全文件服务器 linux服务samba的详细配置 linux服务samba的详细配置 图解Windows xp—FTP服务器配置 图解Windows xp—FTP服务器配置 Linux文件传送命令SCP(Secure Copy) Linux文件传送命令SCP(Secure Copy) 在Windows 2003下搭建FTP服务器 在Windows 2003下搭建FTP服务器 IIS6.0打造FTP服务器完全图文详解 IIS6.0打造FTP服务器完全图文详解

相关下载

人气排行 vsftp配置大全---超完整版 IIS6.0打造FTP服务器完全图文详解 使用Win 2003搭建安全文件服务器 图解Windows xp—FTP服务器配置 linux服务samba的详细配置 在Windows 2003下搭建FTP服务器 FTP登陆错误详解 Windows内置FTP服务器高级配置 Windows XP系统下架设FTP服务器的步骤 不用工具也可以修改Serv-u默认43958端口 使用CesarFTP架设FTP服务器 FTP空间不足 Windows 系统性能监控来报警