ftp 采用明文的数据传输方式,如果使用本地账户登录ftp服务器,若该用户的用户名和密码被别人抓包抓到,其他人就可以使用该账号登录ftp服务器,产生不安全的情况。 可以使用虚拟账号,在ftp服务器上将该虚拟账号映射为本地账号,这样即使账号在网络上被截获,也只是在系统上不存在的账号,无法登录系统。 1.新建挂载点,挂载光盘 [root@localhost ~]# mkdir /mnt/cdrom [root@localhost ~]# mount /dev/cdrom /mnt/cdrom 2.安装vsftpd [root@localhost ~]# rpm -ivh /mnt/cdrom/Server/vsftpd-2.0.5-16.el5.i386.rpm 3.产生文本文件,用于存放虚拟账号和密码 [root@localhost ~]# vim /etc/vsftpd/vuser.txt test1 ##虚拟账号test1 123 ##虚拟账号test1的密码 test2 ##虚拟账号test2 456 ##虚拟账号test2的密码 4.安装db_load 工具,使刚刚产生的账号和密码文件变为数据库文件,该工具位于软件包db4_util中。 [root@localhost Server]# rpm -ivh /mnt/cdrom/Server/db4-utils-4.3.29-10.el5.i386.rpm 5。使用db_load --help使用帮助。将uni账号文件变为数据库文件 [root@localhost ~]# db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db 6.当用户登录ftp服务器时,默认到/etc/passwd下进行账户验证,在/etc/vsftpd/vsftpd.conf中有一条语句:pam_service_name=vsftpd ,说明可是使用pam进行验证,验证文件叫vsftpd。 该文件为接口文件,告诉pam,验证时要调用哪些模块,以及模块的参数。 打开接口文件vsftpd [root@localhost vsftpd]# vim /etc/pam.d/vsftpd 该文件需要使用模块/lib/security/pam_userdb.so 查看该模块的手册: [root@localhost txts]# man /usr/share/doc/pam-0.99.6.2/txts/README.pam_userdb 可以看到pam_userdb模块是用来验证存放在数据库中的用户名和密码的。 db=/path/database ##用来说明数据库文件的位置 7.再次打开/etc/pam.d/vsftpd文件 auth required pam_userdb.so db=/etc/vsftpd/vuser account required pam_userdb.so db=/etc/vsftpd/vuser 虚拟账号验证成功后,需要将虚拟账号和本地账号进行映射 8.新建本地账户user1 [root@localhost txts]# useradd user1 [root@localhost txts]# passwd user1 9.查看vsftpd.conf手册 查找guest关键字,guest_enable :所有的非匿名用户登录后将作为guest用户,guest用户映射成为guest_username定义的用户名。 10.在vsftpd.conf中添加如下语句: guest_enable=YES guest_username=user1 11.重启ftp服务 [root@localhost txts]# service vsftpd restart 关闭 vsftpd: [确定] 为 vsftpd 启动 vsftpd: [确定] 12.测试: 13.给user1 的家目录添加r权限 [root@localhost home]# ll -d user1/ drwx------ 3 user1 user1 4096 09-16 16:58 user1/ [root@localhost home]# chmod o+r user1/ 14.再次访问 |