美文网首页
ubuntu搭建ftp服务

ubuntu搭建ftp服务

作者: Jessewo | 来源:发表于2018-06-11 01:42 被阅读37次

    需求

    使用虚拟用户登录访问ftp, 指定用户访问, 公网访问, 保证安全.

    ps.折腾了一整晚发现如果仅仅是自用的话, 用SSH自带的 sftp 完全满足需要, 最关键的是不需要任何配置!!!
    然后下面的内容不用看了, 权当是个人记录....

    本文涉及到的linux基本操作:

    • useradd 和 groupadd 用户管理;
    • chown 和 chmod 文件权限管理;
    • PAM

    安装

    apt install vsftpd
    

    配置

    vim /etc/vsftpd.conf 
    

    本人配置内容如下:

    listen=NO
    listen_ipv6=YES
    dirmessage_enable=YES
    use_localtime=YES
    #打开日志记录
    xferlog_enable=YES
    xferlog_std_format=YES
    xferlog_file=/var/log/xferlog
    
    #禁止匿名访问
    anonymous_enable=NO
    #允许本地用户访问,就是linux本机中存在的用户
    local_enable=YES
    #开启写模式
    write_enable=YES
    #本地用户上传文件的umask值
    local_umask=022
    
    #白名单用户
    userlist_enable=YES
    #是否启动userlist为禁止模式,YES表示在userlist中的用户禁止登录ftp(黑名单),NO表示黑名单失效,我们已经让userlist作为一个白名单,所以无需使用黑名单功能
    userlist_deny=NO
    #指定哪个文件作为userlist文件
    userlist_file=/etc/vsftpd/vsftpd.user_list
    
    #是否限制本地所有用户切换根目录的权限,YES为开启限制
    chroot_local_user=YES
    #是否启动限制用户的名单list为允许模式,上面的YES限制了所有用户,可以用这个名单作为白名单,作为例外允许访问ftp根目录以外的目录
    chroot_list_enable=YES
    #设置哪个文件是list文件,里面的用户将不受限制的去访问ftp根目录以外的目录
    chroot_list_file=/etc/vsftpd/vsftpd.chroot_list
    #是否开启写模式,开启后可以进行创建文件夹等写入操作
    allow_writeable_chroot=YES
    
    #开启虚拟用户模式
    guest_enable=YES
    #指定虚拟用户映射的本地账户
    guest_username=vsftpd
    #虚拟用户权限配置文件夹
    user_config_dir=/etc/vsftpd/vusers_permission
    
    secure_chroot_dir=/var/run/vsftpd/empty
    #指定PAM文件
    pam_service_name=vsftpd.vu
    rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
    rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
    ssl_enable=NO
    
    #开启被动模式
    pasv_enable=YES
    #被动模式端口范围
    pasv_min_port=60000
    pasv_max_port=60099
    #关闭PASV模式的安全检查。该检查确保数据连接和控制连接是来自同一个IP地址
    #pasv_promiscuous=YES
    
    #主动模式
    #connect_from_port_20=YES
    

    使用

    service vsftpd start
    service vsftpd restart
    service vsftpd stop
    service vsftpd status
    

    ftp 的原理
    ftp 是双通道的,一个负责命令,一个负责数据。分为主动模式和被动模式。负责命令的端口是 21,在主动模式下,负责数据的端口是 20,在被动模式下负责数据的端口是随机的……大部分客户端如 FillaZilla 是可以自行配置用主动模式还是被动模式。你用主动模式就把服务器的安全策略组里的的 21 和 20 打开。
    如果是被动模式,你可以在/etc/vsftpd/vsftpd.conf下面可以配置一个地址段,比如 60000-61000
    配置ftp为被动模式

    #connect_from_port_20=YES
    pasv_enable=YES
    pasv_min_port=60000 
    pasv_max_port=61000 
    

    然后在阿里云安全策略组里打开这一个范围(60000/61000 ),这样相当于开了 1000 个端口允许连接

    创建&配置虚拟用户

    todo

    pam_service_name=vsftpd.vu
    

    创建&配置本地用户

    创建vsftpd服务程序用于存储文件的根目录以及虚拟用户映射的系统本地用户。FTP服务用于存储文件的根目录指的是,当虚拟用户登录后所访问的默认位置。
    比如我要创建的本地用户是 vsftpd, 其用户主目录为 /var/ftproot

    1. 创建用户
    useradd -d /var/ftproot -s /sbin/nologin vsftpd
    

    创建完成后可以通过 id vsftpd 命令查看vsftpd用户的信息:

    id vsftpd
    uid=1002(vsftpd) gid=1002(vsftpd) groups=1002(vsftpd)
    
    1. 配置用户主目录
    //创建主目录
    mkdir /var/ftproot
    
    //修改主目录所有者
    chown -R vsftp:vsftp /var/ftproot
    
    //修改目录权限
    chmod -Rf 755 /var/ftproot/ 
    
    //查看配置结果
    ls -ldih /var/ftproot
    1058397 drwxr-xr-x 4 vsftpd vsftpd 4.0K Jun 10 22:29 ftproot
    

    客户端选择

    • 浏览器地址栏输入 ftp:ip
    • mac finder (打开finder后, cmd + k)也可以连接, 但是貌似局限于局域网.
    • 推荐使用 FillaZilla, 可以看到整个连接过程的日志, 遇到问题可以方便调试.

    错误处理

    1. vsftpd 425 Security: Bad IP connecting

    测试以下方法会导致vsftpd无法启动

    //打开配置文件
    vim /etc/vsftpd.conf 
    //添加:
    pasv_promiscuous=YES 
    //重启vsftpd 
    service vsftpd restart
    

    pasv_promiscuous选项参数说明:
    此选项激活时,将关闭PASV模式的安全检查。该检查确保数据连接和控制连接是来自同一个IP地址。小心打开此选项。此选项唯一合理的用法是存在于由安全隧道方案构成的组织中。默认值为NO。
    合理的用法是:在一些安全隧道配置环境下,或者更好地支持FXP时(才启用它)。

    参考资料

    相关文章

      网友评论

          本文标题:ubuntu搭建ftp服务

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