ftp 采用明文的数据传输方式,如果使用本地账户登录ftp服务器,若该用户的用户名和密码被别人抓包抓到,其他人就可以使用该账号登录ftp服务器,产生不安全的情况。

可以使用虚拟账号,在ftp服务器上将该虚拟账号映射为本地账号,这样即使账号在网络上被截获,也只是在系统上不存在的账号,无法登录系统。可以通过重新编译vdftpd的源代码来使vsftpd支持mysql数据库,或者使用pureftp 服务器来实现虚拟账号登录ftp服务器。

pureftp原理:

使用 php页面来管理mysql数据库,在数据库中添加虚拟账号,当ftp客户端访问ftp服务器时,将mysql数据库中的虚拟账号映射为本地账号进而登录ftp服务器。

实现步骤:

1.新建挂载点,挂载光盘, 编辑yum工具

[root@localhost ~]# mkdir /mnt/cdrom

[root@localhost ~]# mount /dev/cdrom /mnt/cdrom

mount: block device /dev/cdrom is write-protected, mounting read-only

[root@localhost ~]# vim /etc/yum.repos.d/rhel-debuginfo.repo

[rhel-server]

name=Red Hat Enterprise Linux server

baseurl=file:///mnt/cdrom/Server

enabled=1

gpgcheck=1

gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release

2.安装以下软件包:httpd php php-mysql mysql mysql-server mysql-devel

[root@localhost ~]# yum install httpd php php-mysql mysql mysql-server mysql-devel -y

3.启动mysql数据库,并设置密码

[root@localhost ~]# service mysqld start

[root@localhost ~]# mysqladmin -u root -p password "123456"

4.需要使用以下软件包:

pure-ftpd-1.0.36.tar.gz pureftp主程序

ZendOptimizer-3.3.3-linux-hicode.tar.gz php加速工具

PureAdmin-0.3.tar.gz pureftp的管理工具

5.拆解pure-ftpd-1.0.36.tar.gz 包

[root@localhost ~]# tar -zxvf pure-ftpd-1.0.36.tar.gz -C /usr/local/src/

6. 检测预编译环境:

[root@localhost ~]# cd /usr/local/src/ pure-ftpd-1.0.36

./configure \

--prefix=/usr/local/pureftpd \

--with-mysql \

--with-shadow \

--with-pam \

--with-welcomemsg \

--with-uploadscript \

--with-cookie \

--with-virtualchroot \

--with-virtualhosts \

--with-diraliases \

--with-quotas \

--with-puredb \

--with-sysquotas \

--with-ratios \

--with-ftpwho \

--with-throttling \

--with-language=simplified-chinese

[root@localhost pure-ftpd-1.0.36]# make && make install

7. 切换到pureftp的安装目录,缺少etc目录,手工创建该目录

[root@localhost ~]# cd /usr/local/pureftpd/

[root@localhost pureftpd]# mkdir etc

虚拟账号服务器pureftp_虚拟账号邮件服务器

虚拟账号服务器pureftp_pureftp_02

8.生成pureftp的配置文件

cp /usr/local/src/pure-ftpd-1.0.36/configuration-file/pure-ftpd.conf /usr/local/pureftpd/etc/

9.

cp /usr/local/src/pure-ftpd-1.0.36/configuration-file/pure-config.pl /usr/local/pureftpd/sbin/

# chmod 755 /usr/local/pureftpd/sbin/pure-config.pl

10.产生控制脚本

cd /usr/local/src/pure-ftpd-1.0.36/contrib

[root@localhost contrib]# chmod 755 redhat.init

[root@localhost contrib]# cp redhat.init /etc/init.d/pureftpd

11.编辑该控制脚本文件

vim /etc/init.d/pureftpd

$fullpath /usr/local/pureftpd/etc/pure-ftpd.conf --daemonize

pureftpwho=/usr/local/pureftpd/sbin/pure-ftpwho

fullpath=/usr/local/pureftpd/sbin/$prog

[root@localhost contrib]# service pureftpd restart

12.将pureftpd 加入chkconfig的管理之列

[root@localhost contrib]# chkconfig --add pureftpd

[root@localhost contrib]# chkconfig pureftpd on

[root@localhost contrib]# chkconfig --list |grep pur

pureftpd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭

13. 配置虚拟用户登录环境(家目录)

新建本地用户virtualftp

[root@localhost ~]# useradd virtualftp -d /ftproot -s /sbin/nologin

[root@localhost ~]# chmod -R 777 /ftproot/

14.编辑pureftp的配置文件

[root@localhost ~]# vim /usr/local/pureftpd/etc/pure-ftpd.conf

NoAnonymous yes 禁止匿名登录

CreateHomeDir yes 为用户创建家目录(例:/ftproot/user1)

15.重启pureftpd

虚拟账号服务器pureftp_pureftp_03

16.当ftp用户登录ftp服务器时,ftp根据自己的配置文件查找到mysql的配置文件,来

[root@localhost ~]# vim /usr/local/pureftpd/etc/pure-ftpd.conf

MySQLConfigFile /usr/local/pureftpd/etc/pureftpd-mysql.conf

17.将导入的pureftpd-mysql.conf 文件放到/usr/local/pureftpd/etc/下

[root@localhost ~]# cp pureftpd-mysql.conf /usr/local/pureftpd/etc/

18.编辑pureftpd-mysql.conf

[root@localhost ~]# vim /usr/local/pureftpd/etc/pureftpd-mysql.conf

MYSQLPassword tmppasswd

MYSQLCrypt md5

19. # wget http://www.yiyou.org/docs/PureAdmin_03_php/pureftp.sql

[root@localhost ~]# vim pureftp.sql

INSERT INTO admin VALUES ('admin',MD5('123')); 后台管理账号

20.导入该sql文件

[root@localhost ~]# mysql -u root -p <pureftp.sql

虚拟账号服务器pureftp_虚拟账号邮件服务器_04

21.进入mysql数据库,查看数据库使用情况

虚拟账号服务器pureftp_虚拟账号邮件服务器_05

虚拟账号服务器pureftp_pureftp_06

虚拟账号服务器pureftp_pureftp_07

22. 添加连接mysql用户

先用root登录mysql,执行

mysql>grant all privileges on ftpusers.* to ftp@localhost identified by 'tmppasswd';

mysql&gt;flush privileges;

mysql&gt;quit;

使用ftp账户测试登录:

# mysql -u ftp -p

Enter password:tmppasswd

虚拟账号服务器pureftp_pureftp_08

23.配置web管理界面Pureadmin

将压缩包释放到apache的站点主目录下

[root@localhost ~]# tar -zxvf PureAdmin-0.3.tar.gz -C /var/www/html/

24.进入/var/www/html/ 修改目录名字

[root@localhost ~]# cd /var/www/html/

[root@localhost html]# mv PureAdmin-0.3 pureadmin

25.修改PureAdmin的配置文件

[root@localhost html]# cd pureadmin/dx

[root@localhost pureadmin]# vim config.php

虚拟账号服务器pureftp_虚拟账号邮件服务器_09

26.重启httpd pureftpd

[root@localhost pureadmin]# service httpd restart

[root@localhost pureadmin]# service pureftpd restart

27 创建虚拟账号和本地账号的映射数据库

[root@localhost pureadmin]# vim /usr/local/pureftpd/etc/pure-ftpd.conf

PureDB /usr/local/pureftpd/etc/pureftpd.pdb

28.使用命令产生pureftpd.pdb 文件,可以使用/usr/local/pureftpd/bin/ 下的pure-pw命令来生成该文件,但是,需要每次都切换到该路径下来执行。可以使用环境变量

虚拟账号服务器pureftp_pureftp_10

echo PATH=$PATH:/usr/local/pureftpd/bin &gt;&gt;/etc/profile

source /etc/profile 或 . /etc/profile 使环境变量生效,或者重新登录系统

虚拟账号服务器pureftp_pureftp_11

29.新建讯账号test2 ,和本地账号virtualftp 映射

[root@localhost ~]# pure-pw useradd test2 -u virtualftp -g virtualftp -d /ftproot/test2 -m

建立用户数据库:

# pure-pw mkdb /usr/local/pureftpd/etc/pureftpd.pdb

 

虚拟账号服务器pureftp_虚拟账号邮件服务器_12

虚拟账号服务器pureftp_虚拟账号邮件服务器_13

虚拟账号服务器pureftp_虚拟账号邮件服务器_14

用户登录之前,家目录为空

虚拟账号服务器pureftp_虚拟账号邮件服务器_15

虚拟账号服务器pureftp_pureftp_16

虚拟账号服务器pureftp_虚拟账号邮件服务器_17