2012年(12)
分类:
2012-03-01 15:06:37
原文地址:vsftpd服务器的四大高级配置 作者:g_programming
文章来自: vsftpd是一个基于GPL发布的类UNIX类操作系统上运行的的名字(是一种守护进程),可以运行在诸如Linux、BSD、Solaris、-UX以及Irix上面。该服务器支持很多其他传统的FTP服务器不支持的良好特征,本文将介绍该服务使用的一些高级配置方式。 1、虚拟用户使用vsftpd服务器 虚拟用户是指在FTP服务器上拥有账号,并且该账号只能用于文件传输服务的用户,也称作Gue用户。该类用户可以通过输入账号以及口令来进行授权登录。登录入系统后,其登录目录为指定的目录。一般情况下,该类用户既可以下载也可以上传文件。 vsftpd的虚拟用户采用单独的用户名/口令保存方式,与系统账号(passwd/shadow)分离,这大大增强了系统的安全性。vsftpd可以采用数据库文件来保存用户/口令,如hash;也可以将用户/口令保存在数据库服务器中,如MySQL等。vsftpd验证虚拟用户,则采用PAM方式。由于虚拟用户的用户名/口令被单独保存,因此在验证时,vsftpd须要用一个系统用户的身份来读取数据库文件或数据库服务器以完成验证,这就是guest用户,这正如同匿名用户也需要有一个系统用户ftp一样。当然,guest用户也可以被认为是用于映射虚拟用户。 在虚拟用户使用vsftpd服务器之前,要对服务器进行配置,主要包括如下几个步骤: (1)生成虚拟用户口令库文件。 (2)配置生成vsftpd的认证文件。 (3)建立虚拟用户访问所需要的目录并且设定相应的访问权限。 (4)建立配置文件。 (5)重新启动vsftpd服务器。 下面是完成上述五个步骤的基本命令和过程,如下所示: 生成虚拟用户口令库文件
配置生成vsftpd的认证文件 建立虚拟用户访问所需要的目录并且设定相应的访问权限 对vsftpd的主配置文件进行配置 重新启动vsftpd服务器 #service vsftpd restart 经过上面几个步骤的配置后,就可以使用虚拟用户登录vsftpd服务器了,如下所示: 使用创建的虚拟用户liyangsuper,登录成功: 能够浏览虚拟目录/home/ftp里的文件和目录 测试是否能够创建目录 通过以上的测试可以知道,系统关于虚拟用户的默认用户权限与匿名用户的用户权限一致,都只有浏览以及下载的权限,而不具有上传和创建目录等写操作权限。 2、配置vsftpd服务器中chroot 在vsftpd服务器的默认设置中,本地用户可以切换到主目录以外的目录进行浏览访问,这样对于服务器来说是不太安全的,因为任何用户可以随时浏览到别的用户的私有信息,下面介绍如何使用chroot选项来防止这种情况的发生。 与该功能相关的选项主要包括: chroot_local_user chroot_list_enable chroot_list_file 可以通过如下两种方法来设置chroot,从而杜绝上述不安全的情况发生: (1)设置所有的本地用户执行chroot,只要将/etc/vsftpd/vsftpd.c文件中的chroot_local_ user值置为YES,即chroot_local_user=YES。 (2)设置指定的用户执行chroot,按照如下方法进行设置: 设置后,只有/etc/vsftpd.chroot_list文件中指定的用户才能够执行chroot命令。 3、配置vsftpd服务器在非标准端口工作 在使用FTP服务的过程中,可以使该服务在非标准端口(非21端口)工作,不过要完成这项工作,须要使vsftpd服务器运行在独立启动方式下,而且要配置vsftpd的主配置文件/etc/vsftpd/vsftpd.conf,将listen_port=或者是其他端口号的选项加入该文件即可,然后要重新启动vsftpd守护进程: #service
vsftpd restart 下面是对该功能进行实例验证: 使用匿名用户登录到服务器的10003端口,成功: 测试以前使用的21端口,该端口已经不再有用: # ftp
127.0.0.1 ftp: connect:
Connection refused 4、配置虚拟FTP服务器 所谓虚拟FTP服务器,是指一台机器上有多个IP地址,并且可以向外提供多FTP服务,这些服务器在逻辑上是独立的,有不同的访问控制表和不同的下载内容。 配置虚拟FTP服务器的步骤如下所示: (1)为一个服务器配置多个IP地址。假设原来的主机内部地址为210.77.27.222,可再绑定一个IP地址如下: 向添加一个新的IP210.77.27.223 #/sbin/ifconfig
eth0:0 210.77.27.223 up (2)创建虚拟FTP服务器的根目录,并确保/var/newftp和/var/newftp/pub目录的拥有者和组均为root,掩码为755。 #mkdir -p
/var/newftp/pub #chmod 755
/var/newftp #chmod 755
/var/new/ftp/pub (3)增加虚拟FTP服务器的匿名用户账号。原先的FTP服务器使用系统用户ftp作为其匿名用户账号。需要增加一个newftp用于虚拟FTP服务器。 useradd -d
/var/newftp -M newftp (4)创建虚拟FTP服务器的配置文件。复制原来的vsftpd.conf作为虚拟FTP服务器的配置文件,并修改相关参数。 #cp
/etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd2.conf 新添或修改以下参数: listen=YES listen_address=210.77.27.223 ftp_username=newftp 此处需要特别注意:由于vsftpd默认是*所有的IP地址,当设定基于IP的虚拟FTP服务器时,为防止原来的FTP服务器与虚拟FTP服务器发生*上的冲突,原FTP服务器须要指定*的IP地址。在这里,原来的配置文件中就要设置listen_address=//向接口添加一个新的IP210.77.27.222。 (5)启动和测试虚拟FTP服务器。 可以使用命令同时启动或关闭原FTP服务器和新加的虚拟FTP服务器,如下: #service
vsftpd restart Shutting down
vsftpd:
[ OK ] Starting
vsftpd for
vsftpd2:
[ OK ] Starting
vsftpd for
vsftpd:
[ OK ] 启动成功后,就可以对该虚拟服务器登录进行测试,如下面所示: 测试以127.0.0.1登录: # ftp
127.0.0.1 ftp: connect:
Connection refused ftp> bye //测试失败,因为该服务器具有两个不同的IP连接 原来的FTP服务器,其IP地址为210.77.27.222,端口号为10003: # ftp
210.77.27.222 10003 Connected to
210.77.27.222 (210.77.27.222). 220 Welcome
to virtual FTP service. 使用匿名用户登录,成功: 连接虚拟FTP服务器,其IP地址为210.77.27.223,端口号为: # ftp
210.77.27.223 10004 Connected to
210.77.27.223 (210.77.27.223). 220 Welcome
to virtual FTP service. 使用匿名用户登录,成功: 进入该登录文件夹: