• vsftp服务


    Vsftp服务

    vsftp为Linux平台下稳定、快速、安全的FTP软件,它支持IPv6以及SSL加密。

    Vsftpd的安全性主要体现在三个方面呢:

    1、进程分离,处理不同任务的进程彼此是独立进行的;

    2、进程运行时均已最小权限运行;

    3、多数进程都使用chroot进行了禁锢,防止客户端访问非法共享目录。

    FTP服务基础

    FTP(File Transfer Protocol,文件传输协议)是典型的C/S结构的应用层协议,需要由服务端软件、客户端软件两个部分共同实现文件传输功能。

    ftp服务器端不支持个客户端同时对自己进行操作。

    FTP服务器默认使用TCP协议的20、21端口与客户端进行通信。20端口用于建立数据连接,并传输数据;21端口用于建立控制连接,并传输FTP控制命令。根据FTP服务器在建立

    数据连接过程中的主、被动关系,FTP数据连接分为主动模式和被动模式:

    主动模式

    1、  客户端随机开启大于1024的X端口与服务器的21端口建立连接通道,通道建立后,客户端随时可以通过该通道发送上传和下载的命令

    2、  当需要传输数据时,客户端会再开启一个大于1024的随机端口Y,并将Y端口号通过之前的命令通道传给服务器

    3、  服务器获取到客户端的Y端口后,服务器从20端口向客户端发送请求并建立数据连接。

    被动模式

    1、  客户端随机开启大于1024的X端口与服务器的21端口建立连接通道

    2、  当需要传输数据时,客户端从命令通道发送数据请求要求上传或下载数据

    3、  服务器收到数据请求后会随机开启一个端口Y,并通过命令通道将该端口信息传送给客户端

    4、  客户端在收到服务器发送过来的数据端口Y的信息后,将在客户端本地开启一个随机端口Z,此时客户端再主动通过本机的Z端口与服务器的Y端口进行连接,连接完成后,即可

    进行数据传输

    FTP用户类型

    匿名用户:对应本系统用户账号“ftp”,提供任意密码(包括空密码)可以通过服务器的验证

    本地用户:除了匿名用户以外的其他系统用户

    虚拟用户:位于独立数据库中的FTP用户账号

    lftp

    lftp是一个上传下载ftp文件的工具

    lftp –u name,password x.x.x.x

    help 就可以看到命令列表 

    ls显示远端文件列表(!ls 显示本地文件列表)。 

    cd切换远端目录(lcd 切换本地目录)。 

    get 下载远端文件。

    mirror下载/上传(mirror -R)/同步 整个目录。 

    put 上传文件。

    rm 删除远端文件。 

    bye 退出

    安装与管理vsftpd

    [root@localhost~]# yum –y install vsftpd

    [root@localhost~]# service vsftpd start

    [root@localhost~]# chkconfig vsftpd on

    Vsftpfd相关文件与目录列表

    /etc/logrotate.d/vsftpd  (日志轮转备份配置文件)

    /etc/pam.d/vsftpd  (基于PAM-可插拔认证模块的vsftpd的验证配置文件) 

    /etc/rc.d/init.d/vsftpd  (vsftpd启动脚本,可以使用service调用)

    /etc/vsftpd  (vsftpd软件主目录)

    /etc/vsftpd/ftpusers  (默认的vsftpd黑名单)

    /etc/vsftpd/user_list  (可以通过主配置文件设置该文件为黑名单或白名单)

    /etc/vsftpd/vsftpd.conf  (vsftpd的主配置文件)

    /usr/sbin/vsftpd  (vsftpd主程序)

    /usr/share/doc/vsftpd-2.2.2  (vsftpd文档资料路径)

    /var/ftp  (默认vsftpd共享目录)

    配置文件解析

    Vsftpd配置文件默认位于/etc/vsftpd目录下,vsftpd会自动寻找以.conf结尾的配置文件,并使用此配置文件启动FTP服务。配置文件的格式为:选项=值(中间不可以有任何空格符),以#开头的行会被识别为注释行。 

    1、全局配置

    listen=YES              #是否监听端口,独立运行守护进程

    listen_port=21       #监听入站FTP请求的端口号

    listen_address=0.0.0.0      #监听FTP服务器的IP地址

    write_enable=YES            #是否允许写操作命令,全局开关

    download_enable=YES         #如果设置为NO,则拒绝所有下载请求

    dirmessage_enable=YES       #用户进入目录是否显示消息

    xferlog_enable=YES          #是否开启xferlog日志功能

    xferlog_std_format=YES      #xfelog日志文件格式

    connect_from_port_20=YES       #使用主动模式连接,启用20端口

    pasv_enable=YES             #是否启用被动模式连接,默认为被动模式

    pasv_max_port=24600         #被动模式连接的最大端口号

    pasv_min_port=24500         #被动模式连接的最小端口号

    userlist_enable=YES         #是否启用userlist用户列表文件

    userlist_deny=YES          

    #该选项设置YES,userlist文件为黑名单;设为NO,则只有userlist中的用户可以访问FTP

    dual_log_enable=YES         #是否启用双日志功能,生产两个日志文件

    tcp_wrappers=YES            #是否启用tcp_wrappers

    max_client=2000         #最大允许同时2000客户端连接,0代表无限制

    max_per_ip=0            #每个客户端的最大连接限制,0代表无限制

    Chroot_local_user=yes   #设置本地所有帐户都只能在自家目录里

    Chroot_list_enable=yes 

    #如果只想让部分账户只能待在自家目录里,其他用户不受此限制的话,要借助于一个名为:“vsftpd.chroot_list”的文件,将受限的用户写在此文件里,一行一个账户名。文件名可以改

    Chroot_list_file=/任意指定的路径/vsftpd.chroot_list     #调用限制账户名单文件

    2、匿名用户访问配置

    访问匿名FTP服务器时,不需要密码验证,任何人都可以使用,非常方便,当需要提供公开访问的文件下载资源,或者让用户上传一些不需要保密的数据资料时,可以选择搭建匿名FTP服务器。

    FTP匿名用户对应的系统用户为ftp,其宿主目录/var/ftp也就是匿名访问vftpd服务时所在的FTP跟目录。基于安全性考虑,FTP跟目录的权限不允许匿名用户或其他用户有写入权限

    /var/ftp目录下默认设置了一个名为pub的子文件夹,可以给匿名访问FTP时共上传文件使用,但必须把此目录的宿主改为FTP,才可以使匿名用户ftp对该目录拥有写的权限,以方便上传数据

    anonymous_enable=YES    #开启匿名访问功能

    anon_root=/var/ftp          #匿名访问FTP的跟路径,默认为/var/ftp

    anon_upload_enable=YES      #是否开启匿名用户上传(对应的目录ftp要有写的权限才能上传)

    anon_world_readable_enable=NO  #开启下载功能,默认无法下载

    anon_mkdir_write_enable=YES    #允许匿名用户创建目录(对应的目录ftp要有写的权限才能上传)

    anon_other_write_enable=YES    #匿名用户可以有删除权限

    anon_umask=022                 #设置匿名用户所上传文件的默认权限掩码值

    anon_max_rate=0                #设置匿名用户的最大传输速率(0为无限制),单位为字节/秒

    3、本地用户访问配置

    Vsftpd可以直接使用linux主机的系统用户作为FTP账号,提供基于用户名/密码的验证。用户使用系统用户账号登录FTP服务器后,将默认位于自己的宿主目录中,且在宿主目录中拥有读写权限。

    local_enable=YES     #开启本机账户FTP功能

    local_root=          #设置本地账户访问FTP跟路径,默认为目录

    local_umask=077      #本地账户权限掩码

    local_max_rate=0     #本地账户数据传输率(B /s)

    chroot_local_user=YES   #是否禁锢本地账户根目录

    3、虚拟用户访问配置

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

    Vsftp的服务器对虚拟用户的控制采用了映射的控制方式,将所有的虚拟 用户对应到同一个系统用户,该系统用户宿主目录作为所有虚拟用户登录后共用的FTP根目录,因此还需要添加一个对应的系统用户账号。

    [root@localhost~]# yum install db4-utils  #创建虚拟用户需要db4-utils工具的支持,安装db4-utils,将文本文件转换成数据库文件

    [root@localhost~]# vi /etc/vsftpd/vusers.txt    #建立虚拟FTP用户的账号数据库文件,创建名为vuser.txt的文本文件

    heboan                   #奇数行为用户名,偶数行为上一行用户的密码

    heboan123

    frank

    frank123

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

    [root@localhost vsftpd]# db_load -T -t hash -f /etc/vsftpd/vusers.txt vusers.db

    #将文本文件转换成数据库文件

    [root@localhost vsftpd]# chmod 600 vusers.db

    #为了安全性,只赋予管理员读取和修改这个数据库的权限

    [root@localhost vsftpd]# mkdir  /share #创建虚拟用户的FTP根目录及虚拟用户映射的系统用户,访问根路径,可根据需求在/share目录创建多个目录

    [root@localhost vsftpd]# chmod 755 /share

    [root@localhost vsftpd]# useradd  -d /share  –s  /sbin/nologin  vusers

    useradd:警告:此主目录已经存在

    不从 skel 目录里向其中复制任何文件

    #修改/etc/pam.d/vsftpd,建立支持虚拟用户的PAM认证文件,将原有内容注释并加入以下内容

    [root@localhost vsftpd]# vi  /etc/ pam.d/vsftpd

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

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

    ……

    #因为本环境使用的是64位操作系统,所以验证模块调用的是lib64目录下的文件

     

    pam所要做的管理解释如下:

    1、 账户密码是否正确

    2、 检查账户有效期

    3、 密码复杂度

    4、 检查会话建立时间,可能不在服务时间内

    [root@localhost ~]# mkdir /etc/vsftpd/vuser_conf  #创建目录用来存放单独用户的配置文件

    [root@localhost~]# cd /etc/vsftpd/vuser_conf  #进入目录创建独立的配置文件

    [root@localhost vuser_conf]# touch heboan     #配置文件名与用户名一定要相同

    [root@localhost vuser_conf]# touch frank 

                                    #就算某个用户不单独配置也要为它创建文件,内容为空即可

    [root@localhost vuser_conf]# vi heboan

    local_root=

    anon_upload_enable=YES

    anon_mkdir_write_enable=YES

    anon_world_readable_only=NO

    anon_other_write_enable=YES

    anon_max_rate=512000

    [root@localhost~]# vi /etc/vsftpd/vsftpd.conf  #修改vsftpd.conf文件

    local_enable=YES        #此项必须打开

    guest_enable=YES        #启用用户映射功能

    guest_username=vuser       #将映射用户指为系统(本地)用户vusers

    user_config_dir=/etc/vsftpd/vuser_conf      #指定虚拟用户单独配置文件所在路径

  • 相关阅读:
    工作中收集的工具类函数库
    前端常用应用网站
    angularJs select ng-selected默认选中遇到的坑
    超好用的input模糊搜索 jq模糊搜索,
    angular,,以及深度拷贝问题;JSON.parse,JSON.stringify灵活运用
    vue-router解析,vue-router原理解析
    共享一个PowerDesigner 16.5
    在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。
    C#的Class的几个修饰符
    IntelliTrace调试
  • 原文地址:https://www.cnblogs.com/wq201703/p/6699909.html
Copyright © 2020-2023  润新知