使用虚拟账号登录vsftpd服务器
2025-06-03 10:46阅读:
为了FTP服务器的安全,可以使用虚拟用户验证方式,也就是将虚拟的账号映射为服务器的实体账号,客户端使用虚拟账号访问FTP服务器。
要求:使用虚拟用户user2、user3登录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上测试
使用虚拟账号user2、user3登录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
……