• vsftpd


    匿名用户

    anonymous_enable=YES
    anon_umask=022
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES
    anon_root=/var/ftp
    anon_max_rate=0

    本地用户

    local_enable=YES
    local_umask=022
    local_root=/var/ftp
    chroot_local_user=YES #开启用户家目录限制
    chroot_list_enable=YES # 开启白名单
    chroot_list_file=/etc/vsftpd/chroot_list #允许chroot_list里面的用户可以切换目录
    local_max_rate=0
    userlist_enable=YES &userlist_deny=YES#禁止/etc/vsftpd/user_list里面的用户登录ftp
    userlist_enable=YES &userlist_deny=NO#仅允许/etc/vsftpd/user_list里面的用户登录ftp
    
    #配置文件ftpusers
    禁止/etc/vsftpd/ftpusers里面的用户登录ftp且权限比user_list还要高,即时生效
    #被动模式
    pasv_enable=YES
    pasv_min_port=30000
    pasv_max_port=35000

    虚拟用户

    需要生成数据库文件而且要拿一个本地用户来映射虚拟用户,做虚拟用户配置文件设置时,必须将主配置文件中的  自定义的匿名用户相关设置  注释掉给映射用户的家目录设置o+r让虚拟用户有读权限

    vim vsftpd.user #奇数行:用户,偶数行:密码
    db_load -T -t hash -f vsftpd.user vsftpd.db #对文件加密
    #修改权限 
    chmod 600 vsftpd.db
    #创建虚拟用户的映射用户,并指定其家目录
    useradd -d /var/ftproot -s /sbin/nologin  virtual
    #建立PAM文件,添加虚拟用户支持
    cp -a /etc/pam.d/vsftpd /etc/pam.d/vsftpd.pam
    cat /etc/pam.d/vsftpd.pam
    auth    required        pam_userdb.so db=/etc/vsftpd/vsftpd
    account required        pam_userdb.so db=/etc/vsftpd/vsftpd
    #修改vsftpd.conf 添加支持配置
    #pam_service_name=vsftpd
    pam_service_name=vsftpd.pam
    guest_enable=YES
    guest_username=virtual
    user_config_dir=/etc/vsftpd/dir
    #做虚拟用独立户配置文件设置时,必须将主配置文件中的  自定义的匿名用户相关设置  注释掉
    anon_upload_enable=YES  #允许上传文件
    anon_mkdir_write_enable=YES  #允许创建目录
    anon_other_write_enable=YES  #允许修改文件
    #给映射用户的家目录设置o+r让虚拟用户有读权限

    500 OOPS: vsftpd: refusing to run with writable root inside chroot()
    Login failed.
    chmod a-w /var/ftproot 或者配置文件(主配置文件或者虚拟用户配置文件都可以)添加allow_writeable_chroot=YES

     安全

    抓包
    tcpdump -i ens32 -nn -X -vv tcp port 21 and ip host 源ip
    -i  #interface
    -n  #对地址以数字方式显示,否则显示主机名
    -nn  #除了-n作用外,将端口显示为数值,否则显示市口服务名
    -X  #输出包的头部数据,以16进制和ascii两种方式同时输出
    -vv  #显示更详细的输出

    openssl

    rpm -q openssl
    查看vsftpd是否支持openssl
    ldd /usr/sbin/vsftpd | grep libssl
    生成加密信息的秘钥和证书文件
    位置:/etc/ssl/certs/
    openssl genrsa -out vsftpd.key 1024
    openssl req -new -key vsftpd.key -out vsftpd.csr
    openssl x509 -req -days 365 -sha256 -in vsftpd.csr -signkey vsftpd.key -out vsftpd.crt
    生成秘钥和证书文件后,将本目录(/etc/ssl/certs/)的权限修改为500
    chmod 500 /etc/ssl/certs/

    修改主配置文件

    #启用ssl
    ssl_enable=YES
    #开启TLSV1 SSLV2 SSLV3支持
    ssl_tlsv1=YES
    ssl_sslv2=YES
    ssl_sslv3=YES
    #允许匿名用户[虚拟用户]
    allow_anon_ssl=YES
    #匿名用户登录和传输时强制使用ssl
    force_anon_logins_ssl=YES
    force_anon_data_ssl=YES
    #本地登录和传输时强制使用ssl
    force_local_logins_ssl=YES
    force_local_data_ssl=YES
    
    rsa_cert_file=/etc/ssl/certs/vsftpd.crt
    rsa_private_key_file=/etc/ssl/certs/vsftpd.key
    配置完之后重启服务

    使用客户端连接的时候选择 TLS/SSL显示加密可以看到证书信息

    配置过程中的报错:

    使用匿名用户登录:
    500 Illegal PORT command.
    425 Use PORT or PASV first.
    改成passive
    227 Entering Passive Mode (10,2,15,13,210,168).
    150 Here comes the directory listing.
    226 Transfer done (but failed to open directory).
    还是显示不出来
    
    解决:
    匿名用户的配置里面添加anon_world_readable_only=NO
    anon_world_readable_only(文件有三种权限,文件所有人,文件所有组,文件的其他人,anon_world_readable_only的意思是,当他为YES时候,文件的其他人必须有读的权限才允许下载,单单文件所有人为ftp且有读权限是无法下载的,必须其他人也有读权限,才允许下载;若为NO则只要ftp用户对文件有读权限即可下载
    ————————————————
    版权声明:本文为CSDN博主「ting--」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/wzt888_/article/details/100763045)
  • 相关阅读:
    Learning to Compare: Relation Network for Few-Shot Learning 论文笔记
    修改python import模块中的变量
    roslaunch保存的log文件没有打印的ERROR信息
    python json demo
    vscode 1.32.x按下鼠标左键无法拖曳选择,而旧一点的版本1.30.2可以
    java-ee--------jdbc
    集合
    关键字
    java面向对象
    数组
  • 原文地址:https://www.cnblogs.com/littlebylittle/p/12431856.html
Copyright © 2020-2023  润新知