您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > 第7章VSFTPD服务
1第7章VSFTPD服务27.1VSFTPD概述7.1.1FTP概述1.FTP文件传输协议2.FTP服务在对外提供服务时需要维护两个连接:(1)一个是控制连接,监听TCP21号端口,用来传输控制命令;(2)另一个是数据连接,(在主动传输方式下)监听TCP20端口,用来传输数据。33.FTP服务提供了两种常用的传输方式:(1)一是主动传输方式控制连接的发起方是FTP的客户端,而数据连接的发起方是FTP服务器(2)二是被动传输方式数据连接的发起方也是FTP客户机,与控制连接的发起方是相同的。4•流行的FTP服务器软件有很多种,在Linux环境下常用的有Wu-ftpProftpvsftpd等57.1.2VSFTPD的特点1)安全性高:针对安全性做了严格的、特殊的处理,比其他早期的FTP服务器软件有很大的进步。2)稳定性好:vsftpd的运行更加稳定,处理的并发请求数更多,如,单机可以支持4000个并发连接。3)速度更快:在ASCII模式下是Wu-ftpd的两倍。4)匿名FTP更加简单的配置:不需要任何特殊的目录结构。5)支持基于IP的虚拟FTP服务器。6)支持虚拟用户,而且每个虚拟用户可具有独立的配置。7)支持PAM认证方式。8)支持带宽限制。9)支持tcp_wrappers。67.1.3VSFTPD的安装可以执行如下指令来进行安装:#rpm–ivhvsftpd-2.0.1-5.i386.rpm77.1.4VSFTPD的运行1.vsftpd有两种运行方式:(1)一是作为独立(standalone)的服务进程来运行,即vsftpd独立运行并自己来监听相应的端口;(2)二是由xinetd(超级服务器)来管理,作为xinetd所管理的“小服务”的方式来运行。2.vsftpd的启动方法很简单,只需执行以下指令:#servicevsftpdstart87.2VSFTPD的配置文件•配置文件名及路径是/etc/vsfptd/vsftpd.conf7.2.1VSFTPD默认的配置指令(1)指令格式每条指令的格式都是“option=value”,例如:listen=YES(2)写法要求在vsftpd指令的写法上还需要注意以下两项:1)每条配置指令应该独占一行并且指令之前不能有空格;2)在option、=与value之间也不能有空格。9vsftpd的默认配置文件#cat/etc/vsftpd/vsftpd.conf内容如下:anonymous_enable=YES#允许匿名用户登录local_enable=YES#允许本地用户登录write_enable=YES#允许本地用户具有写权限local_umask=022#设置创建文件权限的反掩码,如此处为022,则新建文件的权限为666-022=644#(rw-r--r--);新建目录的权限为777-022=755(rwxr-xr-x)dirmessage_enable=YES#激活目录显示消息,即每当进入目录时,会显示该目录下的文件.message的内容10xferlog_enable=YES#激活记录上传、下载的日志connect_from_port_20=YES#设置服务器端数据连接采用端口20xferlog_std_format=YES#设置日志文件采用标准格式pam_service_name=vsftpd#设置vsftpd服务利用PAM认证时的文件名称是vsftpduserlist_enable=YES#激活用户列表文件来实现对用户的访问控制listen=YES#设置vsftpd为独立运行模式tcp_wrappers=YES#设置采用tcp_wrappers来实现对主机的访问控制117.2.2测试1)利用默认的配置文件来启动vsftpd服务,执行如下命令:[root@redhat1~]#servicevsftpdstart2)在客户端登录vsftpd服务。[user1@redhat1~]$ftp192.168.1.1Connectedto192.168.1.1.220(vsFTPd2.0.1)Name(192.168.1.1:user1):user1331Pleasespecifythepassword.Password:230Loginsuccessful.RemotesystemtypeisUNIX.Usingbinarymodetotransferfiles.ftp123)下载文件子命令get。ftpgettest2local:test2remote:test2227EnteringPassiveMode(192,168,1,1,96,90)150OpeningBINARYmodedataconnectionfortest2(12bytes).226FilesendOK.12bytesreceivedin0.031seconds(0.38Kbytes/s)ftp4)上传文件子命令put。ftp!lsanaconda-ks.cfginitrdmyDNS.orgtesthello.txtmyadsl.shftpputmyadsl.shlocal:myadsl.shremote:myadsl.sh227EnteringPassiveMode(192,168,1,1,215,243)150Oktosenddata.226FilereceiveOK.71bytessentin0.024seconds(2.9Kbytes/s)137.3VSFTPD的配置示例•VSFTPD支持3类用户:(1)第一类是本地用户(2)第二类是匿名用户,(3)第三类是虚拟用户•这类用户的登录名称一般不是系统的合法用户,•与匿名用户相似之处是全部虚拟用户也仅对应着一个系统账号•但与匿名用户不同之处是虚拟用户的登录名称可以任意。147.3.1匿名FTP服务器1.匿名FTP服务器的配置示例在主机redhat1(192.168.1.1)上配置匿名FTP服务器,并允许匿名用户进行如下操作:下载文件、可将文件上传到mypublic目录中并将上传文件的所有者改为ftpmaster、创建子目录、改变文件的名称。15解决方案如下:(1)创建用户ftpmaster[root@redhat1vsftpd]#useraddftpmaster说明:因为需要将匿名用户上传文件的所有者改为ftpmaster,该用户必须是本地用户,所以先创建。(2)创建匿名上传目录mypublic[root@redhat1vsftpd]#mkdir/var/ftp/mypublic[root@redhat1vsftpd]#chownftp.ftp/var/ftp/mypublic[root@redhat1vsftpd]#ls-l/var/ftptotal24drwxr-xr-x2ftpftp4096Jan514:01mypublic说明:创建用来存放匿名用户上传文件的目录,并将该目录的所有者改为ftp。16(3)编辑/etc/vsftpd/vsftpd.conf在文件末尾增加如下内容:anon_upload_enable=YES#允许匿名上传文件anon_mkdir_write_enable=YES#允许匿名创建目录anon_world_readable_only=NO#此指令的默认值为YES,表示仅当所有用户对该文件都拥有读权限时,才允许匿名用户下载该文件;此处将其值设为NO,则允许匿名用户下载不具有全部读权限的文件anon_other_write_enable=YES#允许匿名用户改名、删除文件chown_uploads=YES#允许匿名用户上传文件chown_username=ftpmaster#将匿名用户上传文件的所有者改为ftpmaster17(4)测试在windows(或Linux)客户端命令行环境下执行如下指令:C:\DocumentsandSettings\Administratorftp192.168.1.210Connectedto192.168.1.210.220(vsFTPd2.0.1)User(192.168.1.1:(none)):anonymous331Pleasespecifythepassword.Password:230Loginsuccessful.ftpcdmypublic250Directorysuccessfullychanged.ftpputb.txt#上传文件b.txt200PORTcommandsuccessful.ConsiderusingPASV.150Oktosenddata.226FilereceiveOK.ftp:7bytessentin0.00Seconds7000.00Kbytes/sec.ftpmkdird1#创建目录d1257/mypublic/d1created18ftpdir200PORTcommandsuccessful.ConsiderusingPASV.150Herecomesthedirectorylisting.-rw-------11049507Jan0507:22b.txtdrwx------214504096Jan0506:41d1226DirectorysendOK.ftp:250bytesreceivedin0.00Seconds250000.00Kbytes/sec.观察dir命令的输出可以发现b.txt的所有者的ID为1049,在vsftpd服务器(redhat1)上执行如下命令:[root@redhat1vsftpd]#grepftpmaster/etc/passwdftpmaster:x:1049:1052::/home/ftpmaster:/bin/bash19•继续在客户端测试目录改名:ftprenamed1d2#将目录d1改名为d2350ReadyforRNTO.250Renamesuccessful.ftp通过以上测试,可以证明功能丰富的匿名FTP服务器配置是成功的。207.3.2配置chroot•VSFTPD提供了chroot指令,可以将用户访问的范围限制在各自的主目录中。•在具体的实现中,针对本地用户进行chroot可以分为两种情况:一种是针对所有的本地用户都进行chroot;另一种是针对指定的用户列表进行chroot。211.对所有本地用户都进行chroot示例•在redhat1(192.168.1.1)上配置VSFTPD服务,使得所有本地用户在登录后都限制在各自的主目录中,而不能切换到其他目录。22解决方案如下:(1)编辑/etc/vsftpd/vsftpd.conf文件,在该文件末尾增加如下一条指令chroot_local_user=YES(2)重新启动VSFTPD服务,进行测试[root@redhat1~]#servicevsftpdrestart[root@redhat1~]#ftp192.168.1.1Connectedto192.168.1.1.220(vsFTPd2.0.1)Name(192.168.1.1:root):user1331Pleasespecifythepassword.Password:230Loginsuccessful.RemotesystemtypeisUNIX.Usingbinarymodetotransferfiles.ftppwd257/232.针对所有指定的用户进行chroot示例•在redhat1(192.168.1.1)上配置VSFTPD服务,使得当本地用户user1、user2、user3在登录VSFTPD服务器之后,都被限制在各自的主目录中,不能切换到其他目录,而其他本地用户则不受此限制。24解决方案如下:(1)编辑/etc/vsftpd/vsftpd.conf文件,在该文件末尾增加如下指令:chroot_local_user=NO#先禁止所有本地用户执行chrootchroot_list_enable=YES#激活执行chroot的用户列表文件chroot_lis
本文标题:第7章VSFTPD服务
链接地址:https://www.777doc.com/doc-1599847 .html