• Vsftp 服务配置


    FTP连接及传输模式

    • 控制连接:TCP 21 ,用于发送FTP命令信息
    • 数据连接:TCP 20 ,用于上传、下载数据
    • 数据连接的建立类型:主动模式、被动模式

    主动模式:服务器主动发起数据连接

    • 首先由客户端向服务端的21端口建立FTP控制连接
    • 当需要传输数据时,客户端以PORT命令告知服务器"我打开了某端口,你过来连接我" 于是服务器从20端口向客户端的该端口发送请求并建立数据连接

    被动模式:服务器被动等待数据连接

    • 如果客户端所在网络防火墙禁止主动模式连接,通常会使用被动模式
    • 当需要传输数据时,客户端以PORT命令告诉服务器"我要连接你,你要被动等我",于是服务器告知客户端"我打开了某端口,你过来连接我"于是客户端向服务器的该端口(非20端口)发送请求并建立数据连接

    PASV:被动

    FTP连接及传输模式

    • 客户端与服务器建立好数据连接以后,就可以根据从控制连接中发送的FTP命令上传或下载文件了。
    • 在传输文件时,根据是否进行字符转换,分为文本模式和二进制模式
    • 文本模式:又称为ASCII(American Standard Code for Information
      Interchange,美国信息交换标准码)模式,这种模式在传输文件时使用ASCII标准字符序列,一般指用于纯文本文件的传输
    • 二进制模式:又称为Binary模式,这种模式不会转换文件中的字符序列,更适合传输程序、图片等非纯文本字符的文件
    • 使用二进制模式比纯文本模 式更有效率,大多数FTP客户端工具可以根据文件类型自动选择文件的传输模式,而无需用户手工指定

    FTP用户类型:

    1. 匿名用户:用户名为ftp或anonymous,提供任意密码(包括空密码)都可以通过服务器的验证。一般用于公共文件的下载。
    2. 本地用户:直接使用本地的系统用户账号进行验证
    3. 虚拟账户:通过一份独立的用户数据库文件进行登陆验证,将FTP账户的关联性降至最低,为系统提供更好的安全性

    FTP服务器软件的种类

    • 在Windows系统中,常见的FTP服务器软件包括FileZilla、Serv-U等
    • 在Linux系统中,vsftp是目前在Linux/UNIX领域应用十分广泛的一款FTP服务软件
    • Vsftpd服务的名称来源于"Very Secure FTP Daemon",该软件针对安全特性方面做了大量的设计。除了安全性以外,vsftp在速度和稳定性方面表现也相当突出

    FTP客户端工具的种类

    • 最简单的FTP客户端工具莫过于FTP命令程序了
    • 除此以外,还有大量的图形化FTP客户端工具。Windows8中较常用的包括CuteFTP、
      FlashFXP、LeapFTP、Filezilla等
    • 还有一些下载工具软件,如FlashGet、Wget等,包括大多数网页浏览器程序,都支持 通过FTP协议下载文件,但因不具备FTP上传等管理功能,通常不称为FTP客户端工具

    写入权限:阀门理论

    • 文件系统权限与服务配置权限需要同时满足
    • 文件系统权限高于服务配置权限

    $(将里面的执行结果输出)&> /dev/null 屏幕不显示

    搭建匿名访问的FTP服务器

    • 安装vsftp软件包
    • 准备匿名FTP访问的目录
    • 开放匿名用户哦欸只并启动vsftp服务
    • 测试匿名FTP服务器
    yum -y install vsftpd
    chkconfig --level 2345 vsftpd on
    netstat -anyup | grep "vsftpd"
    cd /var/ftp/(pub) 匿名登陆的默认目录(匿名用户或其他人不能有写权限)
    把拥有者改成ftp 有写权限
    vi /etc/vsftpd/vsftpd.conf 配置文件
    
    anonynous_enable=YES    //匿名访问
    write_enable=YES    //是否可写入
    anon_upload_enable=YES  //匿名上传
    anon_mkdir_write_enable=YES //匿名创建目录、
    anon_other_write_enable=YES //除了创建目录其他的写权限(重命名)
    

    登陆:

    • ftp IP
    • get ** 下载文件

    搭建用户验证的FTP服务

    * 基本的本地用户验证
    local_enable=YES
    write_enable=YES
    local_umask=077 //修改本地用户默认权限掩码为077
    chroot_local_user=YES   //开启本地用户的家目录锁定
    
    userlist_enable=YES 启动userlist文件
    userlist_deny=YES (YES里面用户无法登陆,NO里面用户可以登录)
    
    ·ftpusers与user_list用户列表的使用
    (1)ftpusers文件:FTP服务器中的黑名单,优先级高于user_list文件
    (2)user_list文件:此用户列表默认情况下也是黑名单,即在此用户列表中的用户不可访问FTP服务器,但可以通过vsftpd.conf主配置文件的修改将此名单改为白名单,且仅此名单中的用户可以访问。
    
    ·使用user_list用户列表文件(ftpusers只要里面出现的账号就不能登陆)
    

    vsftpd服务的其他常用配置

    • 基于虚拟用户的FTP服务
    • 修改vsftpd服务的监听地址、端口
    • 允许使用FTP服务器的被动模式
    • 限制FTP连接的并发数、传输速率
    • 修改vsftpd服务的监听地址、端口:
    • netstat -antup | grep "vsftpd"
    • 0.0.0.0 所有的IP地址
    vi /etc/vsftpd/vsftpd.conf 
    listen_address=10.10.10.10
    listen_port=222 
    pasv_enable=YES
    pasv_min_port=24500
    pasv_max_port=24600
    
    max_client=200 (最大连接客户端)
    max_per_ip=2 (一个IP最多能打开多少个客户端)
    anon_max_rate=50000
    local_max_rate=200000
    

    修改vsftpd服务的监听地址、端口

    建立虚拟用户的账号数据库:

    vsftpd服务使用Berkeley

    • DB格式的数据库文件来存放虚拟用户账户,建立这种数据库文件需要用到db_load工具
    • 步骤:
      1. 创建文本格式的用户名、密码列表
      2. 创建Berkeley DB格式的数据库文件
      3. 添加虚拟用户的映射账号,创建FTP根目录
    /etc/vsftpd /
    vi vusers.list 
    用户名
    密码
    用户名 
    密码
    这些用户在Linux中不存在
    
    yum -y install db4-utils-*
    
    db_load -T -t hash -f vusers.list vusers.db
    注:db_load命令-T:允许非Berkeley的程序使用该数据库-t:指定算法(hash:哈希,散列)-f:指定源文件注意:生成的数据库文件必须为“.db”格式
    
    ## 一般吧数据文件和权限文件改为600只有超级用户可读可写
    
    ## 添加虚拟用户的映射账号
    useradd virtual -s /sbin/nologin -d /var/ftproot
    chmod 755 /var/ftproot/
    

    为vsftpd服务添加虚拟用户支持

    • 在vsftpd服务器中,用户认证是通过PAM(Pluggable Authentication
    • Module,可插拔认证模块)机制来实现的,该机制包括灵活的选择认证方式
    • 步骤
      1. 为虚拟用户建立PAM认证文件
      2. 修改vsftpd配置,添加虚拟用户支持
      3. 为不同的虚拟用户建立独立的配置文件
      4. 测试
    #cd /etc/pam.d 
    #cp -a su vsftpd.vu
    #vim vsftpd.vu
    
    auth    required    pam_userdb.so db=/etc/vsftpd/vusers
    account required    pam_userdb.so db=/etc/vsftpd/vusers
    
    #vi /etc/vsftpd/vsftpd.conf 
    ·local_enable=YES
    ·guest_enable=YES
    ·guest_username=virtual
    ·anon_umask=022
    ·pam_service_name=vsftpd.vu
    
    
    #实现每个虚拟用户不同根目录、不同权限的管控(1)创建用户控制目录,并创建虚拟所对应的同名配置文件
    ·mkdir /etc/vsftpd/vusers_dir/
    ·cd /etc/vsftpd/vusers_dir/
    ·vi ***
    
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES
    anon_max_rate=1
    local_root=/var/***
    
    #chown virtual /var/***
    
    ·vi /etc/vsftpd/vsftpd.conf
    user_config_dir=/etc/vsftpd/vusers_dir
    ·/etc/init.d/vsftpd restart
    

    其他配置:

    • listen=YES 是否开启监听段口
    • listen_address=10.10.10.10 监听IP地址
    • listen_port=2121 设置监听端口
    • pasv_enable=YES 是否开启被动模式
    • pasv_min_port=24500 被动模式端口下限
    • pasv_max_port=24600 被动模式端口上限
    • max_client=2000 最大*客户连接数,一般不限制
    • max_per_ip=2 每个IP限制最多打开几个客户端工具,一般不限制
    • anon_max_rate=50000 匿名最大传输速率
    • local_max_rate=20000 本地用户最大传输速率,一般不限制
    魏美龍|DevOps Engineer|will_wei_devops@163.com
  • 相关阅读:
    dom4j修改,获取,增加xml中某个元素的属性值
    SVN功能详解
    采用RPC方式和document方式 开发Axis2的WebService客户端
    记录我电脑的环境变量配置
    Java float保留两位小数或多位小数
    c#中获取服务器IP,客户端IP以及Request.ServerVariables详细说明
    说说Java观察者模式
    2018第12周总结
    聊聊Java反射
    Java注解总结2
  • 原文地址:https://www.cnblogs.com/meilong/p/6719713.html
Copyright © 2020-2023  润新知