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