FTP服务虚拟用户模式搭建

    科技2025-07-13  5

    FTP服务虚拟用户模式搭建

    前言

    本文重点在于搭建FTP的三种登陆模式中的虚拟用户模式,该模式也是三种登陆模式中搭建步骤较为繁琐的一种。因此将该模式的搭建方式单独整理成一篇文档,便于查看。

    基本理论说明:

    虚拟用户模式:三种模式中最安全的一种认证模式,它需要为FTP服务单独建立用户数据库文件,虚拟出用来进行口令验证的账户信息,而这些账户信息在服务器系统中实际上是不存在的,仅供FTP服务程序进行认证使用。这样,即使黑客破解了账户信息也无法登录服务器,从而有效降低了破坏范围和影响。

    实验步骤

    实验目标:搭建FTP服务中虚拟用户登陆模式,并了解其原理与作用。

    实验准备:两台C6标准虚拟机。(selinux与防火墙已关闭)

    实验IP规划:FTP服务端:192.168.10.10

    ​ FTP客户端:192.168.10.11

    一、服务端搭建

    安装服务端:

    yum install vsftpd -y

    二、创建FTP认证的用户数据文件

    创建用户数据库文件:

    cd /etc/vsftpd vim user.list

    奇数行为账户名,偶数行为密码。

    zhangsan 123 lisi 123

    三、加密用户信息文件

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

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

    db_load -T -t hash -f user.list user.db

    赋予600权限:

    chmod 600 user.*

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

    创建虚拟用户以及FTP服务用于存储文件的根目录

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

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

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

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

    赋予存储目录权限:

    chmod 755 /var/user/

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

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

    cd /etc/pam.d/ cp vsftpd vsftpd.a vim vsftpd.a

    清空原本数据,添加以下信息:

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

    ps:开头注释信息不能删除!!

    六、修改主配置文件

    vim /etc/vsftpd/vsftpd.conf

    文件末尾添加:

    pam_service_name=vsftpd.a userlist_enable=YES tcp_wrappers=YES guest_enable=YES guest_username=virtual user_config_dir=/etc/vsftpd/conf

    七、为虚拟用户设置不同权限。

    zhangsan和lisi都是用于vsftpd服务程序认证的虚拟账户,但是我们依然想对这两人进行区别对待。比如,允许张三上传、创建、修改、查看、删除文件,只允许李四查看文件。这可以通过vsftpd服务程序来实现。只需新建一个目录,在里面分别创建两个以zhangsan和lisi命名的文件,其中在名为zhangsan的文件中写入允许的相关权限(使用匿名用户的参数):

    创建目录:

    cd /etc/vsftpd/ mkdir conf

    创建限制文件:

    cd conf/ touch lisi vim zhangsan

    zhangsan添加以下控制权限:

    anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES

    lisi不添加任何控制权限。

    创建zhangsan与lisi用户,密码均为123

    useradd zhangsan passwd zhangsan useradd lisi passwd lisi

    保存,重启服务。

    service vsftpd restart

    八、测试zhangsan与lisi的FTP服务的用户权限

    客户端使用lisi用户登陆:

    ftp 192.168.10.10

    进行常规操作:

    使用zhangsan登陆:

    ftp 192.168.10.10

    创建与改名:

    确保自己在ftp界面中,并且登陆了zhangsan用户

    mkdir shuai rename shuai chou

    服务端查看:

    创建与改名操作成功。

    上传与删除:

    put woaixuexi.txt rmdir chou

    服务端查看:

    实验成功,张三拥有上述权限。

    该文档于2020年10月8日由Vonmerlot重新整理。

    Processed: 0.010, SQL: 8