• vsftpd文件服务参数汇总和虚拟用户使用


    FTP文件传输协议

    FTP协议特点

    • 基于C/S结构
    • 双通道协议:数据和命令连接
    • 数据传输格式:二进制(默认)和文本(w文本格式会修改文件内容)

    两种模式:服务器角度
    主动(PORT style):服务器主动连接

    通信:客户端使用随机端口连接服务端21号端口通信

    数据传输:服务端使用20号端口传输数据

    ** 被动(PASV style):客户端主动连接**

    通信:客户端使用使用随机端口连接服务器端21号端口

    数据传输:服务端使用客户端连接信息中的随机端口向客户端发送数据

    • 服务器被动模式数据端口示例:
      227 Entering Passive Mode (192,168,175,138,224,59)
      服务器数据端口为:224*256+59

    FTP服务

    状态码

    • 1XX:信息 125:数据连接打开
    • 2XX:成功类状态 200:命令OK 230:登录成功
    • 3XX:补充类 331:用户名OK
    • 4XX:客户端错误 425:不能打开数据连接
    • 5XX:服务器错误 530:不能登录

    用户认证类型

    • 匿名用户:ftp,anonymous,对应Linux用户ftp
    • 系统用户:Linux用户,用户/etc/passwd,密码/etc/shadow,共享目录为用户家目录
    • 虚拟用户:特定服务的专用用户,独立的用户/密码文件,共享目录位置为其映射的系统用户的家目录
      nsswitch:network service switch名称解析框架
      pam:pluggable authentication module 用户认证
      /lib64/security /etc/pam.d/ /etc/pam.conf

    vsftpd服务应用

    • 用户认证配置文件:/etc/pam.d/vsftpd
    • 服务脚本: /usr/lib/systemd/system/vsftpd.service
      /etc/rc.d/init.d/vsftpd
    • 配置文件:/etc/vsftpd/vsftpd.conf
    • 查看配置文件参数使用: man 5 vsftpd.conf
    • 格式:option=value 注意:= 前后不要有空格

    vsftpd服务配置

    安装vsftpd

    yum install vsftpd -y

    yum install ftp -y (当做客户端命令行工具)

    默认使用被动模式传输:可以使用ftp用户登录,默认的共享目录在/var/ftp下

    [root@yufu opt]# ftp 192.168.214.130
    Connected to 192.168.214.130 (192.168.214.130).
    220 (vsFTPd 3.0.2)
    Name (192.168.214.130:root): ftp
    331 Please specify the password.
    Password:
    230 Login successful.
    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp> ls
    227 Entering Passive Mode (192,168,214,130,154,121).
    150 Here comes the directory listing.
    drwxr-xr-x    2 0        0            4096 Jun 25 12:13 pub
    226 Directory send OK.
    

    修改传输模式

    主动传输

    listen_port=21      # 命令端口
    connect_from_port_20=YES   #主动模式端口为20
    ftp_data_port=20                    #指定主动模式的端口
    

    使用当地时间

    默认客户端下载的ftp文件时间与服务端时间是不一样的。指定客户端下载使用的时间与服务端一致

    use_localtime=YES 使用当地时间(默认为NO,使用GMT)

    匿名用户

    anonymous_enable=YES 支持匿名用户 no_anon_password=YES(默认NO) 匿名用户略过口令检查 anon_world_readable_only (默认YES)只能下载全部读的文件

    • anon_upload_enable=YES 匿名上传,注意:文件系统权限
    • anon_mkdir_write_enable=YES
    • anon_umask=077 指定匿名上传文件的umask
    • anon_other_write_enable=YES 可删除和修改上传的文件
      指定上传文件的默认的所有者和权限
    • chown_uploads=YES(默认NO)
    • chown_username=wang
    • chown_upload_mode=0644

    系统用户

    • guest_enable=YES 所有系统用户都映射成guest用户
    • guest_username=ftp 配合上面选项才生效,指定guest用户
    • local_enable=YES 是否允许linux用户登录
    • write_enable-YES 允许linux用户上传文件
    • local_umask=022 指定系统用户上传文件的默认权限
    • local_root=/ftproot 非匿名用户登录所在目录

    禁锢所有用户在家目录中
    chroot_local_user=YES(默认NO,不禁锢)禁锢系统用户
    禁锢或不禁锢特定的系统用户在家目录中,与上面设置功能相反

    • chroot_list_enable=YESchroot_list_file=/etc/vsftpd/chroot_list
    • 当chroot_local_user=YES时,则chroot_list中用户不禁锢
    • 当chroot_local_user=NO时,则chroot_list中用户禁锢

    wu-ftp日志:默认启用

    • xferlog_enable=YES (默认)启用记录上传下载日志
    • xferlog_std_format=YES (默认)使用wu-ftp日志格式
    • xferlog_file=/var/log/xferlog (默认)可自动生成

    vsftpd日志:默认不启用

    • dual_log_enable=YES 使用vsftpd日志格式,默认不启用
    • vsftpd_log_file=/var/log/vsftpd.log(默认)可自动生成

    登录提示信息

    • ftpd_banner=“welcome to mage ftp server"
    • banner_file=/etc/vsftpd/ftpbanner.txt 优先上面项生效

    目录访问提示信息

    • dirmessage_enable=YES (默认)
    • message_file=.message(默认)信息存放在指定目录下.message

    使用pam模块认证

    使用完成用户认证

    • pam_service_name=vsftpd
    • pam配置文件:/etc/pam.d/vsftpd
    • /etc/vsftpd/ftpusers 默认文件中用户拒绝登录

    是否启用控制用户登录的列表文件

    • userlist_enable=YES 默认有此设置
    • userlist_deny=YES(默认值)黑名单,不提示口令,NO为白名单
    • userlist_file=/etc/vsftpd/users_list 此为默认值
      连接限制
    • max_clients=0 最大并发连接数
    • max_per_ip=0 每个IP同时发起的最大连接数
      vsftpd服务指定用户身份运行
    • nopriv_user=nobody

    传输速率配置

    传输速率:字节/秒

    • anon_max_rate=0 匿名用户的最大传输速率
    • local_max_rate=0 本地用户的最大传输速率

    连接时间:秒为单位

    • connect_timeout=60 主动模式数据连接超时时长
    • accept_timeout=60 被动模式数据连接超时时长
    • data_connection_timeout=300 数据连接无数据输超时时长
    • idle_session_timeout=60 无命令操作超时时长

    优先以文本方式传输

    • ascii_upload_enable=YES
    • ascii_download_enable=YES

    基于SSL传输的FTPS

    查看是否支持SSL

    • ldd which vsftpd 查看到libssl.so

    创建自签名证书

    • cd /etc/pki/tls/certs/
    • make vsftpd.pem
    • openssl x509 -in vsftpd.pem -noout –text

    配置vsftpd服务支持SSL:/etc/vsftpd/vsftpd.conf

    • ssl_enable=YES 启用SSL
    • allow_anon_ssl=NO 匿名不支持SSL
    • force_local_logins_ssl=YES 本地用户登录加密
    • force_local_data_ssl=YES 本地用户数据传输加密
    • rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem

    用filezilla等工具测试

    实现基于文件验证的vsftpd虚拟用户

    1. 创建用户数据库文件

    [root@yufu ~]# vim /etc/vsftpd/vuser.txt
    testuser1
    testuser1passwd
    yufu
    123456
    #奇数行写用户名,偶数行写用户密码
    

    2. 转换数据文件为指定格式 设定600权限

    [root@yufu ~]# cd /etc/vsftpd/
    [root@yufu vsftpd]# db_load -T -t hash -f vuser.txt vuser.db
    [root@yufu vsftpd]# chmod 600 vuser.db 
    

    3. 创建用户和访问FTP目录
    创建系统的用户 vuser (将上面vuser.db中的账号映射成vuser)

    [root@yufu vsftpd]# useradd -d /var/ftproot vuser -s /sbin/nologin
    [root@yufu vsftpd]# chmod +rx /var/ftproot/
    

    4. 创建pam配置文件

    [root@yufu vsftpd]# vim /etc/pam.d/vsftpd.db
    
    auth required pam_userdb.so db=/etc/vsftpd/vuser                                                                           
    account required pam_userdb.so db=/etc/vsftpd/vuser
    

    5. 指定pam配置文件

    vim /etc/vsftpd/vsftpd.conf
    
    guest_enable=YES
    guest_username=vuser
    pam_service_name=vsftpd.db
    

    6. 禁用selinux

    setenforce 0

    7 .虚拟用户建立独立的配置文件

    [root@yufu vsftpd]# mkdir /etc/vsftpd/vuser.d

    在主配置文件vsftpd.conf中添加新建的配置文件目录路径如下

    user_config_dir=/etc/vsftpd/vuser.d/

    8. 配置虚拟用户文件

    cd /etc/vsftpd/vuser.d/ 
    #
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES
    

    重启vsftpd服务测试虚拟用户登录

    service vsftpd restart

    在服务器端的/var/ftproot目录下创建几个文件留作远程客户端登录测试下载

    客户端登录

    [root@yufu ~]# ftp 192.168.214.187
    Connected to 192.168.214.187 (192.168.214.187).
    220 (vsFTPd 2.2.2)
    Name (192.168.214.187:root): yufu
    331 Please specify the password.
    Password:
    230 Login successful.
    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp> ls
    227 Entering Passive Mode (192,168,214,187,252,108).
    150 Here comes the directory listing.
    -rw-r--r--    1 0        0               0 May 09 08:03 yufu
    -rw-r--r--    1 0        0               0 May 09 08:14 yufu_files
    226 Directory send OK.
    ftp> 
    

    测试下载

    ftp> lcd /opt/
    Local directory now /opt
    ftp> get yufu_files
    local: yufu_files remote: yufu_files
    227 Entering Passive Mode (192,168,214,187,45,7).
    150 Opening BINARY mode data connection for yufu_files (0 bytes).
    226 Transfer complete.
    ftp> quit
    221 Goodbye.
    [root@yufu ~]# ls /opt/yufu_files 
    /opt/yufu_files
    
  • 相关阅读:
    使用 Eclipse 平台共享代码
    给定一个整数数组,其中元素的取值范围为0到10000,求其中出现次数最多的数
    学习
    eclipse优化
    约瑟夫环
    propedit插件
    OData 11 入门:实现一个简单的OData服务
    OData 14 OData语法(上)
    CLR via C# 读书笔记 54 在使用非托管资源情况下的GC
    面试:等车时间
  • 原文地址:https://www.cnblogs.com/anay/p/9238210.html
Copyright © 2020-2023  润新知