新浪博客

使用虚拟账号登录vsftpd服务器

2025-06-03 10:46阅读:
为了FTP服务器的安全,可以使用虚拟用户验证方式,也就是将虚拟的账号映射为服务器的实体账号,客户端使用虚拟账号访问FTP服务器。
要求:使用虚拟用户user2user3登录FTP服务器,访问主目录是/var/ftp/vuser,用户只允许查看文件,不允许上传、修改等操作。
1.创建用户数据库
1)创建用户文本文件。
首先,建立保存虚拟账号和密码的文本文件,格式如下。
虚拟账号1
密码
虚拟账号2
密码
2)生成数据库。
保存虚拟账号及密码的文本文件无法被系统账号直接调用,需要使用db_load命令生成db数据库文件。
[root@Server01 ~]# db_load -T -t hash -f /vftp/vuser.txt /vftp/vuser.db
[root@Server01 ~]# ls /vftp
vuser.db vuser.txt
3)修改数据库文件访问权限。
数据库文件中保存着虚拟账号和密码信息,为了防止非法用户盗取,可以修改该文件的访问权限。
[root@Server01 ~]# chmod 700 /vftp/vuser.db; ll /vftp
2.配置PAM文件
为了使服务器能够使用数据库文件,对客户端进行身份验证,需要调用系统的PAM模块。下面修改vsftp对应的PAM配置文件/etc/pam.d/vsftpd,将默认配置使用“#”全部注释,添加相应字段,如下所示。
[root@Server01 ~]# vim /etc/pam.d/vsftpd
#%PAM-1.0
#session optional pam_keyinit.so force revoke
#auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth required pam_shells.so
#auth include password-auth
#account include password-auth
#session required pam_loginuid.so
#session include password-auth
auth required pam_userdb.so db=/vftp/vuser
account required pam_userdb.so db=/vftp/vuser

3.创建虚拟账户对应系统用户,并建立测试文件和目录。
[root@Server01 ~]# useradd -d /var/ftp/vuser vuser
[root@Server01 ~]# chown vuser.vuser /var/ftp/vuser
[root@Server01 ~]# chmod 555 /var/ftp/vuser
[root@Server01 ~]# touch /var/ftp/vuser/file1; mkdir /var/ftp/vuser/dir1
[root@Server01 ~]# ls -ld /var/ftp/vuser
dr-xr-xr-x. 6 vuser vuser 127 Jul 21 14:28 /var/ftp/vuser

4.修改/etc/vsftpd/vsftpd.conf
anonymous_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
local_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
write_enable=NO
guest_enable=YES
guest_username=vuser
listen=YES
Listen_ipv6=NO
pam_service_name=vsftpd 9

5.设置防火墙放行和SELinux允许,重启vsftpd服务
6.在Client1上测试
使用虚拟账号user2user3登录FTP服务器,进行测试,会发现虚拟账号登录成功,并显示FTP服务器目录信息。
[root@Client1 ~]# ftp 192.168.10.1
Connected to 192.168.10.1 (192.168.10.1).
220 (vsFTPd 3.0.2)
Name (192.168.10.1:root): user2
……

我的更多文章

下载客户端阅读体验更佳

APP专享