基於虛擬用戶的ftp服務器

因爲ftp是以明文傳輸的,因此,系統中的用戶就顯得相對不安全了,可是,咱們能夠將虛擬用戶和咱們的本地用戶映射。即便***抓到了ftp的用戶和密碼,也不能登錄系統。 php

目前有兩中方法1、基於pam認證的虛擬用戶ftp2、帶有web管理界面的pureftpdmysql




下面看看基於pam認證的虛擬用戶ftp安裝及使用。 linux

1、安裝ftp主程序 ios

[root@localhost ~]# cd /mnt/cdrom/Server/ web

[root@localhost Server]# rpm -ivh vsftpd-2.0.5-16.el5.i386.rpm sql

2生成虛擬用戶口令庫文件 數據庫

[root@localhost Server]# cd /etc/vsftpd/ apache

[root@localhost vsftpd]# vim account.txt vim

生成口令庫文件,並修改其權限: 安全

須要用到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中的MinUIDftp用戶的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的根目錄,能夠我看到系統爲咱們建立了三個目錄

相關文章
相關標籤/搜索