FTP服务的配置与管理(共19页).doc
精选优质文档-倾情为你奉上Vsftpd服务器的配置主要通过修改其主配置文件Vsftpd.conf完成。需要注意的是,更改vsftpd.conf文件后,必须重启Vsftpd服务才能使设置生效。11.3.1 配置vsftpd.conf文件Vsftpd的主配置文件vsftpd.conf位于/etc/目录下。vsftpd.conf文件决定了Vsftpd FTP服务器的主要操作。vsftpd.conf 文件由若干配置选项组成,下面介绍其中重要的配置选项。Ø anonymous_enable=NO/YES是否允许anonymous登录FTP服务器,默认设置为YES(允许)。Ø local_enable=NO/YES是否允许本地用户登录FTP 服务器,默认设置为YES(允许)。Ø write_enable=NO/YES是否允许用户对FTP服务器文件具有写权限,默认设置为YES(允许)。Ø local_umask=022 (或者其他值)设置本地用户的文件生成掩码,默认值为077,也可以根据个人喜好将其设置为其他值。Ø anon_upload_enable= NO/YES是否允许匿名用户上传文件,默认设置为YES(允许)。Ø anon_mkdir_write_enable= NO/YES是否允许匿名用户创建新文件夹。默认设置为YES(允许)。Ø dirmessage_enable=YES是否激活目录欢迎信息功能,当用户首次访问服务器上某个目录时,FTP服务器将显示欢迎信息。默认情况下,欢迎信息是通过目录下的.message文件获得的。Ø xferlog_enable=YES是否启用上传和下载日志的功能。Ø ftpd_banner=Welcome to blah FTP service在FTP服务器中设置欢迎登录信息。当用户登录到FTP服务器后,会看到欢迎信息“Welcome to blah FTP service”。Ø chroot_list_enable=NO/YESchroot_list_file=/etc/vsftpd.chroot_list“chroot”是FTP服务器配置中的重要选项。若“chroot_list_enable”设置为“YES”,Vsftpd将在“chroot_list_file”选项值的位置寻找chroot_list文件,“/etc/vsftpd.chroot_list”文件中包含的用户,在登录后将不能切换到自己目录以外的其他目录,由FTP服务器自动地“chrooted”到用户自己的home目录下。这将使得chroot_list文件中的用户不能随意转到其他用户的FTP home目录下,从而有利于FTP服务器的安全管理和隐私保护。Ø userlist_enable=NO/YESuserlist_deny=NO/YES“userlist_enable”选项默认值为“NO”,此时ftpusers文件中的用户禁止登录FTP服务器。如果userlist_enable设置为“YES”,则user_list文件中的用户允许登录FTP服务器。而如果同时设置了userlist_deny值为“YES”,则user_list文件中的用户将不允许登录FTP服务器。Ø listen=YES如果设置为“YES”,则Vsftpd将以独立模式运行,由Vsftpd自己监听和处理连接请求。11.3.2 vsftpd/ftpusers与vsfptd/user-list文件配置在/etc/目录下的vsftpd/ftpusers和vsftpd/user-list两个文件与主配置文件中的“userlist_enable”和“userlist_deny”选项有着密切联系。两个文件中,每个用户名需占用一行。以下是默认情况下ftpusers文件的内容:# Users that are not allowed to login via ftprootbindaemonadmlpsyncshutdownhaltmailnewsuucpoperatorgamesnobody以下是默认情况下user_list文件的内容:# vsftpd userlist# If userlist_deny=NO, only allow users in this file# If userlist_deny=YES (default), never allow users in this file, and# do not even prompt for a password.# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers# for users that are denied.rootbindaemonadmlpsyncshutdownhaltmailnewsuucpoperatorgamesnobody比较两个文件的内容,会发现它们实际上是一样的。在使用两个文件时的区别在于,当userlist_enable为YES时,如果一个用户名在“vsftpd/user_list”文件中,而同时“userlist_deny”选项为“YES”,则该用户在试图登录FTP服务器时,将不能够登录,甚至连输入密码的提示信息都没有,直接被FTP服务器拒绝。而如果一个用户名在“vsftpd/ftpusers”文件中,同时“userlist_deny”选项为“YES”,则该用户在试图登录FTP服务器时,将能看到输入密码的提示,但即使正确输入密码仍然不能登录FTP服务器。userlist_deny选项和user_list文件一起能够有效地阻止“root”、“apache”和“www”等系统用户登录FTP服务器,从而保证了FTP服务器的分级安全性。11.3.3 匿名FTP设置在登录FTP服务器的用户不确定的情况下,应将FTP服务器设置为允许匿名账号登录的FTP服务器。启用匿名账号,并对匿名账号服务进行管理是匿名FTP设置的主要内容。1启用匿名账号启用匿名账号及之后其他配置,均需要对vsftpd.conf文件进行修改,因此,在开始配置之前应当备份/etc/vsftpd/vsftpd.conf文件,以便于在修改过程中出现无法恢复的错误时,能够恢复到初始设置。对/etc/vsftpd/vsftpd.conf文件做如下修改:anonymous_enable=YESlocal_enable=YESwrite_enable=YESlisten=YES配置好后,需要重新启动Vsftpd。完成上述配置后,Vsftpd将允许匿名账号登录FTP服务器,允许本地账号登录,同时允许匿名用户具有对FTP服务器文件的写权限,并且只能下载文件而不能上传。匿名用户的口令为一个E-mail地址。测试的结果如下:# ftp localhostConnected to .220 (vsFTPd 2.0.5)530 Please login with USER and PASS.530 Please login with USER and PASS.KERBEROS_V4 rejected as an authentication typeName (localhost:root): anonymous331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> ls227 Entering Passive Mode (127,0,0,1,204,140)150 Here comes the directory listing.drwxr-xr-x 2 0 0 4096 Jan 17 2007 pub226 Directory send OK. ftp> cd pub250 Directory successfully changed.ftp> ls227 Entering Passive Mode (127,0,0,1,25,100)150 Here comes the directory listing.-rw-rw-rw- 1 0 0 34 Sep 11 07:48 hello.txt226 Directory send OK.ftp> get hello.txtlocal: hello.txt remote: hello.txt227 Entering Passive Mode (127,0,0,1,181,217)150 Opening BINARY mode data connection for hello.txt (34 bytes).226 File send OK.34 bytes received in 0.0017 seconds (19 Kbytes/s) ftp> !lsbridge.txt hello.txt webalizer.conf ftp> put webalizer.conflocal: webalizer.conf remote: webalizer.conf227 Entering Passive Mode (127,0,0,1,147,155)550 Permission denied.ftp> mkdir test550 Permission denied.下面对以上测试结果做几点说明。Ø Name (localhost:root): anonymous表示用匿名账号登录。Ø ftp> ls 列出匿名账号在FTP服务器上的目录。Ø ftp> cd pub表示更改目录,进入pub文件夹。Ø ftp> get hello.txt用匿名账号下载pub文件夹中的hello.txt文件。Ø ftp> !lsbridge.txt hello.txt webalizer.conf显示刚才下载的文件是否已下载到本地。Ø ftp> put webalizer.conf匿名账号上传webalizer.conf文件失败,不允许匿名账号上传文件。Ø ftp> mkdir test匿名账号创建文件夹失败,不允许匿名账号建立文件夹。2允许匿名账号上传文件若要允许匿名账号上传文件,需要对/etc/vsftpd/vsftpd.conf文件做如下修改:anon_upload_enable=YESanon_mkdir_write_enable=YES即把文件中anon_upload_enable=YES和anon_mkdir_write_enable=YES前的“#”去掉,无须修改其他配置。所谓能上传文件,也就是具有在FTP服务器的本地目录中新建文件和文件夹的功能。为了测试上传文件功能,可以先在/var/ftp目录中建立一个新目录“test”,并设置该文件夹具有写权限。Ø 创建新目录“test”,如图11.4所示。Ø 修改test目录的权限。在“test”上单击鼠标右键,并在弹出的快捷菜单中选择【属性】命令,打开如图 11.5所示的【test属性】对话框,选择【权限】选项卡,设置相应权限。将【所有者】设置为“ftp-FTP User”,【群组】设置为“ftp”,并设置相应的【文件夹访问】、【文件访问】和【执行】权限。 图11.4 新建“test”目录 图11.5 【test属性】对话框Ø 重启Vsftpd服务测试的结果如下:# ftp localhostConnected to .220 (vsFTPd 2.0.5)530 Please login with USER and PASS.530 Please login with USER and PASS.KERBEROS_V4 rejected as an authentication typeName (localhost:root): anonymous331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files. ftp> ls227 Entering Passive Mode (127,0,0,1,68,56)150 Here comes the directory listing.drwxr-xr-x 2 0 0 4096 Sep 11 07:48 pubdrwxr-xr-x 2 14 50 4096 Sep 11 08:09 test226 Directory send OK. ftp> cd test250 Directory successfully changed.ftp> mkdir incoming 257 "/test/incoming" createdftp> ls227 Entering Passive Mode (127,0,0,1,107,221)150 Here comes the directory listing.drwx- 2 14 50 4096 Sep 11 08:19 incoming226 Directory send OK. ftp> !ls1.txt bridge.txt hello.txt webalizer.conf ftp> put 1.txtlocal: 1.txt remote: 1.txt227 Entering Passive Mode (127,0,0,1,45,47)150 Ok to send data.226 File receive OK.361 bytes sent in 0.0018 seconds (2e+02 Kbytes/s)ftp> ls227 Entering Passive Mode (127,0,0,1,231,175)150 Here comes the directory listing.drwx- 2 14 50 4096 Sep 11 08:19 incoming-rw- 1 14 50 361 Sep 11 08:24 1.txt226 Directory send OK.ftp> 下面对以上测试结果做几点说明。Ø drwxr-xr-x 2 14 50 4096 Sep 11 08:09 testls命令后看到前面在pub目录下创建的test目录。Ø ftp> cd test更改当前目录,进入test目录下。Ø ftp> mkdir incoming 257 "/test/incoming" created在test目录下创建incoming目录成功。Ø ftp> put 1.txt将1.txt文件上传到test目录中。Ø -rw- 1 14 50 361 Sep 11 08:24 1.txtls命令后看到1.txt文件上传成功。3仅允许匿名用户访问所谓仅允许匿名用户访问,也就是指需要限制本地账号访问,因此需要对/etc/vsftpd/vsftpd.conf文件做如下修改:# local_enable=YES# write_enable=YES即在文件中local_enable=YES和write_enable=YES的前面加上“#”,无须修改其他配置。对此的测试结果如下:# ftp localhostConnected to .220 (vsFTPd 2.0.5)530 Please login with USER and PASS.530 Please login with USER and PASS.KERBEROS_V4 rejected as an authentication typeName (localhost:root): anonymous331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> cd test250 Directory successfully changed.ftp> bye221 Goodbye. # ftp localhostConnected to .220 (vsFTPd 2.0.5)530 Please login with USER and PASS.530 Please login with USER and PASS.KERBEROS_V4 rejected as an authentication typeName (localhost:root): Kelly530 This FTP server is anonymous only.Login failed.ftp> user teacher530 This FTP server is anonymous only.Login failed.ftp> user root530 This FTP server is anonymous only.Login failed.从测试结果中可以看到,除了anonymous账号可以正常登录外,其他本地账号登录均失败,服务器提示“530 This FTP server is anonymous only”,即服务器仅允许匿名账号登录。4设置欢迎信息常用的欢迎信息包括两种:一种是在登录FTP服务器时显示的欢迎信息,另一种是在更改目录时显示的欢迎信息。欢迎信息的使用,能够让用户在访问FTP服务器时感觉到更友好、更亲切。Ø 设置登录FTP服务器时显示的欢迎信息首先对/etc/vsftpd/vsftpd.conf文件做如下修改:ftpd_banner=Welcome to blah FTP service重启Vsftpd服务后,测试结果如下:# ftp localhostConnected to .220 Welcome to blah FTP service.530 Please login with USER and PASS.530 Please login with USER and PASS.KERBEROS_V4 rejected as an authentication typeName (localhost:root): anonymous331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.从测试结果中可以看到,在登录FTP服务器时,多了一行显示信息“220 Welcome to blah FTP service”。“Welcome to blah FTP service” 即在前面为服务器设置的欢迎信息,用户可以根据需要对此欢迎信息进行修改。Ø 设置更改目录时显示的欢迎信息在需要设置更改目录欢迎信息的目录下,创建.message文件。例如,在“ftp/test/”目录下新建.message文件,写入一行文字“You are welcome!”,保存后关闭,如图11.6所示。图11.6 编辑.message文件内容测试的结果如下:# ftp localhostConnected to .220 Welcome to blah FTP service.530 Please login with USER and PASS.530 Please login with USER and PASS.KERBEROS_V4 rejected as an authentication typeName (localhost:root): anonymous331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> ls227 Entering Passive Mode (127,0,0,1,219,233)150 Here comes the directory listing.drwxr-xr-x 2 0 0 4096 Sep 11 07:48 pubdrwxr-xr-x 3 14 50 4096 Sep 11 08:40 test226 Directory send OK.ftp> cd test250-You are welcome!250 Directory successfully changed.可以看到,当进入“test”目录后,出现“250-You are welcome!”这一行欢迎文字。用户可以根据需要修改.message文件中的内容,以显示不同的欢迎信息。5最大传输速率设置最大传输速率需要对/etc/vsftpd/vsftpd.conf文件进行修改。例如,设置匿名用户的最大传输速率为20Kbps,应添加如下语句:anon_max_rate=20000再如,设置本地账号最大传输率为1Mbps,应添加如下语句:local_max_rate=6服务器最大并发数和用户最大线程数在/etc/vsftpd/vsftpd.conf文件中添加如下语句:max_clients=99max_per_ip=5即可设置服务器允许的最大并发数为99,而每个用户同一时段的最大并发线程数为5。7禁止某些IP段的主机匿名访问服务器如果希望限制某些主机对FTP服务器的匿名访问,可以采用以下方法。Ø 确认配置文件/etc/vsftpd/vsftpd.conf中有如下语句:tcp_wrappers=YES该语句表明服务器使用tcp_wrappers作为主机访问控制方式。Ø 编辑/etc/hosts.allow文件,增加两行命令:# hosts.allowThis file describes the names of the hosts which are#allowed to use the local INET services, as decided#by the '/usr/sbin/tcpd' server.#vsftpd:192.168.57.1:DENYvsftpd:192.168.57.9:DENY表明限制IP为192.168.57.1和192.168.57.9的主机访问IP为192.168.57.2的FTP服务器。在主机192.168.57.1上测试的结果如下:Microsoft Windows XP 版本 5.1.2600(C) 版权所有 1985-2001 Microsoft Corp.C:Documents and SettingsAdministrator>cdC:>ping 192.168.57.2 Pinging 192.168.57.2 with 32 bytes of data: Reply from 192.168.57.2: bytes=32 time=1ms TTL=64Reply from 192.168.57.2: bytes=32 time<1ms TTL=64Reply from 192.168.57.2: bytes=32 time=24ms TTL=64Reply from 192.168.57.2: bytes=32 time<1ms TTL=64 Ping statistics for 192.168.57.2: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 24ms, Average = 6ms C:>ftp 192.168.57.2Connected to 192.168.57.2.421 Service not available.Connection closed by remote host. 使用“ping”命令时可以看到,FTP服务器192.168.57.2是可以连通的。然而,通过ftp命令对其进行访问时则由于192.168.57.1被设置为限制访问IP,因而无法连接FTP服务器。8用ASCII方式传送数据大多数FTP服务器都选择用ASCII方式传输数据,仅需要修改配置文件/etc/vsftpd/vsftpd.conf就能够实现用ASCII方式传送数据:ascii_upload_enable=YESascii_download_enable=YES以上语句表明允许使用ASCII方式上传和下载文件。9设置数据传输中断间隔时间修改配置文件/etc/vsftpd/vsftpd.conf中的相关语句如下:idle_session_timeout=600该语句表示空闲的用户会话中断时间为600秒,也就是当数据传输结束后,用户连接FTP服务器的时间不应超过600秒。可以根据实际情况对该值进行修改。data_connection_timeout=120该语句表示数据连接超时时间为120秒,也可以根据实际情况对其进行修改。11.3.4 真实账号设置对真实账号访问FTP服务器的设置,主要也是修改配置文件/etc/vsftpd/vsftpd.conf。在前面匿名账号设置中提到的一些配置,在真实账号的设置中也是同样可用的,因此不再赘述。此处主要说明的是与真实账号有关的访问控制设置。在进行设置和测试前,应新建几个用户。选择【系统】|【管理】中的【用户和群组】选项,打开【用户管理者】对话框,新建名为“user1”、“user2”和“user3”的三个用户。然后将user1添加至/etc/vsftpd/ftpusers文件中,将user2添加至/etc/vsftpd/user_list文件中,而user3则不用添加到这两个文件中。1使用用户列表进行访问控制Ø ftpusers文件中的用户不可以访问FTP服务器设置语句如下:userlist_enable=NOuserlist_enable选项的默认值为“NO”,当/etc/vsftpd/vsftpd.conf文件中出现该语句时,ftpusers文件中的用户将被禁止访问FTP服务器。因此,ftpusers文件又被称为“禁止使用Vsftpd的用户列表文件”。测试的结果如下:# ftp localhostConnected to localhost.localdomain.220 (vsFTPd 2.0.5)530 Please login with USER and PASS.530 Please login with USER and PASS.KERBEROS_V4 rejected as an authentication typeName (localhost:root): user1331 Please specify the password.Password:530 Login incorrect.Login failed.ftp> bye221 Goodbye. # ftp localhostConnected to localhost.localdomain.220 (vsFTPd 2.0.5)530 Please login with USER and PASS.530 Please login with USER and PASS.KERBEROS_V4 rejected as an authentication typeName (localhost:root): user2331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> bye221 Goodbye. # ftp localhostConnected to localhost.localdomain.220 (vsFTPd 2.0.5)530 Please login with USER and PASS.530 Please login with USER and PASS.KERBEROS_V4 rejected as an authentication typeName (localhost:root): user3331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp>从结果中可以看到,user1不能访问FTP服务器,而user2和user3均可以正常登录FTP服务器。Ø 仅允许user_list中的用户访问服务器设置语句如下:userlist_enable=YESuserlist_deny=NO当userlist_enable设置为YES,而userlist_deny设置为NO时,FTP服务器仅允许user_list中的用户访问。测试结果如下:# ftp localhostConnected to localhost.localdomain.220 (vsFTPd 2.0.5)530 Please login with USER and PASS.530 Please login with USER and PASS.KERBEROS_V4 rejected as an authentication typeName (localhost:root): user1530 Permission denied.Login failed.ftp> bye221 Goodbye. # ftp localhostConnected to localhost.localdomain.220 (vsFTPd 2.0.5)530 Please login with USER and PASS.530 Please login with USER and PASS.KERBEROS_V4 rejected as an authentication typeName (localhost:root): user2331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> bye221 Goodbye. # ftp localhostConnected to localhost.localdomain.220 (vsFTPd 2.0.5)530 Please login with USER and PASS.530 Please login with USER and PASS.KERBEROS_V4 rejected as an authentication typeName (localhost:root): user3530 Permission denied.Login failed.ftp> 可以看到,user2位于user_list文件中,因此,只有user2能够正常登录FTP服务器,user1和user3均不能访问。Ø ftpusers和user_list文件中的用户均不能访问FTP服务器设置语句如下:userlist_enable=YESuserlist_deny=YES测试结果如下:# ftp localhostConnected to localhost.localdomain.220 (vsFTPd 2.0.5)530 Please login with USER and PASS.530 Please login with USER and PASS.KERBEROS_V4 rejected as an authentication typeName (localhost:root): us