FTP服务,


================FTP服务:
FTP:(File Transfer Protocol)文件传输协议,是TCP/IP协议组中的协议之一;
架构: C/S client/server
    B/S browser/server
链接:
  命令链接--------->command 21号端口
  数据链接---------> data
链接模式:
  主动模式:服务器端从20号端口主动向客户端发出链接请求;  

           

             被动模式 : 服务器端在指定范围内的某个端口被动等待客户端发起链接请求;

               

传输模式:
  文本模式: ASCII模式,以文本序列传输数据;
  二进制模式:Binary模式,以二进制序列传输数据;
服务概述:

        

==============搭建vsftpd服务:

服务器端:

1》安装相关软件包:
  yum -y install vsftpd
  service vsftpd start 开启服务
  lsof -i:21 查看相关端口
  *****:默认情况下我们使用ftp用户登录,只能下载文件,不能上传文件,所以当我们登录ftp服务器后直接进入ftp用户的家目录/var/ftp;新建本地用户,才能实现上          
传和下载文件,上传的文件会在用户的家目录下;

2》新建本地用户,实现上传和下载文件:

        

3》修改配置文件:/etc/vsftpd/vsftpd.conf

       

           

              

               ******man 5 vsftpd.conf 命令可以详细查看配置文件中的各项配置意义
4》客户端登录,并上传下载文件:

       

 

 

  ================匿名用户相关案例:

    

  =================黑白名单:

     

 

  ==========虚拟账户:满足大量账户的访问需求
    如果需要访问FTP的用户不多,则可以直接创建系统账户以满足对FTP访问的请求,但当用户量变得越来越庞大时,继续创建更多的系统账户是不明智的,这时就需要为vsftpd创建虚拟账户;但vsftpd虚拟账户的数据需要保存在Berkeley DB 格式的数据文件中,所以需要安装db4-utils工具来创建这样的数据文件:

1》创建虚拟账户数据库:

         首先需要创建明文密码文件,明文文件奇数行为用户名,偶数行为密码,然后使用db_load工具将其转换为数据库文件,db_load工具需要通过安装db4-utils软件获得,最后可以通过修改文件权限以增强数据资料的安全性;

      

  2》创建PAM文件,设置基于虚拟账户验证:
    Linux一般通过PAM文件设置账户的验证机制,然后通过创建新的PAM文件,使用新的数据文件进行登录验证,PAM文件中的db选项于指定并验证账户和密码的数据库文件,数据库文件无须.db的名称后缀。

       

  3》设置虚拟账户共享目录:
    因为所有的虚拟账户最终都需要映射到一个真实的系统账户,所有这里需要添加一个系统账户并设置家目录,可以设置一份测试文件;
    useradd -s /sbin/nologin -d /home/ftp virtual
    cp /etc/passwd /home/ftp
4》修改主配置文件:
  与匿名用户设置差不多,使用guest_enable选项开启虚拟账户功能;

        

  5》为每个用户设置独立的共享路径:
  通过在主配置文件中使用user_config_dir选项,设置一个基于账户的配置目录,在该目录下可以创建若干个与账户名称同名的文件,并在文件中为此账户设置独立的配置选项,包括权限与共享路径等设置,这样就可以为每个账户作单独的权限设置等操作,当然如果你还需要对权限,限速,并发量等选项进行设置,可以参考匿名账号的设置选项添加至账号独立的配置文件中;

       

  6》重启服务:
  service vsftpd restart

相关测试:

    

  相关命令: mirror 下载文件夹
      mirror -R 上传文件夹
      wget命令解析: 只能用来下载文件,不能用来下载文件夹,下载的文件默认放在当前目录下;

     

          

          

==================常见问题分析:
1》提示错误代码:530 Login incorrect
  说明登录过程中账户验证失败,则可能是因为你使用的是64位操作系统,而pam文件中库文件的调用却使用的是/lib/security/pam_usedb.so,或者是用户名或密码输入有错误;此外,也可能是vsftpd主配置文件中pam_service_name设置的pam文件名称与/etc/pam.d中创建的pam文件名称不一致,导致无法验证成功;

2》提示错误代码:500 OOPS: cannot change directory:/home/ftp/$USER
  该提示代表目录不存在或无权限导致的无法切换至目录,也有可能是由于SELinux导致的无法共享账户家目录,默认SELinux不允许共享家目录;

3》使用windows系统访问主动模式的vsftpd服务器时无法访问成功
  默认windows会使用被动模式连接FTP服务器,如果需要以主动模式连接服务器,需要修改浏览器的属性,方法是查找Internet选项的高级选项卡,找到使用被动FTP,取消该功能即可;

4》账户登录后无法上传数据:
  根据不同的登录类型,检查主配置文件的设置,匿名账号与虚拟账户检查以anon_开头的权限设置,本地账户检查以local_开头的权限设置,并且要确保全局write_enable设置为YES,此外,文件系统目录的权限也需要修改,确保客户端账户有权限访问该目录;
 ll -d /var/ftp

5》启动服务时报错:500 OOPS:bad bool value in config file
  vsftpd 配置文件设置错误,检查文件;配置文件要求每个设置项占用独立的一行,并且不可以有多于 的空格;

==================日志分析与防火墙问题:
日志:

        

             

   安全:

          

 

相关内容