二、如何基于PAM认证实现虚拟账号登陆FTP服务器
虚拟用户和系统本地用户的区别是:本地用户在系统的/etc/passwd文件中有相应的记录,而虚拟用户时针对vsftpd本身产生的,所以与/etc/passwd没有关系。
FTP服务器除了支持本地用户和匿名用户登录服务器,如果我们有许多用户来访问服务器的话,也支持虚拟用户的访问。那么我们为什么要使用虚拟账号呢,
因为匿名用户不能针对每个用户设置不同的权限,而且本地用户又存在安全问题,在这种情形下,虚拟用户就产生啦。
在配置之前我们需要安装db4和db4-utils组件,如果系统没有安装db4相关软件包的话,可以使用yum来安装 # yum install db4* -y
1、创建虚拟用户账号和密码(奇数行为用户名,偶数行为用户密码)
# touch /etc/vsftpd/virtual.users
# vim /etc/vsftpd/virtual.users
user1 ##奇数为用户名
RedHat ##偶数为用户的密码
user2
123456
2、使用db_load命令生成用户账户的数据库文件并设置相应的数据库文件权限。
# db_load -T -t hash -f /etc/vsftpd/virtual.users /etc/vsftpd/vsftpd.login.db
# chmod 600 /etc/vsftpd/vsftpd.login.db
3、配置PAM信息,在/etc/pam.d/创建一个文件,命名为vsftpd.pam(可自定义)
# vim /etc/pam.d/vsftpd.pam
auth required pam_userdb.so db=/etc/vsftpd/vsftpd.login
account required pam_userdb.so db=/etc/vsftpd/vsftpd.login
4、配置vsftpd.conf,我们也可以自己专为虚拟用户所使用的配置文件,这里我们使用系统默认的配置文档:
# vim /etc/vsftpd/vsftpd.conf 添加如下内容
5、创建相应的虚拟用户目录,用于虚拟用户访问FTP服务所用到的默认目录
# mkdir -p /var/ftp/virtual/{user1,user2}
# chown ftp.ftp /var/ftp/virtual/{user1,user2}
# touch /var/ftp/virtual/user2/user2.txt (测试)
6、我们使用user2虚拟账号登陆FTP服务器,看是否可以正常登陆,并且访问相应资源
总结:我们通过使用PAM认证来实现虚拟账户的登陆,而且每个虚拟账户对应的是一个普通系统用户,而且不能正常登陆FTP服务器,所以即被中间人攻击截取用户和密码,也没有任何意义的,因为获取的是一个虚拟账户,这样我们的服务器就相对安全了许多。