ftp是在internet上应用较为广泛的文件共享服务,在linux下可以通过pureftp,vsftpd等来实现。ftp的几种主要验证方式有1.匿名帐号
2.系统帐号
3.虚拟帐号
ftp采用的是tcp的21号端口和20号端口。21号主要用于链接控制。20号用来传输数据。明文传递。这样,如果我们采用系统账户登录ftp,在网络传输的过程中账户名密码可能被人抓包。对操作系统的安全造成威胁。而虚拟帐号登录的时候采用的是一个在系统中不存在的帐号。当经过系统pam验证后,就会在系统内映射为一个系统用户。这样即使被抓包,也是个根本无法登录系统的帐号。不会对系统造成威胁。
使用vsftpd实现虚拟账户访问ftp
实验步骤:
1.安装vsftpd. db4-load(主要用于生成虚拟帐号的数据库文件)
#yum install vsftpd db4-load -y
2.生成虚拟账户的数据库文件vuser(文件路径自己定义)
#vim vuser user1 123 user2 456 #db-load -T -t hash -f vuser vuser.db
在上边的vuser中 文件的奇数行对应虚拟账户的用户名。偶数行对用密码
3.修改文件权限。仅允许root查看修改
#chmod 600 vuser*
4.添加虚拟用户对应的系统用户virftp
#useradd -d /var/ftpd -s /sbin/nologin virftp #chmod 755 /var/ftpd
5.为虚拟用户创建pam认证文件
#vim /etc/pam.d/vuser #PAM-1.0 //注意这里的#。不要和上边的搞混 auth required pam_userdb.so db=/etc/vsftpd/vuser account required pam_userdb.so db=/etc/vsftpd/vuser
6.修改vsftpd配置文件
#grep -v "^$" /etc/vsftpd/vsftpd.conf |grep -v "^#" anonymous_enable=YES local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=YES pam_service_name=vuser //vuser是刚才编写的pam文件 userlist_enable=YES tcp_wrappers=YES guest_enable=YES guest_username=virftp
这样就可以使用虚拟用户访问ftp。如果实验不同。注意自己的iptables防火墙和selinux状态
当需要对不同的用户区别不同的权限,可以在vsftpd主目录下新建文件夹以存放用户配置文件。同时在vsftpd主配置文件末尾追加
user_config_dir=/etc/vsftpd/virftp
在虚拟用户的配置文件目录中可以创建虚拟用户账户命名的文件对账户权限进行控制,需要注意的是。虚拟用户被默认按照匿名用户控制以降低权限。所以在配置文件中应按匿名用户的配置来写
如 anon_write_enable=YES
转载于:https://blog.51cto.com/itanony/1298466