• Linux_vsftpd服务安装及配置(三种登陆方式)


    FTP服务部署

    ftp传输的机制:

    FTP通过21端口与Client端进行指令传输,通过20端口进行数据传输,根据工作模式的不同VSFTP分为主动模式和被动模式2种,大多是情况VSFTP是工作在被动模式下

    主动模式:

    1.Client端以一个大于1024的随机端口向FTP服务器的21号端口发出建立连接请求

    2.Server端收到请求后,会以20端口主动去链接Client端的随机端口+1号端口,如果该端口被占用,则回去找随机端口+2号端口以此类推,直到找Client端空闲的端口

    3.Client端与Server端通过20端口进行数据传输

     ftp主动模式

    被动模式:

    1.Client端以一个大于1024的随机端口向FTP服务器的21号端口发出建立连接请求

    2.Server端会通过21号端口给Client端发送一个类似(xyz,ab)的数值来告诉Client端打开的随机端口,同时打开xyz*256+ab端口

    3.Client端再通过一个随机端口连接Server端的xyz*256+ab端口进行数据传输

     ftp被动模式

    而现实环境中无论是Client端还是Server端都是在防火墙后面,在主动模式下VSFTP会链接Client端的随机+1号端口,Client端显然不会将防火墙上所有随机端口开放;而在被动下问题同样的问题仍然会摆在Server端的防火墙面前,这就需要Server端的防火墙开启连接追踪功能,即放行与21号端口有关联的端口访问请求,这也就是为什么大部分情况下VSFTP是以被动模式工作。

    vsftp部署:

    环境描述:

    服务端系统:CentOS7.5;内存2G;硬盘30G

    客户端系统:Windows10 ; 软件:xftp客户端

    注意:1)每一步的操作路径,不要混乱

    2)  配置的详细介绍在本文章的最后部分展示

    3)本次安装vsftpd以yum的形式进行部署

    Vsftp的登陆类型:

    VSFTP提供了系统用户、匿名用户、和虚拟用户三种不同的登陆方式。所有的虚拟用户会映射成一个系统用户,访问时的文件目录是为此系统用户的家目录;匿名用户也是虚拟用户,映射的系统用户为ftp,详细信息可以通过man vsftpd.conf查看

    1.安装vsftp

    [root@linuxMA ~]# yum -y install vsftpd*

    2.使用rpm –qc 查看vsftpd的配置文件

    [root@linuxMA ~]# rpm -qc vsftpd

    /etc/logrotate.d/vsftpd

    /etc/pam.d/vsftpd

    /etc/vsftpd/ftpusers

    /etc/vsftpd/user_list

    /etc/vsftpd/vsftpd.conf

    #配置文件详解

    /etc/logrotate.d/vsftpd            滚动日志配置文件

    /etc/pam.d/vsftpd                   认证文件,pam全称为Plugable Authentication

    /etc/vsftpd/ftpusers                控制登陆系统用户的机制,出现在该文件中的用户不允许使用ftp服务器,这是在/etc/pam.d/vsftpd中定义的

    /etc/vsftpd/user_list               配合/etc/vsftpd/vsftpd.conf中的userlist_enable=YES和userlist_deny=YES|NO实现黑白名单此处需要注意的是:黑白名单的前提是/etc/vsftpd/vsftpd.conf配置文件中userlist_enable=YES,userlist_deny选项默认为YES(黑名单),即该文件中出现的用户不允许登陆VSFTP,就算手动添加userlist_deny=NO(白名单)即只允许该文件中出现的用户允许登陆VSFTP,在VSFTP启动时依然会去检查/etc/vsftpd/ftpusers文件并且禁止该文件中的用户登录

    /etc/vsftpd/vsftpd.conf             VSFTP主配置文件,所有的配置选项必须顶格写,配置文件中#后带空格的是说明,不带空格的是注释掉的配置选项

    3.将cp命令将配置文件备份

    [root@linuxMA ~]# cd /etc/vsftpd/

    [root@linuxMA vsftpd]# ls

    ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh

    [root@linuxMA vsftpd]# cp vsftpd.conf vsftpd.conf.bak

    [root@linuxMA vsftpd]# ls

    ftpusers  user_list  vsftpd.conf  vsftpd.conf.bak  vsftpd_conf_migrate.sh

    1)配置匿名用户

    [root@linuxMA vsftpd]# vim vsftpd.conf

    write_enable=YES

    anon_umask=022

    anonymous_enable=YES

    anon_upload_enable=YES

    anon_mkdir_write_enable=YES

    anon_other_write_enable=YES (是否允许匿名用户有其他写入权(改名,删除,覆盖)

    dirmessage_enable=YES

    xferlog_enable=YES

    connect_from_port_20=YES

    xferlog_std_format=YES

    listen=YES

    pam_service_name=vsftpd

    userlist_enable=YES

    tcp_wrappers=YES

     #开启vsftp服务,并查看是否启动成功

    [root@linuxMA vsftpd]# systemctl start vsftpd

    [root@linuxMA vsftpd]# netstat -lnpt |grep vsftpd

    tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      34531/vsftpd

    #登陆验证:

    #测试登陆成功:

     

    #修改权限:

    [root@linuxMA ~]# cd /var/ftp/

    [root@linuxMA ftp]# ll

    总用量 0

    drwxr-xr-x 2 root root 6 8月   3 2017 pub

    [root@linuxMA ftp]# chown ftp:ftp pub/

    [root@linuxMA ftp]# ll

    总用量 0

    drwxr-xr-x 2 ftp ftp 21 9月  16 10:16 pub

     

    重点:改变根目录的属主,如果不改变的话,只能访问,其他权限不能生效。因为我们是以ftp用户的身份访问的,而pub默认的属主属组是root

    注意:(1)修改完配置之后需要重启完服务才能生效

               (2)还需要从新从客户端登陆,否则修改后的配置看不到效果。

    2)配置系统用户

    1.创建测试用户zhangsan、lisi 密码都为“123456”

    [root@linuxMA ~]# useradd zhangsan

    [root@linuxMA ~]# useradd lisi

    [root@linuxMA ~]# echo "123456" |passwd --stdin zhangsan

    更改用户 zhangsan 的密码 。

    passwd:所有的身份验证令牌已经成功更新。

    [root@linuxMA ~]# echo "123456" |passwd --stdin lisi

    更改用户 lisi 的密码 。

    passwd:所有的身份验证令牌已经成功更新。

    2.修改配置文件

    [root@linuxMA ~]# vim /etc/vsftpd/vsftpd.conf

    local_enable=YES

    local_umask=077

    chroot_local_user=YES

    allow_writeable_chroot=YES

    write_enable=YES

    dirmessage_enable=YES

    xferlog_enable=YES

    connect_from_port_20=YES

    xferlog_std_format=YES

    listen=YES

    pam_service_name=vsftpd

    userlist_enable=YES

    userlist_deny=NO

    tcp_wrappers=YES

    [root@linuxMA ~]# vim /etc/vsftpd/user_list             //添加用户到白名单

    zhangsan

    lisi

    [root@linuxMA ~]# systemctl restart vsftpd              //重启服务

    #登陆测试:

    #登陆成功:

     #添加并进行测试

    [root@linuxMA ~]# cd /home/zhangsan/

    [root@linuxMA zhangsan]# touch zhangsan.txt

     

    3)配置虚拟用户

    1.建立虚拟FTP用户的帐号

    [root@linuxMA ~]# useradd -s /sbin/nologin vu

    2.创建虚拟用户文件

    [root@linuxMA ~]# cd /etc/vsftpd/

    [root@linuxMA vsftpd]# vim user

    wangwu

    12345

    maliu

    12345

    基数行代表用户名,偶数行代表密码

    3. 通过db_load工具创建出Berkeley DB格式的数据库文件

    [root@linuxMA vsftpd]# db_load -T -t hash -f user user.db

    [root@linuxMA vsftpd]# ls

    ftpusers  user  user.db  user_list  vsftpd.conf  vsftpd.conf.bak  vsftpd_conf_migrate.sh

    db_load -T -t hash -f user user.db

     

    -f 指定数据原文件

    -T 允许非Berkeley DB的应用程序使用文本格式转换的DB数据文件

    -t hash   读取文件的基本方法

    4. 建立支持虚拟用户的PAM认证文件

    [root@linuxMA vsftpd]# vim /etc/pam.d/vsftpd.vu

    加入以下两行

    auth       required     /lib64/security/pam_userdb.so db=/etc/vsftpd/user

    account    required     /lib64/security/pam_userdb.so db=/etc/vsftpd/user

    对应刚才生成user.db的文件

    5.修改配置文件

    [root@linuxMA vsftpd]# vim vsftpd.conf

    write_enable=YES

    dirmessage_enable=YES

    xferlog_enable=YES

    connect_from_port_20=YES

    xferlog_std_format=YES

    listen=YES

    userlist_enable=YES

    tcp_wrappers=YES

    allow_writeable_chroot=YES

    guest_enable=YES

    guest_username=vu

    pam_service_name=vsftpd.vu

    local_enable=YES

    local_umask=077

    chroot_local_user=YES

    virtual_use_local_privs=YES

    user_config_dir=/etc/vsftpd/user_dir

    6. 为用户建立独立的配置目录及文件

    [root@linuxMA vsftpd]# mkdir /etc/vsftpd/user_dir

    [root@linuxMA vsftpd]# ls

    ftpusers  user  user.db  user_dir  user_list  vsftpd.conf  vsftpd.conf.bak  vsftpd_conf_migrate.sh

    [root@linuxMA vsftpd]# cd /etc/vsftpd/user_dir

    [root@linuxMA user_dir]# vim wangwu

    local_root=/etc/vsftpd/data                       //虚拟用户数据的存放路径

     #创建虚拟用户数据存放目录

    [root@linuxMA user_dir]# cd ..

    [root@linuxMA vsftpd]# mkdir data

    [root@linuxMA vsftpd]# chmod 777 data/

     #重启服务

    [root@linuxMA ]# systemctl restart vsftpd

    登陆测试:

     

    #登陆成功。添加文件进行测试

    [root@linuxMA vsftpd]# cd data/

    [root@linuxMA data]# touch wangwu.txt

     

    重点:本地用户和虚拟用户不能同时登录、因为认证方式只有一种

    本地是pam_service_name =vsftpd

    虚拟是pam_service_name =vsftpd.vu

    配置文件详解

    #常用的匿名FTP配置项

    anonymous_enable=YES                         是否允许匿名用户访问

    anon_umask=022                                     匿名用户所上传文件的权限掩码

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

    anon_upload_enable=YES                      是否允许匿名用户上传文件

    anon_mkdir_write_enable=YES               是否允许匿名用户允许创建目录

    anon_other_write_enable=YES               是否允许匿名用户有其他写入权(改名,删除,覆盖)

    anon_max_rate=0                                     限制最大传输速率(字节/秒)0为无限制

    #常用的本地用户FTP配置项

    local_enable=YES                                      是否允许本地系统用户访问

    local_umask=022                                       本地用户所上传文件的权限掩码

    local_root=/var/ftp                                      设置本地用户的FTP根目录

    chroot_list_enable=YES                            表示是否开启chroot的环境,默认没有开启

    chroot_list_file=/etc/vsftpd/chroot_list        表示写在/etc/vsftpd/chroot_list文件里面的用户是不可以出chroot环境的。默认是可以的。

    Chroot_local_user=YES                             表示所有写在/etc/vsftpd/chroot_list文件里面的用户是可以出chroot环境的,和上面的相反。

    local_max_rate=0                                       限制最大传输速率(字节/秒)0为无限制

    #常用的全局配置项

    listen=YES                                                  是否以独立运行的方式监听服务

    listen_address=192.168.4.1                       设置监听FTP服务的IP地址

    listen_port=21                                             设置监听FTP服务的端口号

    write_enable=YES                                      是否启用写入权限(上传,删除文件)

    download_enable=YES                             是否允许下载文件

    dirmessage_enable=YES                           用户切换进入目录时显示.message文件

    xferlog_enable=YES                                   启用日志文件,记录到/var/log/xferlog

    xferlog_std_format=YES                             启用标准的xferlog日志格式,禁用此项将使用vsftpd自己的格式

    connect_from_port_20=YES                       允许服务器主动模式(从20端口建立数据连接)

    pasv_enable=YES                                       允许服务器被动模式

    pasv_max_port=24600                                设置被动模式服务器的最大端口号

    pasv_min_port=24500                                 设置被动模式服务器的最小端口号

    pam_service_name=vsftpd                          用户认证的PAM文件位置

    (/etc/pam.d/vsftpd.vu)

    userlist_enable=YES                                     是否启用user_list列表文件

    userlist_deny=YES                                        是否禁用user_list中的用户

    max_clients=0                                                限制并发客户端连接数

    max_per_ip=0                                                 限制同一IP地址的并发连接数

    tcp_wrappers=YES                                         是否启用tcp_wrappers主机访问控制

    chown_username=root                                   表示匿名用户上传的文件的拥有人是root,默认关闭

    ascii_upload_enable=YES                              表示是否允许用户可以上传一个二进制文件,默认是不允许的

    ascii_download_enable=YES                         这个是代表是否允许用户可以下载一个二进制文件,默认是不允许的

    nopriv_user=vsftpd                                          设置支撑Vsftpd服务的宿主用户为手动建立的Vsftpd用户

    async_abor_enable=YES                                设定支持异步传输功能

    ftpd_banner=Welcome to Awei FTP servers   设定Vsftpd的登陆标语

    guest_enable=YES             设置启用虚拟用户功能

    guest_username=ftpuser         指定虚拟用户的宿主用户

    virtual_use_local_privs=YES        设定虚拟用户的权限符合他们的宿主用户

    user_config_dir=/etc/vsftpd/vconf      设定虚拟用户个人Vsftp的配置文件存放路径

  • 相关阅读:
    [转]VS2010几款超赞的扩展辅助工具总结
    从客户端中检测到有潜在危险的Request.Form 值
    面试系列28 分布式服务接口的幂等性如何设计
    面试系列26 如何基于dubbo进行服务治理、服务降级、失败重试以及超时重试
    面试系列25 dubbo的spi思想是什么
    面试系列24 dubbo负载均衡策略和集群容错策略
    面试系列23
    面试系列22 dubbo的工作原理
    面试系列21 为什么要进行系统拆分
    面试系列20 生产环境中的redis是怎么部署的
  • 原文地址:https://www.cnblogs.com/linuxMA/p/11526928.html
Copyright © 2020-2023  润新知