一、vsftpd 介绍

   vsftpd 全称为very secure FTP daemon (非常安全的FTP进程),比FTP更安全

       是一种守护进程, 更侧重安全,比其他FTP服务器在安全方面做的更到位

 


   来介绍ftp

   FTP: File Transfer Protocol 文件传输协议的缩写

   FTP:属于C/S架构

   端口:基于tcp的20、21端口

   FTP会话:基于tcp的命令连接会话;基于tcp的数据连接会话。

   FTP工作模式:①服务器工作在主动模式,主动联系客户端 (tcp,20端口)

                ②服务器工作在被动模式,客户端联系服务器(tcp,21端口)


   

   1、vsftpd用户认证

      vsftpd用户:系统用户、虚拟用户、 匿名用户

       

       

   2、vsftpd数据传输安全    

       sftp: ssh提供的的基于ssh协议的ftp;

       ftps: 基于ssl的ftp


   3、vsftpd的响应码(类似于httpd)

       1xx: 信息码

       2xx: 成功状态码

       3xx: 进一步提示补全信息的状态码

       4xx: 客户端错误

       5xx: 服务器端错误



   4、vsftpd的认证文件及认证机制

       认证文件/etc/pam.d/vsftpd

           pam: Plugable Authentication Module插件式认证模块

       pam和nsswith的区别

               nsswitch:名称解析框架

                   模块化:/lib64/libnss*, /usr/lib64/libnss*

                   配置文件:/etc/nsswitch.conf


               pam: 认证框架

                   模块化:/lib64/security/pam*.so

                   配置文件:/etc/pam.conf和/etc/pam.d/*


    5、vsfptd 服务脚本:/etc/rc.d/init.d/vsftpd

       vsfptd 配置文件:/etc/vsftpd/vsftpd.conf

       vsftpd 主程序文件:/usr/sbin/vsftpd

       vsfptd 数据文件:/var/ftp


    6、ftp用户访问ftp服务时应该对其chroot

       从而禁锢用户于其家目录中

           chroot_local_user={Yes|No}

           chroot_list_enable={YES|NO}

           chroot_list_file=/etc/vsftpd/chroot_list

                注意:每行一个用户


    7、vfptd 匿名用户的配置

       anonymous_enable=YES

       anon_upload_enable=YES

       anon_other_write_enable=YES

       anon_mkdir_write_enable=YES


       注意:启用写入功能时,ftp用户对相应的本地文件系统也有相应的写入权限;

           生效的权限取决于文件系统权限和服务权限的交集;


    8、vsftpd 欢迎信息的定义:

       banner_file=/path/to/some_banner_file

       ftp_banner=some string

       dirmessage_enable=yes

           在某个ftp可访问的目录下创建.messages文件


    9、vsftp控制登录用户的机制:

       /etc/vsftpd/ftpusers中的用户都不允许使用ftp服务, 这是在/etc/pam.d/vsftpd中定义;


       user_list配置文件有两种用法:

           黑名单:

               userlist_enable=YES

               userlist_deny=YES

           白名单

               userlist_enable=YES

               userlist_deny=NO


    10、 vsftpd连接限制

         max_clients: 最大并发连接数

         max_per_ip: 每IP可同时发起并发请求


    14、vsftpd传输速率控制

         anon_max_rate: 匿名用户的最大传输速率,单位是“字节/秒”;

         local_max_rate: 本地用户


    15、vsftpd上传文件的umask

         anno_umask: 匿名用户上传文件的umask;

         local_umask:


    16、修改匿名用户上传文件的属主和属组:

        chown_uploads=YES

        chown_username=someuser


    17、vsfptd虚拟用户:

        所有的虚拟用户会映射一个系统用户,访问时的文件目录是为此系统用户的家目录;


        虚拟用户:

           hash编码的文件:

               奇数行为用户名,偶数行为密码


           关系型数据库:

               pam-mysql实现认证


二、安装基于用户认证的vsftpd

 

   1、安装所需程序

     

# yum -y install vsftpd mysql-server mysql-devel pam_mysql

      注意:pam_mysql由epel源提供

   

   2、创建虚拟用户帐户

     

     2.1 准备数据库及相关表

mysql> create database vsftpd;
                                                                                                                                                                                                                                                                                                                                                                                                     
mysql> grant select on vsftpd.* to vsftpd@localhost identified by 'vsfptd';
mysql> grant select on vsftpd.* to vsftpd@127.0.0.1 identified by 'vsfptd';
mysql> flush privileges;
                                                                                                                                                                                                                                                                                                                                                                                                     
mysql> use vsftpd;
mysql> create table users (
    -> id int AUTO_INCREMENT NOT NULL,
    -> name char(20) binary NOT NULL,
    -> password char(48) binary NOT NULL,
    -> primary key(id)
    -> );

      wKioL1MwacaR0PZ0AACjFb68PrM142.jpg

     wKiom1Mwafvy8vWHAAB2a6MQN4c308.jpg

     

   

     2.2 添加测试的虚拟用户

       

mysql> insert into users(name,passwd) values('jun','2597758');
mysql> insert into users(name,passwd) values('shun','2597758');

     

     wKiom1Mwaj6RVSXnAACmQBYhB64909.jpg

     

三、配置vsfptd

   

    3.1 建立pam认证所需文件

     

#vim /etc/pam.d/vsftpd.mysql

     

auth required /lib64/security/pam_mysql.so user=vsftpd passwd=vsftpd host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=passwd crypt=0
account required /lib64/security/pam_mysql.so user=vsftpd passwd=vsftpd host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=passwd crypt=0

   

    3.2 修改vsftpd的配置文件,使其适应mysql认证

     

建立虚拟用户映射的系统用户及对应的目录
#useradd -s /sbin/nologin -d /var/ftproot vuser
#chmod go+rx /var/ftproot
                                                                                                                                                                                                                                               
请确保/etc/vsftpd.conf中已经启用了以下选项
anonymous_enable=YES
local_enable=YES
write_enable=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
chroot_local_user=YES
                                                                                                                                                                                                                                               
而后添加以下选项
guest_enable=YES
guest_username=vuser
                                                                                                                                                                                                                                               
并确保pam_service_name选项的值如下所示
pam_service_name=vsftpd.mysql

     

四、启动vsftpd服务并添加为开机启动

   

#service vsftpd start  重启服务
#chkconfig --add vsftpd 添加为系统进程
#chkcofnig --list vsftpd 查看进程开机状态
#ss -ntl | grep 21        查看端口21是否开启

     

   wKioL1MwbNDRruP1AAByb9rvk6g155.jpg

已添加为开机启动

wKiom1MwbQqSwNsaAABOiB0wT4Q481.jpg

端口为开启启动


五、win7客户端登陆vsftpd服务器测试

  wKioL1Mwbo-T8q6UAAEBQv1HpSM394.jpg

 本机测试

  wKiom1Mwcs6BJCrxAANDdw-bHTM730.jpg

 OK~


本人技术有限,不足之处请大家耐心指出  


ps:每天一点点