zoukankan      html  css  js  c++  java
  • vsftpd 通用配置---简易版

    需求:创建一个ftp服务器,登录账号访问指定目录,不允许匿名访问,

    环境:centos7.8 

    软件:vsftpd (从iso安装即可)

    好久没有配置过了。网上找个文档配置,发现很多很多都是不能用的,或者只是有个参数解释(是否成功全靠自己发挥和测试),以下我将配置和测试好的方法记录,如下:

    开始了~~~~~~~~~~~~~~~~~~~

    软件安装就不说了,这个自己发挥吧。

    首先我要创建一个ftpuser的账号,指定这个账号ftp访问到/ftpdata目录

    useradd –M –d /ftpdata –s /bin/bash ftpuser

    设置密码:echo 123456 | passwd ftpuser --stdin

     # 创建ftp数据目录

    mkdir /ftpdata

    # 授权,否则ftpuser账号无权限

    chown ftpuser:ftpuser /ftpdata/

    注意:本地账号登录模式,创建的账号必须是/bin/bash模式,否则无法登录。(这个要注意,经过测试使用/sbin/nologin不好用)

    接下来重点到了,配置vsftpd.conf的配置文件

    首先我们要了解一下ftp分主动模式和被动模式2种

    主动模式:客户端与服务器端的21端口建立连接,然后客户端会发送随机端口n(n>1024)到服务器端作为数据传输端口,然后服务器端会使用20端口主动连接客户端的数据端口,进行数据传输。(注意,是服务器端主动发起连接客户端的随机端口,如果客户端有防火墙,可能会出问题)

    vsftpd.conf中的配置为:

    Pasv_enable = no

    被动模式:客户端与服务器端的21端口建立连接,然后服务器端会返回n(n>1024)端口到客户端作为数据传输端口,客户端接收到后,主动发起到服务器端的n数据端口进行数据传输。

    配置为:

    Pasv_enable = yes

    限定端口范围:

    Pasv_min_port=30000

    Pasv_max_port = 30999

    vsftpd.conf配置文件内容:

    anonymous_enable=NO
    local_enable=YES
    write_enable=YES
    local_umask=022
    dirmessage_enable=YES
    xferlog_enable=YES
    chown_username=ftpuser
    xferlog_file=/var/log/xferlog
    xferlog_std_format=YES
    chroot_local_user=NO
    chroot_list_enable=NO
    local_root=/opt/ftpdata
    listen=NO
    listen_ipv6=YES
    pam_service_name=vsftpd
    userlist_enable=YES
    userlist_deny=NO
    tcp_wrappers=YES
    allow_writeable_chroot=YES
    use_localtime=YES
    pasv_enable=YES
    pasv_min_port=30060
    pasv_max_port=30090

    以上参数对应解释:

    #关闭匿名访问

    anonymous_enable=NO

    # 允许本地用户登录

    local_enable=YES

    # 登录用户具有写权限

    write_enable=YES

    # 新增文件默认umask:666-022=644(权限)

    local_umask=022

    # 启用日志

    xferlog_enable=YES

    # 上传文件默认用户

    chown_username=ftpuser

    # 日志

    xferlog_file=/var/log/xferlog

    # 日志格式

    xferlog_std_format=YES

    # 锁定chroot_list列表用户不允许切换到上级目录,只在指定根目录下

    chroot_local_user=NO

    # 指定登录账号访问的根目录

    local_root=/opt/ftpdatau

    # 启用chroot_list_file配置项指定的用户列表文件

    chroot_list_enable=NO

    #chroot_list_file=/etc/vsftpd/chroot_list

    listen=NO

    listen_ipv6=YES

    # 使用默认pam认证账号

    pam_service_name=vsftpd

    # 启用黑白名单,

    userlist_enable=YES

    # 只允许在user_list中的用户可以登录,在VSFTP启动时依然会去检查#/etc/vsftpd/ftpusers文件并且禁止该文件中的用户登录

    userlist_deny=NO

    #开启tcp_wrappers支持 

    tcp_wrappers=YES

    # 运行账号登录具有写权限

    allow_writeable_chroot=YES

    #使用本地系统时间

    use_localtime=YES

    # 被动模式

    pasv_enable=YES

    # 被动模式开启的数据传输口

    # 被动模式最小端口号30060

    pasv_min_port=30060

    # 被动模式最大端口号30090

    pasv_max_port=30090

    #空闲连接超时 
    idle_session_timeout=600 

    #数据传输超时 
    data_connection_timeout=120 

    #PAVS请求超时 
    ACCEPT_TIMEOUT=60 

    #可接受的最大client数目 
    max_clients=100

    #本地用户的传输比率(b/s) 
    #local_max_rate=5120000

    配置完成后。要重启服务

    systemctl restart vsftpd

    最后,最后,最重要的来了:

    /etc/vsftpd目录文件说明:

    /etc/vsftpd/ftpusers                控制登陆系统用户的机制,出现在该文件中的用户不允许使用ftp服务器

    /etc/logrotate.d/vsftpd            滚动日志配置文件

    /etc/vsftpd/user_list               配合/etc/vsftpd/vsftpd.conf中的userlist_enable=YES和userlist_deny=YES|NO实现黑白名单此处需要注意的是:黑白名单的前提是/etc/vsftpd/vsftpd.conf配置文件中userlist_enable=YES,userlist_deny选项默认为YES(黑名单),即该文件中出现的用户不允许登陆VSFTP,就算手动添加userlist_deny=NO(白名单)即只允许该文件中出现的用户允许登陆VSFTP,在VSFTP启动时依然会去检查/etc/vsftpd/ftpusers文件并且禁止该文件中的用户登录

    /etc/vsftpd/vsftpd.conf             VSFTP主配置文件,所有的配置选项必须顶格写,配置文件中#后带空格的是说明,不带空格的是注释掉的配置选项

    修改如下:

    ftpusers:文件中是系统的一些默认账号,不动,这个里面的账号是不能够登录ftp的

    user_list:清空这个文件,将新用户:ftpuser 添加进来,表示只运行ftpuser这个用户能够登录ftp系统,如果有其他账号,那么就添加到这个文件中。(切记,登录ftp的账号不可以在ftpusers中)

     

    结束~~~~~~~~以上为亲测。

    另外增加个其他的变动:要求只允许账号登录后在当前账号的根目录下,以上配置修改如下:

    # 锁定chroot_list列表用户不允许切换到上级目录,只在指定根目录下

    chroot_local_user=NO

    # 启用chroot_list_file配置项指定的用户列表文件

    chroot_list_enable=YES

    chroot_list_file=/etc/vsftpd/chroot_list

    userlist_enable=YES

    新建chroot_list文件,并添加需要登录系统的账号

    这个方法需要自己测试一下。

  • 相关阅读:
    java项目数据库从oracle迁移到mysql 中 java部分的一些修改
    mysql表名等大小写敏感问题、字段类型timestamp、批量修改表名、oracle查询历史操作记录等
    navicat premium相关应用(将oracle数据库迁移到mysql等)
    Java byte 类型的取值范围是-128~127
    idea中debug:
    chrome里面模拟手机上打开网页的场景方法
    Dealloc weak nil
    用七牛sdk传递图片到七牛服务器
    iOS block 本质研究
    UIWebView JSContext相关问题
  • 原文地址:https://www.cnblogs.com/zy6103/p/13710572.html
Copyright © 2011-2022 走看看