• Vsftpd文件传输服务(三种认证模式:匿名开放 、本地用户、虚拟用户)


    Vsftpd文件传输服务(三种认证模式:匿名开放 、本地用户、虚拟用户)

    FTP是一种在互联网中进行中文件传输的协议,基于客户端/服务器端模式,默认使用20、21号端口,其中端口20(数据端口)用于进行数据传输,端口21(命令端口)用于接受客户端发出的相关FTP命令与参数。

    FTP的出现解决了各类设备、各类操作系统之间文件传输问题,极大地方便了用户通过网络资源的获取。

    FTP服务器常部署于企业内网中,具有容易搭建、方便管理的特点,目前有些FTP客户端工具还可以支持文件的多点下载以及断点续传,因此FTP服务得到了广大用户的青睐。

    在这里插入图片描述

    FTP协议有两种工作模式:

    主动模式: FTP服务器主动向客户端发起连接请求;

    被动模式: FTP服务器等待客户端发起连接请求(默认模式);

    vsftpd的三种认证模式

    • 匿名开放模式:
      它是一种最不安全的认证模式,任何人都可以无需密码验证而直接登录到FTP服务器;

    • 本地用户模式
      它是通过Linux系统本地的账户密码信息进行认证的模式,相较于匿名开放模式更安全,而且配置起来也很简单。但是若被恶意用户破解了账户的信息,就可以畅通无阻地登录FTP服务器,从而完全控制服务器;

    • 虚拟用户模式
      它是三种模式中最安全的一种认证模式,它需要为FTP服务单独建立用户数据库文件,虚拟出的用户进行口令验证的账户信息,而这些账户信息在服务器系统上并不存在,仅供FTP服务器进行认证使用。

    部署服务

    环境准备

    服务系统IP
    服务器centos7192.168.129.135
    客户端win719.168.129.134

    内容

    • 匿名开放模式
    • 本地用户模式
    • 虚拟用户模式

    安装vsftpd服务

    #关闭安全设置和防火墙
    systemctl stop firewalld ebtables
    systemctl disable  firewalld ebtables
    setenforce 0
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
    
    #安装软件包
    yum -y install vsftpd
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    默认FTP站点目录:/var/ftp
    配置文件路径:/etc/vsftpd/vsftpd.conf

    一、匿名开放模式

    修改vsftpd.conf配置文件

    
    vim /etc/vsftpd/vsftpd.conf
    
    anonymous_enable=YES 		//允许匿名访问模式
    anon_upload_enable=YES 		//启用,允许匿名用户上传文件
    anon_mkdir_write_enable=YES //启用,允许匿名用户创建目录
    no_anon_password=YES		//匿名用户不要密码就靠这个
    新增下面参数
    anon_other_write_enable=YES //允许匿名用户修改目录名称或删除目录
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    启动服务

    service vsftpd start
    
    • 1

    修改ftp目录权限

    chown -R ftp.ftp /var/ftp/pub/
    chmod -R 777 /var/ftp/pub/
    
    • 1
    • 2

    测试

    查看ftp服务器站点目录及文件
    在这里插入图片描述

    在客户端中运行“命令提示符”,登录ftp站点
    在这里插入图片描述

    客户端下载文件
    在这里插入图片描述

    在这里插入图片描述

    客户端上传文件
    在这里插入图片描述
    在这里插入图片描述

    进入ftp服务器站点查看上传文件
    在这里插入图片描述

    客户端删除文件
    在这里插入图片描述

    进入ftp服务器站点查看文件是否删除
    在这里插入图片描述

    二、本地用户模式

    修改vsftpd.conf配置文件

    vi /etc/vsftpd/vsftpd.conf
    
    anonymous_enable=NO 	//禁止匿名访问模式
    local_root=/var/ftp/pub	//设置本地用户登录所在的目录(如没有设置则默认为家目录/home/zhangsan)
    ftpd_banner=Welcome to blah FTP service.		//ftp工具连接成功提示
    local_enable=YES		//允许本地用户模式
    write_enable=YES 		//设置可写权限
    local_umask=022 		//本地用户创建文件的umask值
    userlist_enable=YES 	//启动“禁止名单”,名单文件为ftpusers和user_list
    userlist_deny=YES 		//开启用户作用名单文件功能
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    创建两个本地用户zhangsan、lisi

    useradd -s /sbin/nologin zhangsan 		//创建用户zhangsan
    echo 123456 | passwd zhangsan --stdin 	//设置密码
    useradd -s /sbin/nologin lisi 			//创建用户lisi
    echo 123456 | passwd lisi --stdin 		//设置密码
    
    • 1
    • 2
    • 3
    • 4

    修改ftpusers文件

    vi /etc/vsftpd/ftpusers
    
    # Users that are not allowed to login via ftp
    root
    bin
    daemon
    adm
    lp
    sync
    shutdown
    halt
    mail
    news
    uucp
    operator
    games
    nobody
    lisi		#行尾新增lisi
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    重启服务

    service vsftpd restart
    
    • 1

    测试

    ftp服务器开启了本地用户验证登录,lisi添加到了黑名单中,不让其登录,zhagnsan可以进行正常登录
    在这里插入图片描述
    客户端分别使用lisi、zhangsan两个账户进行登录测试
    在这里插入图片描述
    客户端下载文件

    三、虚拟用户模式

    创建ftp用户数据库文件
    奇数行为账户名,偶数行为密码

    vim /etc/vsftpd/user.list
    natasha
    123
    tom
    123
    
    • 1
    • 2
    • 3
    • 4
    • 5

    加密用户信息文件
    明文信息既不安全,也不符合让vsftpd服务程序直接加载的格式,因此需要使用db_load命令用算法将原始的明文信息文件转换成数据库文件,并且降低数据库文件的权限(避免其他人看到数据库文件的内容),然后再把原始的明文信息文件删除。

    使用哈希算法加密信息文件:

    db_load -T -t hash -f user.list user.db		 //转换为数据库文件
    chmod 600 user.db      //修改权限不让其他用户查看
    
    • 1
    • 2

    创建用于储存文件的根目录以及添加虚拟用户映射的系统本地用户
    创建虚拟用户以及FTP服务用于存储文件的根目录

    ps:当虚拟用户登录后所访问的默认位置。

    useradd -d /var/user -s /sbin/nologin virtual
    
    • 1

    由于Linux系统中的每一个文件都有所有者、所属组属性,例如使用虚拟账户“张三”新建了一个文件,但是系统中找不到账户“张三”,就会导致这个文件的权限出现错误。为此,需要再创建一个可以映射到虚拟用户的系统本地用户。简单来说,就是让虚拟用户默认登录到与之有映射关系的这个系统本地用户的家目录中,虚拟用户创建的文件的属性也都归属于这个系统本地用户,从而避免Linux系统无法处理虚拟用户所创建文件的属性权限。

    为了方便管理FTP服务器上的数据,可以把这个系统本地用户的家目录设置为/var目录(该目录用来存放经常发生改变的数据)。并且为了安全起见,我们将这个系统本地用户设置为不允许登录FTP服务器,这不会影响虚拟用户登录,而且还可以避免黑客通过这个系统本地用户进行登录。

    赋予存储目录权限:

    chmod 755 /var/user/
    
    • 1

    建立用于支持虚拟用户的PAM文件

    新建一个用于虚拟用户认证的PAM文件vsftpd.vu,其中PAM文件内的“db=”参数为使用db_load命令生成的账户密码数据库文件的路径,但不用写数据库文件的后缀

    cd /etc/pam.d/
    cp vsftpd vsftpd.a
    vim vsftpd.a
    
    • 1
    • 2
    • 3

    清空原本数据,添加以下信息:
    ps:开头注释信息不能删除!!

    auth   required     pam_userdb.so  db=/etc/vsftpd/user
    account required    pam_userdb.so  db=/etc/vsftpd/user
    
    • 1
    • 2

    修改vsftpd服务程序的主配置文件

    vim /etc/vsftpd/vsftpd.conf
    
    anonymous_enable=NO 		//禁止匿名开放模式
    local_enable=YES 			//允许本地用户
    guest_enable=YES 			//开启虚拟用户
    guest_username=virtual 		//指定虚拟用户为virtual
    pam_service_name=vsftpd.a 	//指定PAM文件
    userlist_enable=YES			//判断/etc/vsftpd/user_list文件是否生效
    chroot_local_user=YES       //使用户不能离开主目录,默认有取消注释即可  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    重启服务

    service vsftpd restart
    
    firewall-cmd --list-all
    firewall-cmd --permanent --add-service=ftp
    firewall-cmd --reload 
    
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
  • 相关阅读:
    图像处理技术:数字图像分割 ------ 图像分割、边界分割(边缘检测)、区域分割
    对于工作中复杂的业务,使用mabatis-plus加分页插件的话,有时候得不到自己想要的
    uniapp或者vue项目环境变量的模式来自动替换网络请求的baseUrl
    第一章:IDEA使用介绍
    vulnhub靶机Presidential
    秋招在线人才测评考什么内容?
    关于 Python 的经典入门书籍有哪些?
    SecureCRT9.1高亮配色设置
    HttpServletRequest接口详解
    迅为RK3588开发板Linux安卓12瑞芯微ARM核心板人工智能工业AI主板
  • 原文地址:https://blog.csdn.net/qq_48289488/article/details/126563446