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
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
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
21.进入mysql数据库,查看数据库使用情况
22. 添加连接mysql用户
先用root登录mysql,执行
mysql>grant all privileges on ftpusers.* to ftp@localhost identified by 'tmppasswd';
mysql>flush privileges;
mysql>quit;
使用ftp账户测试登录:
# mysql -u ftp -p
Enter password:tmppasswd
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
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命令来生成该文件,但是,需要每次都切换到该路径下来执行。可以使用环境变量
echo PATH=$PATH:/usr/local/pureftpd/bin >>/etc/profile
source /etc/profile 或 . /etc/profile 使环境变量生效,或者重新登录系统
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
用户登录之前,家目录为空