第7章VSFTPD服务培训资料课件_第1页
第7章VSFTPD服务培训资料课件_第2页
第7章VSFTPD服务培训资料课件_第3页
第7章VSFTPD服务培训资料课件_第4页
第7章VSFTPD服务培训资料课件_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第7章VSFTPD服务第一页,共五十九页。17.1 VSFTPD概述7.1.1FTP概述1.FTP文件传输协议2.FTP服务在对外提供服务时需要维护两个连接:(1)一个是控制连接,监听TCP21号端口,用来传输控制命令;(2)另一个是数据连接,(在主动传输方式下)监听TCP20端口,用来传输数据。

第二页,共五十九页。23.FTP服务提供了两种常用的传输方式:(1)一是主动传输方式

控制连接的发起方是FTP的客户端,而数据连接的发起方是FTP服务器(2)二是被动传输方式

数据连接的发起方也是FTP客户机,与控制连接的发起方是相同的。第三页,共五十九页。3流行的FTP服务器软件有很多种,在Linux环境下常用的有Wu-ftpProftp

vsftpd等第四页,共五十九页。47.1.2VSFTPD的特点1)安全性高:针对安全性做了严格的、特殊的处理,比其他早期的FTP服务器软件有很大的进步。2)稳定性好:vsftpd的运行更加稳定,处理的并发请求数更多,如,单机可以支持4000个并发连接。3)速度更快:在ASCII模式下是Wu-ftpd的两倍。4)匿名FTP更加简单的配置:不需要任何特殊的目录结构。5)支持基于IP的虚拟FTP服务器。6)支持虚拟用户,而且每个虚拟用户可具有独立的配置。7)支持PAM认证方式。8)支持带宽限制。9)支持tcp_wrappers。第五页,共五十九页。57.1.3VSFTPD的安装可以执行如下指令来进行安装:#rpm–ivhvs

第六页,共五十九页。67.1.4VSFTPD的运行

1.vsftpd有两种运行方式:(1)一是作为独立(standalone)的服务进程来运行,即vsftpd独立运行并自己来监听相应的端口;(2)二是由xinetd(超级服务器)来管理,作为xinetd所管理的“小服务”的方式来运行。2.vsftpd的启动方法很简单,只需执行以下指令:#servicevsftpdstart第七页,共五十九页。77.2VSFTPD的配置文件配置文件名及路径是/etc/vsfptd/vs7.2.1VSFTPD默认的配置指令(1)指令格式每条指令的格式都是“option=value”,例如:listen=YES(2)写法要求在vsftpd指令的写法上还需要注意以下两项:1)每条配置指令应该独占一行并且指令之前不能有空格;2)在option、=与value之间也不能有空格。第八页,共五十九页。8vsftpd的默认配置文件#cat/etc/vs内容如下: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的内容第九页,共五十九页。9xferlog_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来实现对主机的访问控制第十页,共五十九页。107.2.2测试1)利用默认的配置文件来启动vsftpd服务,执行如下命令:[root@redhat1~]#servicevsftpdstart2)在客户端登录vsftpd服务。[user1@redhat1~]$ftpConnectedto.220(vsFTPd2.0.1)Name(:user1):user1331Pleasespecifythepassword.Password:230Loginsuccessful.RemotesystemtypeisUNIX.Usingbinarymodetotransferfiles.ftp>第十一页,共五十九页。113)下载文件子命令get。ftp>gettest2local:test2remote:test2227EnteringPassiveMode(192,168,1,1,96,90)150OpeningBINARYmodedataconnectionfortest2(12bytes).226OK.12bytesreceivedin0.031seconds(0.38Kbytes/s)ftp>4)上传文件子命令put。ftp>!lsanaconda-ks.cfginitrdmyDNS.orgtesthello.txtmyadsl.shftp>putmyadsl.shlocal:myadsl.shremote:myadsl.sh227EnteringPassiveMode(192,168,1,1,215,243)150Oktosenddata.226OK.71bytessentin0.024seconds(2.9Kbytes/s)第十二页,共五十九页。127.3VSFTPD的配置示例VSFTPD支持3类用户:(1)第一类是本地用户(2)第二类是匿名用户,(3)第三类是虚拟用户这类用户的登录名称一般不是系统的合法用户,与匿名用户相似之处是全部虚拟用户也仅对应着一个系统账号但与匿名用户不同之处是虚拟用户的登录名称可以任意。第十三页,共五十九页。137.3.1匿名FTP服务器1.匿名FTP服务器的配置示例在主机redhat1()上配置匿名FTP服务器,并允许匿名用户进行如下操作:下载文件、可将文件上传到mypublic目录中并将上传文件的所有者改为、创建子目录、改变文件的名称。第十四页,共五十九页。14解决方案如下:(1)创建用户[root@redhat1vsftpd]#useradd说明:因为需要将匿名用户上传文件的所有者改为,该用户必须是本地用户,所以先创建。(2)创建匿名上传目录mypublic[root@redhat1vsftpd]#mkdir/var/[root@redhat1vsftpd]#chown/var/[root@redhat1vsftpd]#ls-l/var/ftptotal24drwxr-xr-x2ftpftp4096Jan514:01mypublic说明:创建用来存放匿名用户上传文件的目录,并将该目录的所有者改为ftp。第十五页,共五十九页。15(3)编辑/etc/vs在文件末尾增加如下内容: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=#将匿名用户上传文件的所有者改为第十六页,共五十九页。16(4)测试在windows(或Linux)客户端命令行环境下执行如下指令:C:\DocumentsandSettings\Administrator>ftp

10Connectedto10.220(vsFTPd2.0.1)User(:(none)):

anonymous331Pleasespecifythepassword.Password:230Loginsuccessful.ftp>cdmypublic250Directorysuccessfullychanged.ftp>putb.txt#上传文件b.txt200PORTcommandsuccessful.ConsiderusingPASV.150Oktosenddata.226OK.ftp:7bytessentin0.00Seconds7000.00Kbytes/sec.ftp>mkdird1#创建目录d1257"/mypublic/d1"created第十七页,共五十九页。17ftp>dir200PORTcommandsuccessful.ConsiderusingPASV.150Herecomesthedirectorylisting.-rw-------11049507Jan0507:22b.txtdrwx------214504096Jan0506:41d1226DirectorysendOK.ftp:250bytesreceivedin0.00Seconds250000.00Kbytes/sec.观察dir命令的输出可以发现b.txt的所有者的ID为1049,在vsftpd服务器(redhat1)上执行如下命令:[root@redhat1vsftpd]#grep/etc/passwd:x:1049:1052::/home/第十八页,共五十九页。18继续在客户端测试目录改名:ftp>renamed1d2

#将目录d1改名为d2350ReadyforRNTO.250Renamesuccessful.ftp>通过以上测试,可以证明功能丰富的匿名FTP服务器配置是成功的。

第十九页,共五十九页。197.3.2配置chrootVSFTPD提供了chroot指令,可以将用户访问的范围限制在各自的主目录中。在具体的实现中,针对本地用户进行chroot可以分为两种情况:一种是针对所有的本地用户都进行chroot;另一种是针对指定的用户列表进行chroot。第二十页,共五十九页。201.对所有本地用户都进行chroot示例在redhat1()上配置VSFTPD服务,使得所有本地用户在登录后都限制在各自的主目录中,而不能切换到其他目录。第二十一页,共五十九页。21解决方案如下:(1)编辑/etc/vs文件,在该文件末尾增加如下一条指令chroot_local_user=YES(2)重新启动VSFTPD服务,进行测试[root@redhat1~]#servicevsftpdrestart[root@redhat1~]#Connectedto.220(vsFTPd2.0.1)Name(:root):user1331Pleasespecifythepassword.Password:230Loginsuccessful.RemotesystemtypeisUNIX.Usingbinarymodetotransferfiles.ftp>pwd257"/"第二十二页,共五十九页。222.针对所有指定的用户进行chroot示例在redhat1()上配置VSFTPD服务,使得当本地用户user1、user2、user3在登录VSFTPD服务器之后,都被限制在各自的主目录中,不能切换到其他目录,而其他本地用户则不受此限制。第二十三页,共五十九页。23解决方案如下:(1)编辑/etc/vsftpd/vs文件,在该文件末尾增加如下指令:chroot_local_user=NO#先禁止所有本地用户执行chrootchroot_list_enable=YES#激活执行chroot的用户列表文件chroot_list_#设置执行chroot的用户列表文件名为/etc/vs经过上述3条指令的设置,只有位于/etc/vs文件中的用户登录VSFTPD服务时才执行chroot功能,其他用户不受限制。(2)创建/etc/vs文件:[root@redhat1vsftpd]#vi/etc/vs增加以下用户:user1user2user3每个用户独占一行。第二十四页,共五十九页。24(3)测试:执行如下命令重新启动VSFTPD服务:[root@redhat1vsftpd#servicevsftpdrestart在本地执行如下指令即可测试:[root@redhat1vsftpd]#Connectedto.220(vsFTPd2.0.1)Name(:root):user1331Pleasespecifythepassword.Password:230Loginsuccessful.RemotesystemtypeisUNIX.Usingbinarymodetotransferfiles.ftp>pwd257"/"ftp>第二十五页,共五十九页。25再换一个不在文件/etc/vs中的用户user4来登录,结果如下:[root@redhat1vsftpd]#Connectedto.220(vsFTPd2.0.1)Name(:root):user4331Pleasespecifythepassword.Password:230Loginsuccessful.RemotesystemtypeisUNIX.Usingbinarymodetotransferfiles.ftp>pwd257"/home/user4"ftp>cd..250Directorysuccessfullychanged.ftp>pwd257"/home"第二十六页,共五十九页。26说明:实际上指令chroot_local_user的功能很有意思,其默认值为NO,当采用chroot用户列表文件/etc/vs时,列在该文件中的用户都将执行chroot;但是如果将chroot_local_user的值设置为YES时,那么位于列表文件/etc/vs中的用户则不执行chroot,而其他未列在此文件中的本地用户则要执行chroot。请自行测试此功能。第二十七页,共五十九页。277.3.3主机访问控制可以利用tcp_wrappers实现主机访问控制。tcp_wrappers的配置文件主要有两个/etc/hosts.allow和/etc/hosts.deny。

第二十八页,共五十九页。281.VSFTPD主机访问控制示例一在redhat1()上配置VSFTPD服务,使得除了以外允许/24网段的其他主机访问此FTP服务器;另外允许来自域的主机登录此FTP服务器。第二十九页,共五十九页。29解决方案如下:(1)编辑VSFTPD的主配置文件,以采用tcp_wrappers提供功能在默认配置文件文件中应该有如下指令:tcp_wrappers=YES(2)编辑/etc/hosts.allow文件,增加如下内容vsvs.,.第三十页,共五十九页。30(3)测试在redhat2()上进行测试:[root@redhat2~]#Connectedto.421Servicenotavailable.ftp>除了上述基本的主机访问控制功能外,tcp_wrappers还可以为VSFTPD提供额外的配置文件。第三十一页,共五十九页。312.VSFTPD主机访问控制示例二在redhat1()上配置VSFTPD服务,针对来自/24网段中的匿名连接,限制其下载的速率限制为5KB/s,而对其他网段中的匿名连接,不做速率限制。第三十二页,共五十九页。32解决方案:利用tcp_wrappers提供的特定功能来实现。(1)编辑VSFTPD的主配置文件/etc/vs,增加如下指令:anon_max_rate=0指令anon_max_rate用来设置匿名用户的最高传输速率,其中值“0”表示不限制,即在主配置文件中没有对匿名用户的传输速率做限制。(2)创建一个新的配置文件/etc/vs。[root@redhat1vsftpd]#vi/etc/vs内容如下:anon_max_rate=5000在额外的配置文件vs中仅设置了anon_max_rate指令,其目的就是为了与主配置文件中相同的指令产生“矛盾”,可以通过后面的实际测试来进一步说明哪条指令最终有效。第三十三页,共五十九页。33(3)编辑hosts.allow文件,增加相关指令。为了减少干扰,可先去掉上例中关于vsftpd的设置,再增加如下指令:vsftpd:192.168.1.:setenvVS/etc/vs这里用到了特殊的环境变量VS,利用它可以为VSFTPD提供额外的配置文件。本例的功能是:当来自网段的主机访问VSFTPD服务器时,加载额外的配置文件/etc/vs。注意:如果额外的配置文件中相关指令与主配置文件vs中的指令相矛盾,则会覆盖掉主配置文件的值,以额外配置文件的值为准。第三十四页,共五十九页。34(4)测试。以下步骤是从客户机redhat2()上登录redhat1(),并下载文件screen.png到本地/tmp目录下的过程:[root@redhat2~]#Connectedto.220(vsFTPd2.0.1)Name(:root):anonymous331Pleasespecifythepassword.Password:230Loginsuccessful.RemotesystemtypeisUNIX.Usingbinarymodetotransferfiles.第三十五页,共五十九页。35ftp>ls227EnteringPassiveMode(192,168,1,1,29,215)150Herecomesthedirectorylisting.drwxr-xr-x3004096Sep1501:33pub-rw-r--r--100171370Jan1111:13screen.pngftp>lcd/tmpLocaldirectorynow/tmpftp>getscreen.pnglocal:screen.pngremote:screen.png227EnteringPassiveMode(192,168,1,1,27,71)150OpeningBINARYmodedataconnectionforscreen.png(171370bytes).226OK.171370bytesreceivedin28seconds(5.6Kbytes/s)

从上面输出的最后一行可以看出,实际下载速率约为5.6KB/s,这与额外配置文件中设置的值接近第三十六页,共五十九页。367.3.4用户访问控制VSFTPD的用户访问控制分为两类:①第一类是传统用户列表文件,在VSFTPD中其文件名是/etc/vs,凡是列在此文件中的用户都没有登录此FTP服务器的权限;②第二类是改进的用户列表文件/etc/vs,该文件中用户能否登录FTP服务器由另外一条指令userlist_deny来决定,这样做更加灵活。第三十七页,共五十九页。371.配置允许root用户登录FTP服务器示例在redhat1()上配置VSFTPD服务,使得可以采用root用户身份成功登录VSFTPD服务器。在此,首先要说明的是:为了安全起见,一般情况下,各种FTP服务器默认都是拒绝采用root身份登录的,VSFTPD服务器更是如此。不过,为了更好地理解用户访问控制的功能,特意采用此示例。第三十八页,共五十九页。38操作步骤如下:(1)启动VSFTPD服务[root@redhat1~]#servicevsftpdstart(2)尝试以root身份登录[root@redhat1~]#Connectedto.220(vsFTPd2.0.1)Name(:root):root530Permissiondenied.Loginfailed.ftp>很明显,root用户的登录请求被拒绝了。第三十九页,共五十九页。39(3)原因查看文件/etc/vs:[root@redhat1~]#cat/etc/vs#Usersthatarenotallowedtologinviaftprootbin…nobody可以发现此文件中包含root,前面提到过凡是列在此文件中用户都被拒绝登录FTP服务器;于是,编辑该文件,删除掉root用户或在其行首加上“#”;然后,再次尝试以root身份登录,结果仍然不让root用户登录。第四十页,共五十九页。40查看文件/etc/vs:[root@redhat2etc]#cat/etc/vs#vsftpduserlist#Ifuserlist_deny=NO,onlyallowusersinthisfile#Ifuserlist_deny=YES(default),neverallowusersinthisfile,and#donotevenpromptforapassword.#Notethatthedefaultvsftpdpamconfigalsochecks/etc/vs#forusersthataredenied.root…nobody原来,在/etc/vs文件中也包含着root用户,默认情况下在此文件中的用户也是不让登录的。解决方法仍然是:编辑此文件删除root所在行或在该行前加上“#”。最后,再次尝试以root身份登录,即可以成功登录。第四十一页,共五十九页。412.配置/etc/vs示例在redhat1()上配置VSFTPD服务,只允许user1、user2、user3三个用户可以登录此VSFTPD服务器。第四十二页,共五十九页。42解决方案:从前面示例可知,与用户访问控制相关的配置文件有两个:/etc/vs和/etc/vs。其中文件/etc/vs的功能是固定的,凡是位于其中的用户肯定是不能访问FTP服务器的,所以该文件中绝不能包含user1、user2、user3这三个用户。(1)编辑传统用户列表文件/etc/vs一般情况下,管理员创建的本地用户默认不会包含在/etc/vs文件中,但还是要检查一遍,如果包含这三个用户,请删除相应的行。第四十三页,共五十九页。43(2)编辑VSFTPD的主配置文件/etc/vs在/etc/vs文件中要有以下三行存在:userlist_enable=YESuserlist_deny=NOuserlist_第四十四页,共五十九页。44(3)编辑/etc/vs文件内容如下:user1user2user3(4)测试分别以user4、user1身份登录,会发现只有user1可以登录,而user4不能登录,原因是/etc/vs文件中包含user1,而不含user4。第四十五页,共五十九页。457.3.5基于不同IP地址的虚拟主机在RHEL4.0中,配置基于IP地址的虚拟主机的方法很简单,即为不同的虚拟主机编写独立的配置文件,需要注意该配置文件必须以“.conf”结尾,并存放在/etc/vsftpd目录下即可。第四十六页,共五十九页。461.VSFTPD虚拟主机配置示例在redhat1()上配置VSFTPD虚拟主机服务。解决方案:前面提到VSFTPD不支持基于名字的虚拟主机,所以本例中采用基于IP地址的虚拟主机。显然,基于IP地址的虚拟主机是以IP地址为单位的,每个虚拟主机对应监听一个IP地址,因此,需要在redhat1配置多个IP地址。第四十七页,共五十九页。47(1)为网卡创建子接口#ifconfigeth0:101netmaskup(2)建立匿名用户

为虚拟FTP服务器建立匿名用户对应的本地帐号并创建相关目录及设置适当权限,执行如下命令:#mkdir-p/var/my功能:创建多级目录/var/my#echo"hi">/var/my功能:创建测试文件welcome.txt#useradd-d/var/myftp-Mmyftp功能:创建本地帐号myftp,并设置其主目录为/var/myftp第四十八页,共五十九页。48(3)创建虚拟FTP服务器的配置文件在/etc/vsftpd目录下,创建虚拟FTP服务器的配置文件vs,并令其监听子接口01。#vi/etc/vs内容如下:tomyvirtual.listen=YESlisten_address=01(4)编辑原来VSFTPD的配置文件/etc/vs在/etc/vs文件末尾增加一行:listen_address=第四十九页,共五十九页。49(5)测试首先,执行如下命令来重新启动VSFTPD服务:[root@redhat1vsftpd]#servicevsftpdrestartShuttingdownvsftpd:[OK]Startingvsftpdforvsftpd:[OK]Startingvsftpdforvs:[OK]接下来,查看VSFTPD服务器进程,执行如下命令:[root@redhat1vsftpd]#psaux|grepvsftpdroot40890.00.35580988pts/0S10:580:00/usr/sbin/vsftpd/etc/vsroot40930.00.35256984pts/0S10:580:00/usr/sbin/vsftpd/etc/vs第五十页,共五十九页。50登录VSFTPD虚拟主机01

[root@redhat1vsftpd]#Connectedto01.220WelcometomyvirtualName(01:root):anonymous331Pleasespecifythepassword.Password:230Loginsuccessful.RemotesystemtypeisUNIX.Usingbinarymodetotransferfiles.ftp>ls227EnteringPassiveMode(192,168,1,101,165,254)150Herecomesthedirectorylisting.drwxr-xr-x2004096Jan1201:58pub-rw-r--r--1003Jan1201:59welcome.txt226DirectorysendOK.ftp>第五十一页,共五十九页。517.3.6监听非标准端口1.方法:只需要在配置文件/etc/vs中增加如下一行:listen_port=21212.然后,重新启动VSFTPD服务,进行测试:[root@redhat1vsftpd]#ftp2121Connectedto.220(vsFTPd2.0.1)Name(:root):user1331Pleasespecifythepassword.Password:230Loginsuccessful.RemotesystemtypeisUNIX.Usingbinarymodetotransferfiles.ftp>第五十二页,共五十九页。527.3.7配置虚拟用户FTP服务器1.VSFTPD虚拟用户的配置示例在redhat1()上,配置支持虚拟用户功能的VSFTPD服务器,并创建三个虚拟用户wangbo、matao、guanzhong,为简单起见,其密码都设置为123456。第五十三页,共五十九页。53解决方案如下:(1)创

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论