美文网首页
vstpd的简单相关配置

vstpd的简单相关配置

作者: 尘曦的雨 | 来源:发表于2017-08-11 14:59 被阅读54次

    简介ftp

    • File Transfer Protocol 早期 的三个应用级协议之一
    • 基于C/S
    • 双通道协议:数据和命令连接
    • 数据传输格式:二进制(默认)和文本
    • 两种模式:服务器角度
      (1)主动(PORT style)服务器主动连接
      命令(控制):客户端:随机port ---> 服务器:tcp21
      数据: 客户端:随机port+1 <--- 服务器:tcp20
      (2)被动(PASV style)客户端主动连接
      命令 (控制 ):客户端:随机port ---> 服务器:tcp21
      数据:客户端:随机port+1 ---> 服务器:随机port
    • 状态码
      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 包提供
    • 不再由xinetd管理
    • 用户认证配置文件:/etc/pam.d/vsftpd
    • 服务脚本: /usr/lib/systemd/system/vsftpd.service 7
      /etc/rc.d/init.d/vsftpd 6
    • 配置文件:/etc/vsftpd/vsftpd.conf
    • 帮助 man 5 vsftpd.conf
    • 匿名用户(映射为系统用户ftp )共享文件位置:/var/ftp
    • 系统用户共享文件位置:用户家目录
    • 虚拟用户共享文件位置:为其映射的系统用户的家目录

    配置

    1更改命令端口

    更改命令端口     listen_port=端口号如90 ;默认配置文件无此行,表示监听21 端口 添加此行并要监听得问端口;修改后关闭selinux策略;setenforce 0临时关闭
    重启服务
    [root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
    listen_port=28
    #更改ftp的命令端口为非标准28端口加listen_port=28 ;如果不加此行表示使用标准21端口
    [root@localhost ~]# systemctl restart vsftpd.service 
    客户端测试
    [root@root ~]# ftp 192.168.175.130 28
    Connected to 192.168.175.130 (192.168.175.130).
    220 (vsFTPd 3.0.2)
    Name (192.168.175.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,175,130,190,237).
    150 Here comes the directory listing.
    drwxr-xr-x    2 0        0              16 Aug 10 21:24 pub
    226 Directory send OK.
    ftp> 
    服务器端查看连接状态
    [root@localhost pub]# ss -nt
    State       Recv-Q Send-Q               Local Address:Port                              Peer Address:Port              
    ESTAB       0      52                 192.168.175.130:22                               192.168.175.1:13991              
    ESTAB       0      0           ::ffff:192.168.175.130:28                      ::ffff:192.168.175.129:33670              
    [root@localhost pub]# 
    

    更改主动端口

    [root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
    connect_from_port_20=YES
    ftp_data_port=39  更改主动模式端口为39
    客户端测试
    ftp> get 4.txt 注意要在服务器端给该文件授权
    local: 4.txt remote: 4.txt
    200 PORT command successful. Consider using PASV.
    150 Opening BINARY mode data connection for 4.txt (4294967296 bytes).
    服务器端查看结果
    [root@localhost pub]# ss -nt
    State       Recv-Q Send-Q               Local Address:Port                              Peer Address:Port              
    ESTAB       0      0                  192.168.175.130:22                               192.168.175.1:12213              
    ESTAB       0      0                  192.168.175.130:22                               192.168.175.1:13991              
    ESTAB       0      3569320      ::ffff:192.168.175.130:39  主动端口                    ::ffff:192.168.175.129:59343              
    ESTAB       0      0           ::ffff:192.168.175.130:28                      ::ffff:192.168.175.129:33692  
    

    更改服务器端的被动端口

    [root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
    connect_from_port_20=YES
    pasv_min_port=6000 
    #数字指定随机端口的最小值为6000;如果是0表示系统随便分配
    pasv_max_port=6010
    #数字指定最大端口值为6010
    重启服务
    [root@localhost pub]# systemctl restart vsftpd.service 
    客户端测试
    ftp> get 4.txt
    local: 4.txt remote: 4.txt
    227 Entering Passive Mode (192,168,175,130,23,114).
    150 Opening BINARY mode data connection for 4.txt (4294967296 bytes).
    [root@localhost pub]# ss -nt
    State       Recv-Q Send-Q               Local Address:Port                              Peer Address:Port              
    ESTAB       0      52                 192.168.175.130:22                               192.168.175.1:13991              
    ESTAB       0      0           ::ffff:192.168.175.130:28                      ::ffff:192.168.175.129:33694              
    ESTAB       0      3276720      ::ffff:192.168.175.130:6002  端口范围之内的值                  ::ffff:192.168.175.129:55467   
    

    默认权限设置

    [root@localhost ftp]# ll -d /var/ftp/pub/
    drwxr-xr-x. 2 root root 42 8月  11 06:32 /var/ftp/pub/
    [root@localhost ftp]# ll -d /var/ftp/
    drwxr-xr-x. 3 root root 17 8月  11 06:16 /var/ftp/
    [root@localhost ftp]# 
    
    

    更改为当地时间

    客户端ls显示为UTC时间
    ftp> ls
    227 Entering Passive Mode (192,168,175,130,23,117).
    150 Here comes the directory listing.
    -rwxrwxrwx    1 0        0          716042 Aug 10  2017 2.txt
    -rwxrwxrwx    1 0        0        4294967296 Aug 10  2017 4.txt
    -rwxrwxrwx    1 0        0               0 Aug 10  2017 kk
    226 Directory send OK.
    ftp> 
    [root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
    connect_from_port_20=YES
    #use_localtime=YES 
    #默认是no表示使用GMT
    pasv_min_port=6000
    #数字指定随机端口的最小值为6000;如果是0表示系统随便分配
    pasv_max_port=6010
    use_localtime=YES
    #使用当地时间;默认是no表示使用GMT
    重启服务
    [root@localhost pub]# systemctl restart vsftpd.service 
    服务器上的文件时间
    [root@localhost ftp]# ll
    总用量 0
    drwxr-xr-x. 2 root root 42 8月  11 06:32 pub
    [root@localhost ftp]# 
    测试客户端
    ftp> ls
    227 Entering Passive Mode (192,168,175,130,23,117).
    150 Here comes the directory listing.
    -rwxrwxrwx    1 0        0          716042 Aug 11 06:12 2.txt
    -rwxrwxrwx    1 0        0        4294967296 Aug 11 06:34 4.txt
    -rwxrwxrwx    1 0        0               0 Aug 11 05:24 kk
    226 Directory send OK.
    ftp> 
    

    设置允许匿名用户上传文件

    客户端默认匿名用户不允许
    ftp> put 6.txt
    local: 6.txt remote: 6.txt
    227 Entering Passive Mode (192,168,175,130,23,114).
    550 Permission denied.
    ftp> 
    服务器端设置
    [root@localhost ftp]# vim /etc/vsftpd/vsftpd.conf
    anon_upload_enable=YES
    #启用这一项把注释去掉就支持匿名用户上传文件了
    赋予共享目录下子文的写权限;必须是子文件ftp不许共享目录直接有写权限
    [root@localhost ftp]# chmod o+w /var/ftp/pub/
    重启服务
    [root@localhost pub]# systemctl restart vsftpd.service 
    客户端测试
    ftp> put 6.txt
    local: 6.txt remote: 6.txt
    227 Entering Passive Mode (192,168,175,130,23,121).
    150 Ok to send data.
    226 Transfer complete.
    8 bytes sent in 0.000209 secs (38.28 Kbytes/sec)
    ftp> ls
    227 Entering Passive Mode (192,168,175,130,23,118).
    150 Here comes the directory listing.
    -rwxrwxrwx    1 0        0          716042 Aug 11 06:12 2.txt
    -rwxrwxrwx    1 0        0        4294967296 Aug 11 06:34 4.txt
    -rw-------    1 14       50              8 Aug 11 09:02 6.txt
    -rwxrwxrwx    1 0        0               0 Aug 11 05:24 kk
    226 Directory send OK.
    ftp> 
    
    • 设置匿名用户登录不检查口令
    客户端
    [root@root ~]# ftp 192.168.175.130 28
    Connected to 192.168.175.130 (192.168.175.130).
    220 (vsFTPd 3.0.2)
    Name (192.168.175.130:root): ftp用户
    331 Please specify the password.
    Password:密码
    230 Login successful.
    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp> 
    服务器
    [root@localhost ftp]# vim /etc/vsftpd/vsftpd.conf
    no_anon_password=YES
    #设置匿名用户登录不检查口令;( 默认NO)  匿名用户略过口令 检查
    重启ftp服务
    [root@localhost ftp]# systemctl restart vsftpd.service 
    客户端测试
    [root@root ~]# ftp 192.168.175.130 28
    Connected to 192.168.175.130 (192.168.175.130).
    220 (vsFTPd 3.0.2)
    Name (192.168.175.130:root): ftp用户
    230 Login successful.
    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp> 
    
    • 设置允许客户端创建文件
    [root@localhost ftp]# vim /etc/vsftpd/vsftpd.conf
    anon_mkdir_write_enable=YES
    #设置允许用户创建文件
    重启服务;注意文件的权限
    [root@localhost ftp]# systemctl restart vsftpd.service 
    客户端测试
    ftp> ?
    Commands may be abbreviated.  Commands are:
    
    !       debug       mdir        sendport    site
    $       dir     mget        put     size
    account     disconnect  mkdir       pwd     status
    append      exit        mls     quit        struct
    ascii       form        mode        quote       system
    bell        get     modtime     recv        sunique
    binary      glob        mput        reget       tenex
    bye     hash        newer       rstatus     tick
    case        help        nmap        rhelp       trace
    cd      idle        nlist       rename      type
    cdup        image       ntrans      reset       user
    chmod       lcd     open        restart     umask
    close       ls      prompt      rmdir       verbose
    cr      macdef      passive     runique     ?
    delete      mdelete     proxy       send
    ftp> mkdir hh   创一个文件夹hh
    257 "/pub/hh" created
    ftp> ls
    227 Entering Passive Mode (192,168,175,130,23,114).
    150 Here comes the directory listing.
    -rwxrwxrwx    1 0        0          716042 Aug 11 06:12 2.txt
    -rwxrwxrwx    1 0        0        4294967296 Aug 11 06:34 4.txt
    -rw-------    1 14       50              8 Aug 11 09:02 6.txt
    drwx------    2 14       50              6 Aug 11 09:17 hh
    -rwxrwxrwx    1 0        0               0 Aug 11 05:24 kk
    226 Directory send OK.
    ftp> 
    
    • 设置用户可删除和修改上传的文件、
    服务器
    vim /etc/vsftpd/vsftpd.conf
    anon_other_write_enable=YES
    #可删除和修改上传的文件
    [root@localhost ftp]# systemctl restart vsftpd.service 
    客户测试
    ftp> delete kk删除文件
    250 Delete operation successful.
    ftp> mdelete ll 删除目录或多个文件
    

    更改匿名账户上传文件的目录
    更改运行vstpd家目录就可以了

    设置用户上传文件的权限

    anon_umask=077 
    #指定匿名上传umask
    指定上传文件的默认的所有者和权限
    chown_uploads=YES
    #启用上传文件默认所有者
    chown_username=chenxi
    #指定所有者
    chown_upload_mode=0644
    #设置权限
    

    将所有系统账户映射成指定账户

    系统账户
    [root@localhost pub]# getent passwd chenxi1
    chenxi1:x:1000:1000::/home/chenxi1:/bin/bash
    
    客户端用系统账户测试
    [root@root ~]# ftp 192.168.175.130 28
    Connected to 192.168.175.130 (192.168.175.130).
    220 (vsFTPd 3.0.2)
    Name (192.168.175.130:root): chenxi1 系统
    331 Please specify the password.
    Password:
    230 Login successful.
    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp> pwd
    257 "/home/chenxi1"
    ftp> ls
    227 Entering Passive Mode (192,168,175,130,23,120).
    150 Here comes the directory listing.
    226 Directory send OK.
    ftp> cd /etc/ 将会特别危险
    250 Directory successfully changed.
    ftp> ls
    227 Entering Passive Mode (192,168,175,130,23,122).
    150 Here comes the directory listing.
    -rw-r--r--    1 0        0            5090 Nov 05  2016 DIR_COLORS
    -rw-r--r--    1 0        0            5725 Nov 05  2016 DIR_COLORS.256color
    服务器端
    [root@localhost pub]# vim /etc/vsftpd/vsftpd.conf
    guest_enable=YES
    #所有系统用户都映射成guest 用户
    guest_username=ftp
    #配合上面选项才生效,指定guest 用户guest_enable=YES  所有系统用户都映射成guest 用户而guest用户映射成ftq
    重启
    [root@localhost pub]# systemctl restart vsftpd.service 
    客户端测试
    [root@root ~]# ftp 192.168.175.130 28
    Connected to 192.168.175.130 (192.168.175.130).
    220 (vsFTPd 3.0.2)
    Name (192.168.175.130:root): chenxi1
    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,175,130,23,119).
    150 Here comes the directory listing.
    drwxr-xrwx    4 0        0              65 Aug 11 09:32 pub
    226 Directory send OK.
    ftp> pwd
    257 "/"
    ftp> 
    服务器
    # When SELinux is enforcing check for SE bool ftp_home_dir
    local_enable=YES
    #设置是否允许系统账户登录YSE允许NO是不允许
    # Uncomment this to enable any form of FTP write command.
    write_enable=YES
    #设置是否允许系统用户上传文件YES允许NO拒绝
    # Default umask for local users is 077. You may wish to change this to 022,
    # if your users expect that (022 is used by most other ftpd's)
    local_umask=022
    #设置系统用户上文件的umask权限
    chroot_local_user=YES 
    #(默认NO ,不禁锢)禁锢系统 用户
    hroot_list_enable=YES
    chroot_list_file=/etc/vsftpd/chroot_list
    当chroot_local_user=YES 时,则chroot_list 中用户不禁锢
    当chroot_local_user=NO 时,则chroot_list中 用户禁锢
    更改记得重启
    注意重启是吧配置文件没有错的前提下;应该是选项位置不对
    
    • 其他相关的配置
    日志相关配置
    xferlog_enable=YES  
    #(默认) 启用 记录上传下载日志
    xferlog_std_format=YES  
    #(默认 )使用wu-ftp 日志格式
    xferlog_file=/var/log/xferlog 
    #/var/log/xferlog (默认)可自动生成
    目录访问提示信息
    dirmessage_enable=YES ( 默认)
    message_file=.message( 默认) 信息 存放在 指定目录下.message
    echo chenxi>/var/ftp/pub/.message 用户切到该目录下就会提示chenxi字样
    
    • 用户访问控制的相关设置
    使用pam(Pluggable Authentication Modules)
    [root@localhost pub]# vim /etc/vsftpd/vsftpd.conf
    pam_service_name=vsftpd
    #默认指明验证用户调用pam模块
    pam 配置文件:/etc/pam.d/vsftpd #pam  模块关于vsftpd的配置文件
    pam模块对用户的登录设置
    [root@localhost pub]# vim /etc/pam.d/vsftpd
    
    #%PAM-1.0
    session    optional     pam_keyinit.so    force revoke
    auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
    auth       required     pam_shells.so
    auth       include      password-auth
    account    include      password-auth
    session    required     pam_loginuid.so
    session    include      password-auth
    
    #auth       required     pam_listfile.so item=user sense=deny(拒绝)后面文件里用户登录 file=/etc/vsftpd/ftpusers onerr=succeed
    sense=allow(允许)只允许后面文件里用户登录 file=/etc/vsftpd/ftpusers onerr=succeed
    /etc/vsftpd/ftpusers  默认文件中用户拒绝登录
    vsftp配置对用户登录限制的相关设置
    是否启用控制用户登录的列表文件
    [root@localhost pub]# vim /etc/vsftpd/vsftpd.conf
    userlist_enable=YES 
    # 默认有此设置
    userlist_deny=YES
    #( 默认值 值) 黑名单, 不提示口令,NO 为 白名单
    userlist_file=/etc/vsftpd/users_list 
    #此文件的用户
      连接 限制
    [root@localhost pub]# vim /etc/vsftpd/vsftpd.conf
    max_clients=0  
    #最大并发连接数
    max_per_ip=0  
    #每个IP 同时发起的最大连接 数
    nopriv_user=nobody    
    #vsftpd 服务指定用户身份运行
     传输速率: 字节/秒 秒
    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
    
    重启后生效
    客户端
    ftp> binary 表示以二进制格式传输
    200 Switching to Binary mode
    ftp> ascii  表示以文本格式传输
    200 Switching to ASCII mode.
    
    • 设置FTP为非独立服务6
    安装xinetd.d服务,由于telnet-server依赖于xinetd.d该服务所以安装telnet-server就自动把xinetd.d服务装上
    yum -y install telnet-server
    vim /etc/vsftpd/vsftpd.conf 
    # with the listen_ipv6 directive.
    listen=NO
    #默认是YES表示独立服务;改成NO就是非独立服务
    退出后直接把ftp服务关闭
    service vsftpd stop
    让ftp受xinetd服务管理
    vim /etc/xinetd.d/vsftpd
    service ftp
    {
    flags = REUSE
    socket_type = stream
    wait = no
    user = root
    server = /usr/sbin/vsftpd
    log_on_failure += USERID
    disable = no
    }
    [root@root xinetd.d]# chkconfig --list
    auditd          0:关闭    1:关闭    2:启用    3:启用    4:启用    5:启用    6:关闭
    blk-availability    0:关闭    1:启用    2:启用    3:启用    4:启用    5:启用    6:关闭
    crond           0:关闭    1:关闭    2:启用    3:启用    4:启用    5:启用    6:关闭
    ip6tables       0:关闭    1:关闭    2:启用    3:启用    4:启用    5:启用    6:关闭
    iptables        0:关闭    1:关闭    2:启用    3:启用    4:启用    5:启用    6:关闭
    kdump           0:关闭    1:关闭    2:关闭    3:启用    4:启用    5:启用    6:关闭
    lvm2-monitor    0:关闭    1:启用    2:启用    3:启用    4:启用    5:启用    6:关闭
    mdmonitor       0:关闭    1:关闭    2:启用    3:启用    4:启用    5:启用    6:关闭
    messagebus      0:关闭    1:关闭    2:启用    3:启用    4:启用    5:启用    6:关闭
    netconsole      0:关闭    1:关闭    2:关闭    3:关闭    4:关闭    5:关闭    6:关闭
    netfs           0:关闭    1:关闭    2:关闭    3:启用    4:启用    5:启用    6:关闭
    network         0:关闭    1:关闭    2:启用    3:启用    4:启用    5:启用    6:关闭
    nfs-rdma        0:关闭    1:关闭    2:关闭    3:关闭    4:关闭    5:关闭    6:关闭
    ntpdate         0:关闭    1:关闭    2:关闭    3:关闭    4:关闭    5:关闭    6:关闭
    postfix         0:关闭    1:关闭    2:启用    3:启用    4:启用    5:启用    6:关闭
    rdisc           0:关闭    1:关闭    2:关闭    3:关闭    4:关闭    5:关闭    6:关闭
    rdma            0:关闭    1:启用    2:启用    3:启用    4:启用    5:启用    6:关闭
    restorecond     0:关闭    1:关闭    2:关闭    3:关闭    4:关闭    5:关闭    6:关闭
    rsyslog         0:关闭    1:关闭    2:启用    3:启用    4:启用    5:启用    6:关闭
    saslauthd       0:关闭    1:关闭    2:关闭    3:关闭    4:关闭    5:关闭    6:关闭
    sshd            0:关闭    1:关闭    2:启用    3:启用    4:启用    5:启用    6:关闭
    svnserve        0:关闭    1:关闭    2:关闭    3:关闭    4:关闭    5:关闭    6:关闭
    udev-post       0:关闭    1:启用    2:启用    3:启用    4:启用    5:启用    6:关闭
    vsftpd          0:关闭    1:关闭    2:关闭    3:关闭    4:关闭    5:关闭    6:关闭
    xinetd          0:关闭    1:关闭    2:关闭    3:启用    4:启用    5:启用    6:关闭
    
    基于 xinetd 的服务:
        chargen-dgram:  关闭
        chargen-stream: 关闭
        daytime-dgram:  关闭
        daytime-stream: 关闭
        discard-dgram:  关闭
        discard-stream: 关闭
        echo-dgram:     关闭
        echo-stream:    关闭
        rsync:          关闭
        tcpmux-server:  关闭
        telnet:         关闭
        time-dgram:     关闭
        time-stream:    关闭
        vsftpd:         启用   #表示ftp受xinetd服务管理
    直接启动xinetd服务
    service xinetd start 
    端口查看
    [root@root xinetd.d]# ss -nlt
    State       Recv-Q Send-Q                            Local Address:Port                              Peer Address:Port 
    LISTEN      0      64                                           :::21       ftp端口已经启动                                   :::*     
    LISTEN      0      128                                          :::22                                          :::*     
    LISTEN      0      128                                           *:22                                           *:*     
    LISTEN      0      100                                         ::1:25                                          :::*     
    LISTEN      0      100                                   127.0.0.1:25                                           *:*     
    LISTEN      0      128                                   127.0.0.1:6011                                         *:*     
    LISTEN      0      128                                         ::1:6011                                        :::*     
    LISTEN      0      128                                   127.0.0.1:6012                                         *:*     
    LISTEN      0      128                                         ::1:6012                                        :::*     
    [root@root xinetd.d]# 
    

    相关文章

      网友评论

          本文标题:vstpd的简单相关配置

          本文链接:https://www.haomeiwen.com/subject/nhjkrxtx.html