1. FTP简单介绍

文件传输协议FTP(File Transfer Protocol),即能够让用户在互联网中上传、下载文件的文件协议

FTP客户端   FTP服务器端

FTP占用两个端口号(21,20) 

   21端口:命令控制,用于接受客户端执行的FTP命令。 

   20端口:数据传输,用于上传、下载文件数据。

FTP数据传输类型:

    主动模式:FTP服务器端主动向FTP客户端发起连接请求。

    被动模式:FTP服务器等待FTP客户端的连接请求。

2. 安装Vsftpd服务程序

   Vsftpd即“Very Secure FTP Dawmon”一款运行在Unix操作系统的FTP服务端程序,

 主打:安全性、完全开源免费、速度高、支持IPv6、虚拟用户功能等。

   #yum install vsftpd -y

   #iptables -F        //清空防火墙规则

   #service iptables save   //保存清空后的防火墙规则

    /usr/sbin/vsftpd      主程序            

    /etc/vsftpd/ftpusers  & /etc/vsftpd/user_list   //用户禁止登陆列表

    /etc/vsftpd/vsftpd.conf     //主配置文件

配置文件参数作用详解:

listen=yes|no             //是否以独立运行方式监听服务

listen_address=ip_地址    //设置要监听的ip地址

listen_port=21            //设置ftp的监听端口

download_enable=yes|no    //是否运行下载

userlist_enable=yes|no    //是否启用“禁止登陆用户名单”

max_client=0              //最大客户端连接数,0位不限制

anonymous_enable=yes| no  //是否允许匿名用户访问

anon_upload_enable=yes|no //是否允许匿名用户上传文件

anon_umask=022            //匿名用户上传文件的umask值

anon_root=/var/ftp        // 匿名用户的ftp根目录

anon_mkdir_write_enable=yes|no   //是否开放匿名用户创建目录   

anon_other_write_enable=yes|no   //是否开放匿名用户其他写入权限

local_enable=yes|no        //是否允许本地用户登录ftp  

local_umask=022

local_root=/var/ftp

chroot_local_user=yes|no   //是否将用户权限禁锢在ftp目录,安全

3. Vsftpd的三种验证方式

    匿名访问:任何人无需验证口令即可登录ftp服务器。

   

    本地用户:使用ftp服务器中的账号、密码信息。

    匿名用户:创建的独立的ftp账号资料。

   

 3.1 匿名访问模式

    vim /etc/vsftpd/vsftp.conf

   -------------------------------------

        anonymous_enable=yes

        anon_upload_enable=yes

        anon_mkdir_write_enble=yes

        anon_other_wite_enable=yes

        write_enbale=yes

-----------------------------------------

    服务器端:chown ftp /var/ftp/pub         //修改pub目录宿主

              setenforce=0                  //关闭selinux

              vim /etc/selinux/conf 

   

                     

           

       

              systemctl restart vsftpd

     客服端配置:yun install ftp -y

                 ftp 192.168.100.10(服务器ip)

                 anonymous

3.2 本地用户模式

vim /etc/vsftpd/vsftp.conf

   -------------------------------------

      anonymous_enable=no

      local_enable=yes

      write_enable=yes

      userlist_deny=yes

      userlist_enable=yes

      pam_service_name=vsftpd

-----------------------------------------

       systemctl restart vsftpd

       useradd jerry && echo "jerry" | passwd --stdin jerry   //添加userlist外的用户

       iptables -F

       setenforce=0


--------------------------------

3.3 虚拟用户模式(最安全)

    3.3.1 建立虚拟FTP用户数据库文件

          cd /etc/vsftpd

          vim myvuser.list      //单数行账号   双数为密码

              Jerry

              Jerry

         

          db_load -T -t hash -f myvuser.list myvuser.db   //使用dbload命令用hash算法生成数据库文件myvuser.db

          chmod 600 myvuser.db     //修改权限

          rm -f myvuser.list

   3.3.2 创建FTP根目录及虚拟用户映射的系统用户

           useradd -d /var/ftproot -s /sbin/nologin virtual     //创建默认文件根目录/var/ftproot

           ls -ld /var/ftproot/

           chmod -Rf 755 /var/ftproot/

   3.3.3 建立支持虚拟用的PAM认证文件

           vim /etc/pam.d/vsftpd.u

                auth required pam_userdb.so.db=/etc/vsftpd/myvuser //myvuser不加后缀

                account required pam_userdb.so.db=/etc/vsftpd/myvuser

   3.3.4 在vsftpd.conf文件中添加支持配置

---------- -------------------------------------   

anonymous_enable=NO

local_enable=YES

guest_enable=YES

guest_username=virtual

pam_service_name=vsftpd.vu                  //指定pam文件

write_enable=YES

allow_writeable_chroot=YES                  //允许根目录可写

user_config_dir=/etc/vsftpd/myvusers_dir

-----------------------------------------------

    3.3.5 为虚拟用户设置不同的权限

............................................................

          vim /etc/vsftpd/vsftpd.conf

              user_config_dir=/etc/vsftpd/myvusers_dir  //创建用户独立权限配置文件存放目录

          cd  /etc/vsftpd/myvusers_dir

                 vim Jerry                                     //配置Jerry用户的具体权限

                     anon_upload_enable=YES

                     anon_mkdir_write_enable=YES

                     anon_other_write_enable=YES

......................................................................

    3.3.6 重启 vsftpd服务  systemctl restart vsftpd


4. 可插拔认证模块PAM

      PAM:Pluggable Authentication Modules一种认证机制

      应用  -> PAM api (应用接口层) -> 模块 (鉴别模块层)

          重要pam目录:

                /lib/security:pam         //认证模块

                /etc/pam.d                //针对不同服务定义好的pam配置文件