因爲ftp是以明文傳輸的,因此,系統中的用戶就顯得相對不安全了,可是,咱們能夠將虛擬用戶和咱們的本地用戶映射。即便***抓到了ftp的用戶和密碼,也不能登錄系統。
目前有兩中方法1、基於pam認證的虛擬用戶ftp;2、帶有web管理界面的pureftpd。mysql
下面看看基於pam認證的虛擬用戶ftp安裝及使用。
1、安裝ftp主程序
[root@localhost ~]# cd /mnt/cdrom/Server/
[root@localhost Server]# rpm -ivh vsftpd-2.0.5-16.el5.i386.rpm
2、生成虛擬用戶口令庫文件
[root@localhost Server]# cd /etc/vsftpd/
[root@localhost vsftpd]# vim account.txt
生成口令庫文件,並修改其權限:
須要用到db_load 工具,它在db4-utils-4.3.29-10.el5.i386.rpm包中
安裝
[root@localhost Server]# rpm -ivh db4-utils-4.3.29-10.el5.i386.rpm
[root@localhost vsftpd]# db_load -T -t hash -f ./account.txt account.db #生成加密後的賬號庫
[root@localhost vsftpd]# chmod 600 /etc/vsftpd/account.db #修改權限
3、新建一個虛擬用戶的PAM文件。加上以下兩行內容:
[root@localhost vsftpd]# vim /etc/pam.d/vsftp.vu
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/account
account required /lib/security/pam_userdb.so db=/etc/vsftpd/account
4.創建虛擬用戶,設置該用戶所要訪問的目錄,並設置虛擬用戶訪問的權限:
[root@localhost vsftpd]# useradd -d /home/ftpsite virtual_user
[root@localhost vsftpd]# chmod 700 /home/ftpsite
5.編輯/etc/vsftpd/vsftpd.conf文件
12 anonymous_enable=NO #修改
#禁用
#pam_service_name=vsftpd
#userlist_enable=YES
#tcp_wrappers=YES
#添加
guest_enable=YES #容許客戶訪問
guest_username=virtual_user #訪問者的用戶名爲virtual_user
pam_service_name=vsftpd.vu #指明pam認證的文件名
[root@localhost ~]# service vsftpd start #啓動ftp
在虛擬FTP服務器中,也能夠對各個用戶的權限進行設置。方法是在/etc/vsftpd/vsftpd.conf文件中添加以下一行:
user_config_dir=/etc/vsftpd_user_conf
而後在用戶配置文件目錄下建立相應的用戶配置文件,好比爲上述名爲test的用戶建立一個配置文件
[root@localhost ~]# vim /etc/vsftpd_user_conf/test
write_enable=YES #可以上傳
anon_upload_enable=YES #可以下載
local_root=/home/ftpsite/test #家目錄
建立用戶家目錄,而且將家目錄用戶名和用戶組改成virtual_user
[root@localhost ~]# service vsftpd restart
測試
上傳文件
9.添加FTP用戶的步驟
1.在account.txt中添加用戶名和密碼
2.運行以下命令,將用戶名和密碼添加到數據庫中
db_load -T -t hash -f ./account.txt /etc/vsftpd/account.db
3.在/home/ftpsite中新建一個文件夾,與用戶明相同
4.在vsftpd_user_conf文件夾下新建和用戶名相同的文件,並在其中加入
local_root=/home/ftpsite/用戶名
下面,pureftpd安裝及使用。
前提,咱們使用×××的lamp環境
一、下載pureftpd
二、安裝
解壓
[root@zlj ~]# tar -zxvf pure-ftpd-1.0.36.tar.gz -C /usr/local/src/
預編譯
[root@zlj pure-ftpd-1.0.36]# ./configure --prefix=/usr/local/pureftpd --with-mysql=/usr/local/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@zlj pure-ftpd-1.0.36]# make
安裝
[root@zlj pure-ftpd-1.0.36]# make install
3、生成pure-ftpd的服務腳本
[root@zlj pure-ftpd-1.0.36]# cd configuration-file/
[root@zlj configuration-file]# chmod a+x pure-config.pl
[root@zlj configuration-file]# cp pure-config.pl /usr/local/pureftpd/sbin/
[root@zlj pure-ftpd-1.0.36]# mkdir /usr/local/pureftpd/etc
[root@zlj pure-ftpd-1.0.36]# cp configuration-file/pure-ftpd.conf /usr/local/pureftpd/etc/
[root@zlj pure-ftpd-1.0.36]#
4、生成pure-ftpd的服務
[root@zlj configuration-file]# cd ..
[root@zlj pure-ftpd-1.0.36]# cp contrib/redhat.init /etc/init.d/pureftpd
[root@zlj pure-ftpd-1.0.36]# vim /etc/init.d/pureftpd
fullpath=/usr/local/pureftpd/sbin/$prog
pureftpwho=/usr/local/pureftpd/sbin/pure-ftpwho
$fullpath /usr/local/pureftpd/etc/pure-ftpd.conf --daemonize>/dev/null
killall pure-ftpd
修改權限
[root@zlj pure-ftpd-1.0.36]# chmod 755 /etc/init.d/pureftpd
添加開機啓動
[root@zlj pure-ftpd-1.0.36]# chkconfig pureftpd on
啓動
[root@zlj pure-ftpd-1.0.36]# service pureftpd start
5、配置匿名用戶登陸環境
修改配置文件
[root@zlj pure-ftpd-1.0.36]# vim /usr/local/pureftpd/etc/pure-ftpd.conf
其中有幾項要修改:
chrootEveryone yes 限定在本身的家目錄
NoAnonymous yes 不容許匿名登陸
Bind 127.0.0.1,21 監聽本機迴環 <可選>
Bind 192.168.0.254,21 監聽本機IP <自行添加的,非必須>
CreateHomeDir yes 容許用戶登陸後自動建立家目錄 <必須>
6、配置虛擬用戶登陸環境
[root@zlj pure-ftpd-1.0.36]# mkdir /ftproot
[root@zlj pure-ftpd-1.0.36]# chmod -R 777 /ftproot<這不不作能夠能會引發登陸時報421錯誤>
[root@zlj pure-ftpd-1.0.36]# useradd virtualftp -d /ftproot -s /sbin/nologin -M<建立接下來的虛擬用戶對應的系統用戶>
[root@zlj pure-ftpd-1.0.36]# chown virtualftp:virtualftp /ftproot/
[root@zlj pure-ftpd-1.0.36]#
七、虛擬用戶使用篇
流程圖:
(一)用pureDB認證
A、修改配置文件
[root@zlj pure-ftpd-1.0.36]# vim /usr/local/pureftpd/etc/pure-ftpd.conf
PureDB /usr/local/pureftpd/pureftpd.pdb
[root@zlj pure-ftpd-1.0.36]# cd /usr/local/pureftpdbin/
B、添加用戶
[root@zlj bin]# ./pure-pw useradd user1 -u virtualftp -g virtualftp -d /ftproot/user1 -m
說明:
user1是用戶名,-u virtualftp是其實際的linux用戶,-d指定起始目錄,並鎖定於該目錄。若是不鎖定,則用-D;若是須要不一樣的權限,能夠創建新的linux用戶與組
若是用的系統自帶的ftp用戶,這樣的話還需修改配置文件pure-ftpd.conf中的MinUID爲ftp用戶的UID 14,不然登陸時會出現530錯誤;因此這裏建議建立另外一個非系統自帶的用戶作映射
C、 創建用戶數據庫:
[root@zlj bin]# ./pure-pw mkdb /usr/local/pureftpd/pureftpd.pdb
說明:從此每添加或修改用戶數據庫都應該執行一次mkdb
D、刪除一個用戶
pure-pw userdel <login> [-f <passwd file>] [-m]
這時,用戶的信息會被從指定的 passwd 文件中刪除,可是用戶的 home 目錄會被保留,須要手工刪除
E、更改一個用戶口令
pure-pw passwd <login> [-f <passwd file>] [-m]
F、顯示用戶信息
/etc/pureftpd.passwd 文件中記錄的信息不方便用戶的閱讀,所以 pure-ftpd 提供了顯示用戶信息的命令。其語法是:
pure-pw show <login> [-f <passwd file>]
G、重啓
[root@zlj bin]# service pureftpd restart
Stopping pure-config.pl:
Starting pure-config.pl:
H、測試
[root@zlj bin]# ftp 10.106.10.7
(二)用mysql認證
A、配置文件
[root@zlj bin]# vim /usr/local/pureftpd/etc/pure-ftpd.conf
MySQLConfigFile /usr/local/pureftpd/etc/pureftpd-mysql.conf #指明sql的配置文件
B、下載web管理程序pureadmin0.3
解壓
[root@zlj ~]# tar xvf PureAdmin-0.3.tar.gz -C /usr/local/apache/htdocs/
[root@zlj ~]# cd /usr/local/apache/htdocs/
更名
[root@zlj htdocs]# mv PureAdmin-0.3/ pueradmin
[root@zlj htdocs]# cd pueradmin/
[root@zlj pueradmin]#
C、導入數據到mysql
配置文件
[root@zlj ~]# vim pureftp.sql
注意其中的
22 -- Login = ftp 此爲登陸數據庫的用戶
23 -- Password = tmppasswd 此爲登陸數據庫的密碼
31 CREATE DATABASE ftpusers; 建立名爲ftpusers的庫
50 INSERT INTO admin VALUES ('admin',MD5('passwd')); 此爲登陸web用的用戶密碼,可自行修改
導入數據,導入前可能須要修改此sql文件的15行:前2個減號空一格-- ------------------------------------------------------->
導入
提示
ERROR 1064 (42000) at line 39: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TYPE=MyISAM' at line 5
說明數據庫不支持這種引擎,修改配置
再試
D、查看mysql、添加鏈接mysql用戶
先用root登陸mysql,執行
mysql>grant all privileges on ftpusers.* to ftp@localhost identified by 'tmppasswd';
mysql>flush privileges;
mysql>quit;
F、修改pureadmin的配置文件
[root@zlj ~]# cd /usr/local/apache/htdocs/pueradmin/
[root@zlj pueradmin]# vim config.php
<?php
$cfg['dbhost']='localhost'; //mysql host
$cfg['dbname']='ftpusers'; //mysql db name 所用的庫<與前面導入的sql中要一致>
$cfg['dbuser']='ftp'; //mysql user 登陸mysql的賬號
$cfg['dbpasswd']='tmppasswd'; //mysql password 登陸mysql的密碼
//ftp config
$cfg['page']=10; 每頁顯示的用戶數量
//ftp passwd type : TEXT/CRYPT/MD5
$cfg['passwdtype']='MD5'; 認證模式<要與pureftpd-mysql.conf中一致>
//ftp default
$cfg['uid']=500; //uid 映射虛擬用戶的UID,即剛建立的virtualftp用戶
$cfg['gid']=501; //gid 同上
$cfg['dir']='/ftproot/'; //dir 默認家目錄
$cfg['qf']=0; //quotafiles 文件個數限制,0爲不限制
$cfg['qs']=100; //quotasize 總文件大小
$cfg['ul']=0; //ULBandwidth 上傳速率限制
$cfg['dl']=200; //DLBandwidth 下載速率限制
$cfg['ur']=0; //ULRatio 上傳比
$cfg['dr']=0; //DLRatio 下載比
$cfg['status']=1; //status 狀態,1爲激活;0爲禁止
$cfg['ip']= '*'; //ipaddress 可訪問IP,*爲全部
?>
G、下載pureftpd-mysql.conf文件
鏈接數據庫mysql的配置文件
[root@zlj pueradmin]# cd /usr/local/pureftpd/etc/
[root@zlj etc]# vim pureftpd-mysql.conf
修改以下:
MYSQLUser ftp
MYSQLPassword tmppasswd
MYSQLDatabase ftpusers
MYSQLCrypt md5
[root@zlj etc]# service pureftpd restart
H、登錄,測試
點擊新建,新建一個用戶
一樣建立user3
登錄
提示失敗,查看日誌
May 24 03:04:25 zlj pure-ftpd: (?@10.106.10.9) [INFO] 自 10.106.10.9 的新鏈接
May 24 03:04:30 zlj pure-ftpd: (?@10.106.10.9) [ERROR] SQL server好像當掉了 [Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)]
May 24 03:04:34 zlj pure-ftpd: (?@10.106.10.9) [WARNING] 使用者[user2]驗證失敗
提示咱們找不到/var/lib/mysql/mysql.sock,咱們建立這樣的文件
[root@zlj mysql]# mkdir /var/lib/mysql/ #建立文件
[root@zlj mysql]# ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock #建立軟鏈接
再次測試
User2可以成功
User3也可以成功
查看ftp的根目錄,能夠我看到系統爲咱們建立了三個目錄