第7章VSFTPD服务.ppt_第1页
第7章VSFTPD服务.ppt_第2页
第7章VSFTPD服务.ppt_第3页
第7章VSFTPD服务.ppt_第4页
第7章VSFTPD服务.ppt_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

1 第7章VSFTPD服务 2 7 1VSFTPD概述 7 1 1FTP概述1 FTP文件传输协议2 FTP服务在对外提供服务时需要维护两个连接 1 一个是控制连接 监听TCP21号端口 用来传输控制命令 2 另一个是数据连接 在主动传输方式下 监听TCP20端口 用来传输数据 3 3 FTP服务提供了两种常用的传输方式 1 一是主动传输方式控制连接的发起方是FTP的客户端 而数据连接的发起方是FTP服务器 2 二是被动传输方式数据连接的发起方也是FTP客户机 与控制连接的发起方是相同的 4 流行的FTP服务器软件有很多种 在Linux环境下常用的有Wu ftpProftpvsftpd等 5 7 1 2VSFTPD的特点 1 安全性高 针对安全性做了严格的 特殊的处理 比其他早期的FTP服务器软件有很大的进步 2 稳定性好 vsftpd的运行更加稳定 处理的并发请求数更多 如 单机可以支持4000个并发连接 3 速度更快 在ASCII模式下是Wu ftpd的两倍 4 匿名FTP更加简单的配置 不需要任何特殊的目录结构 5 支持基于IP的虚拟FTP服务器 6 支持虚拟用户 而且每个虚拟用户可具有独立的配置 7 支持PAM认证方式 8 支持带宽限制 9 支持tcp wrappers 6 7 1 3VSFTPD的安装 可以执行如下指令来进行安装 rpm ivhvsftpd 2 0 1 5 i386 rpm 7 7 1 4VSFTPD的运行 1 vsftpd有两种运行方式 1 一是作为独立 standalone 的服务进程来运行 即vsftpd独立运行并自己来监听相应的端口 2 二是由xinetd 超级服务器 来管理 作为xinetd所管理的 小服务 的方式来运行 2 vsftpd的启动方法很简单 只需执行以下指令 servicevsftpdstart 8 7 2VSFTPD的配置文件 配置文件名及路径是 etc vsfptd vsftpd conf7 2 1VSFTPD默认的配置指令 1 指令格式每条指令的格式都是 option value 例如 listen YES 2 写法要求在vsftpd指令的写法上还需要注意以下两项 1 每条配置指令应该独占一行并且指令之前不能有空格 2 在option 与value之间也不能有空格 9 vsftpd的默认配置文件 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的内容 10 xferlog enable YES 激活记录上传 下载的日志connect from port 20 YES 设置服务器端数据连接采用端口20 xferlog std format YES 设置日志文件采用标准格式pam service name vsftpd 设置vsftpd服务利用PAM认证时的文件名称是vsftpduserlist enable YES 激活用户列表文件来实现对用户的访问控制listen YES 设置vsftpd为独立运行模式tcp wrappers YES 设置采用tcp wrappers来实现对主机的访问控制 11 7 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 ftp 12 3 下载文件子命令get ftp gettest2local test2remote test2227EnteringPassiveMode 192 168 1 1 96 90 150OpeningBINARYmodedataconnectionfortest2 12bytes 226FilesendOK 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 226FilereceiveOK 71bytessentin0 024seconds 2 9Kbytes s 13 7 3VSFTPD的配置示例 VSFTPD支持3类用户 1 第一类是本地用户 2 第二类是匿名用户 3 第三类是虚拟用户这类用户的登录名称一般不是系统的合法用户 与匿名用户相似之处是全部虚拟用户也仅对应着一个系统账号但与匿名用户不同之处是虚拟用户的登录名称可以任意 14 7 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 将匿名用户上传文件的所有者改为ftpmaster 17 4 测试在windows 或Linux 客户端命令行环境下执行如下指令 C DocumentsandSettings Administrator ftp192 168 1 210Connectedto192 168 1 210 220 vsFTPd2 0 1 User 192 168 1 1 none anonymous331Pleasespecifythepassword Password 230Loginsuccessful ftp cdmypublic250Directorysuccessfullychanged ftp putb txt 上传文件b txt200PORTcommandsuccessful ConsiderusingPASV 150Oktosenddata 226FilereceiveOK ftp 7bytessentin0 00Seconds7000 00Kbytes sec ftp mkdird1 创建目录d1257 mypublic d1 created 18 ftp dir200PORTcommandsuccessful 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 bash 19 继续在客户端测试目录改名 ftp renamed1d2 将目录d1改名为d2350ReadyforRNTO 250Renamesuccessful ftp 通过以上测试 可以证明功能丰富的匿名FTP服务器配置是成功的 20 7 3 2配置chroot VSFTPD提供了chroot指令 可以将用户访问的范围限制在各自的主目录中 在具体的实现中 针对本地用户进行chroot可以分为两种情况 一种是针对所有的本地用户都进行chroot 另一种是针对指定的用户列表进行chroot 21 1 对所有本地用户都进行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 ftp pwd257 23 2 针对所有指定的用户进行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 list file etc vsftpd chroot list 设置执行chroot的用户列表文件名为 etc vsftpd chroot list经过上述3条指令的设置 只有位于 etc vsftpd chroot list文件中的用户登录VSFTPD服务时才执行chroot功能 其他用户不受限制 2 创建 etc vsftpd chroot list文件 root redhat1vsftpd vi etc vsftpd chroot list增加以下用户 user1user2user3每个用户独占一行 25 3 测试 执行如下命令重新启动VSFTPD服务 root redhat1vsftpd servicevsftpdrestart在本地执行如下指令即可测试 root redhat1vsftpd ftp192 168 1 1Connectedto192 168 1 1 220 vsFTPd2 0 1 Name 192 168 1 1 root user1331Pleasespecifythepassword Password 230Loginsuccessful RemotesystemtypeisUNIX Usingbinarymodetotransferfiles ftp pwd257 ftp 26 再换一个不在文件 etc vsftpd chroot list中的用户user4来登录 结果如下 root redhat1vsftpd ftp192 168 1 1Connectedto192 168 1 1 220 vsFTPd2 0 1 Name 192 168 1 1 root user4331Pleasespecifythepassword Password 230Loginsuccessful RemotesystemtypeisUNIX Usingbinarymodetotransferfiles ftp pwd257 home user4 ftp cd 250Directorysuccessfullychanged ftp pwd257 home 27 说明 实际上指令chroot local user的功能很有意思 其默认值为NO 当采用chroot用户列表文件 etc vsftpd chroot list时 列在该文件中的用户都将执行chroot 但是如果将chroot local user的值设置为YES时 那么位于列表文件 etc vsftpd chroot list中的用户则不执行chroot 而其他未列在此文件中的本地用户则要执行chroot 请自行测试此功能 28 7 3 3主机访问控制 可以利用tcp wrappers实现主机访问控制 tcp wrappers的配置文件主要有两个 etc hosts allow和 etc hosts deny 29 1 VSFTPD主机访问控制示例一在redhat1 192 168 1 1 上配置VSFTPD服务 使得除了192 168 1 2以外允许192 168 1 0 24网段的其他主机访问此FTP服务器 另外允许来自域的主机登录此FTP服务器 30 解决方案如下 1 编辑VSFTPD的主配置文件 以采用tcp wrappers提供功能在默认配置文件文件中应该有如下指令 tcp wrappers YES 2 编辑 etc hosts allow文件 增加如下内容vsftpd 192 168 1 2 DENYvsftpd 192 168 1 31 3 测试在redhat2 192 168 1 2 上进行测试 root redhat2 ftp192 168 1 1Connectedto192 168 1 1 421Servicenotavailable ftp 除了上述基本的主机访问控制功能外 tcp wrappers还可以为VSFTPD提供额外的配置文件 32 2 VSFTPD主机访问控制示例二在redhat1 192 168 1 1 上配置VSFTPD服务 针对来自192 168 1 0 24网段中的匿名连接 限制其下载的速率限制为5KB s 而对其他网段中的匿名连接 不做速率限制 33 解决方案 利用tcp wrappers提供的特定功能来实现 1 编辑VSFTPD的主配置文件 etc vsftpd vsftpd conf 增加如下指令 anon max rate 0指令anon max rate用来设置匿名用户的最高传输速率 其中值 0 表示不限制 即在主配置文件中没有对匿名用户的传输速率做限制 2 创建一个新的配置文件 etc vsftpd vsftpd other conf root redhat1vsftpd vi etc vsftpd vsftpd other conf内容如下 anon max rate 5000在额外的配置文件vsftpd other conf中仅设置了anon max rate指令 其目的就是为了与主配置文件中相同的指令产生 矛盾 可以通过后面的实际测试来进一步说明哪条指令最终有效 34 3 编辑hosts allow文件 增加相关指令 为了减少干扰 可先去掉上例中关于vsftpd的设置 再增加如下指令 vsftpd 192 168 1 setenvVSFTPD LOAD CONF etc vsftpd vsftpd other conf这里用到了特殊的环境变量VSFTPD LOAD CONF 利用它可以为VSFTPD提供额外的配置文件 本例的功能是 当来自192 168 1 0网段的主机访问VSFTPD服务器时 加载额外的配置文件 etc vsftpd vsftpd other conf 注意 如果额外的配置文件中相关指令与主配置文件vsftpd conf中的指令相矛盾 则会覆盖掉主配置文件的值 以额外配置文件的值为准 35 4 测试 以下步骤是从客户机redhat2 192 168 1 2 上登录redhat1 192 168 1 1 并下载文件screen png到本地 tmp目录下的过程 root redhat2 ftp192 168 1 1Connectedto192 168 1 1 220 vsFTPd2 0 1 Name 192 168 1 1 root anonymous331Pleasespecifythepassword Password 230Loginsuccessful RemotesystemtypeisUNIX Usingbinarymodetotransferfiles 36 ftp 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 226FilesendOK 171370bytesreceivedin28seconds 5 6Kbytes s 从上面输出的最后一行可以看出 实际下载速率约为5 6KB s 这与额外配置文件中设置的值接近 37 7 3 4用户访问控制 VSFTPD的用户访问控制分为两类 第一类是传统用户列表文件 在VSFTPD中其文件名是 etc vsftpd ftpusers 凡是列在此文件中的用户都没有登录此FTP服务器的权限 第二类是改进的用户列表文件 etc vsftpd user list 该文件中用户能否登录FTP服务器由另外一条指令userlist deny来决定 这样做更加灵活 38 1 配置允许root用户登录FTP服务器示例 在redhat1 192 168 1 1 上配置VSFTPD服务 使得可以采用root用户身份成功登录VSFTPD服务器 在此 首先要说明的是 为了安全起见 一般情况下 各种FTP服务器默认都是拒绝采用root身份登录的 VSFTPD服务器更是如此 不过 为了更好地理解用户访问控制的功能 特意采用此示例 39 操作步骤如下 1 启动VSFTPD服务 root redhat1 servicevsftpdstart 2 尝试以root身份登录 root redhat1 ftp192 168 1 1Connectedto192 168 1 1 220 vsFTPd2 0 1 Name 192 168 1 1 root root530Permissiondenied Loginfailed ftp 很明显 root用户的登录请求被拒绝了 40 3 原因查看文件 etc vsftpd ftpusers root redhat1 cat etc vsftpd ftpusers Usersthatarenotallowedtologinviaftprootbin nobody可以发现此文件中包含root 前面提到过凡是列在此文件中用户都被拒绝登录FTP服务器 于是 编辑该文件 删除掉root用户或在其行首加上 然后 再次尝试以root身份登录 结果仍然不让root用户登录 41 查看文件 etc vsftpd user list root redhat2etc cat etc vsftpd user list vsftpduserlist Ifuserlist deny NO onlyallowusersinthisfile Ifuserlist deny YES default neverallowusersinthisfile and donotevenpromptforapassword Notethatthedefaultvsftpdpamconfigalsochecks etc vsftpd ftpusers forusersthataredenied root nobody原来 在 etc vsftpd user list文件中也包含着root用户 默认情况下在此文件中的用户也是不让登录的 解决方法仍然是 编辑此文件删除root所在行或在该行前加上 最后 再次尝试以root身份登录 即可以成功登录 42 2 配置 etc vsftpd user list示例在redhat1 192 168 1 1 上配置VSFTPD服务 只允许user1 user2 user3三个用户可以登录此VSFTPD服务器 43 解决方案 从前面示例可知 与用户访问控制相关的配置文件有两个 etc vsftpd ftpusers和 etc vsftpd user list 其中文件 etc vsftpd ftpusers的功能是固定的 凡是位于其中的用户肯定是不能访问FTP服务器的 所以该文件中绝不能包含user1 user2 user3这三个用户 1 编辑传统用户列表文件 etc vsftpd ftpusers一般情况下 管理员创建的本地用户默认不会包含在 etc vsftpd ftpusers文件中 但还是要检查一遍 如果包含这三个用户 请删除相应的行 44 2 编辑VSFTPD的主配置文件 etc vsftpd vsftpd conf在 etc vsftpd vsftpd conf文件中要有以下三行存在 userlist enable YESuserlist deny NOuserlist file etc vsftpd user list 45 3 编辑 etc vsftpd user list文件内容如下 user1user2user3 4 测试分别以user4 user1身份登录 会发现只有user1可以登录 而user4不能登录 原因是 etc vsftpd user list文件中包含user1 而不含user4 46 7 3 5基于不同IP地址的虚拟主机 在RHEL4 0中 配置基于IP地址的虚拟主机的方法很简单 即为不同的虚拟主机编写独立的配置文件 需要注意该配置文件必须以 conf 结尾 并存放在 etc vsftpd目录下即可 47 1 VSFTPD虚拟主机配置示例在redhat1 192 168 1 1 上配置VSFTPD虚拟主机服务 解决方案 前面提到VSFTPD不支持基于名字的虚拟主机 所以本例中采用基于IP地址的虚拟主机 显然 基于IP地址的虚拟主机是以IP地址为单位的 每个虚拟主机对应监听一个IP地址 因此 需要在redhat1配置多个IP地址 48 1 为网卡创建子接口 ifconfigeth0 1192 168 1 101netmask255 255 255 0up 2 建立匿名用户为虚拟FTP服务器建立匿名用户对应的本地帐号并创建相关目录及设置适当权限 执行如下命令 mkdir p var myftp pub功能 创建多级目录 var myftp pub echo hi var myftp welcome txt功能 创建测试文件welcome txt useradd d var myftp Mmyftp功能 创建本地帐号myftp 并设置其主目录为 var myftp 49 3 创建虚拟FTP服务器的配置文件在 etc vsftpd目录下 创建虚拟FTP服务器的配置文件vsftpd myftp conf 并令其监听子接口192 168 1 101 vi etc vsftpd vsftpd myftp conf内容如下 ftpd banner Welcometomyvirtualftpserver ftp username myftplisten YESlisten address 192 168 1 101 4 编辑原来VSFTPD的配置文件 etc vsftpd vsftpd conf在 etc vsftpd vsftpd conf文件末尾增加一行 listen address 192 168 1 1 50 5 测试首先 执行如下命令来重新启动VSFTPD服务 root redhat1vsftpd servicevsftpdrestartShuttingdownvsftpd OK Startingvsftpdforvsftpd OK Startingvsftpdforvsftpd myftp OK 接下来 查看VSFTPD服务器进程 执行如下命令 root redhat1vsftpd psaux grepvsftpdroot40890 00 35580988pts 0S10 580 00 usr sbin vsftpd etc vsftpd vsftpd confroot40930 00 35256984pts 0S10 580 00 usr sbin vsftpd etc vsftpd vsftpd myftp conf 51 登录VSFTPD虚拟主机192 168 1 101 root redhat1vsftpd ftp192 168 1 101Connectedto192 168 1 101 220WelcometomyvirtualftpserverName 192 168 1 101 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 52 7 3 6监听非标准端口 1 方法 只需要在配置文件 etc vsftpd vsftpd conf中增加如下一行 listen port 21212 然后 重新启动VSFTPD服务 进行测试 root redhat1vsftpd ftp192 168 1 12121Connectedto192 168 1 1 220 vsFTPd2 0 1 Name 192 168 1 1 root user1331Pleasespecifythepassword Password 230Loginsuccessful RemotesystemtypeisUNIX Usingbinary

温馨提示

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

评论

0/150

提交评论