vsftp文件服務,vsftpd基於mysql

今天來說三個文件共享服務,首先說一下vsftp,即爲ftp(文件傳輸協議),vsftp非常安全的ftp,因爲早期ftp是明文的,早期還不會有人來竊取數據,隨着時代的發展,信息安全越來越受到重視,故ftp經過發展後出現了vsftp的版本。

ftp是一種應用層的服務,通常只能用於linux和linux之間或者linux即unix間文件共享,不能與windows之間文件共享。在應用層協議中監聽於port21。爲了使客戶端與服務器端能夠互動,而不僅僅是請求報文,ftp有兩種數據,一種爲命令連接,爲文件管理類命令,還有一種是數據連接,用於數據傳輸。數據的請求方式如下:

 主動:有服務器創建連接

                                  命令: Client50000 --> Server: 21

               數據:Server : 20/tcp -->  Client: 50000+

 被動:由客戶端創建連接

                                  命令:Client50000 --> Server: 21

                                  數據:Client:   50000+1 --> Server: 隨機端口

在連接時會產生響應碼,用於反饋信息連接的返回值:

                          1xx:信息

                          2xx:成功類的狀態碼

           3xx:提示需進一步提供補充類信息的狀態碼

           4xx:客戶端錯誤

           5xx:服務端錯誤

在Centos中使用的是vsftpd

 需要首先安裝vsftpd

yum install vsftpd


用戶認證配置文件:/etc/pam.d/vsftpd       

服務腳本:/etc/rc.d/init.d/vsftpd

配置文件目錄:/etc/vsftpd

      主配置文件:/etc/vsftpd/vsftpd.conf

共享資源位置:/var/ftp

匿名用戶(映射爲ftp用戶)共享資源位置:/var/ftp

系統用戶通過ftp訪問的資源的位置,用戶自己的家目錄

虛擬用戶通過ftp訪問的資源的位置:給虛擬用戶指定的映射成爲系統的用戶的家目錄

 啓動服務 service vsftpd start 

 可以使用ss -tan查看是否監聽21端口:

wKiom1VUD-_joXE6AADl-u3RQ10742.jpg


    在使用ftp時有兩種用戶一種爲系統用戶,還有一種爲匿名用戶,當匿名用戶訪問時,會映射爲ftp,共享資源爲/var/ftp目錄下。下面介紹了vsftpd的配置文件以及ftp用戶的簡介:

    Centos 6.6下:

    用戶認證配置文件:/etc/pam.d/vsftpd       

    服務腳本:/etc/rc.d/init.d/vsftpd

    配置文件目錄:/etc/vsftpd

        主配置文件:/etc/vsftpd/vsftpd.conf

    共享資源位置:/var/ftp

    匿名用戶(映射爲ftp用戶)共享資源位置:/var/ftp

    系統用戶通過ftp訪問的資源的位置,用戶自己的家目錄

    虛擬用戶通過ftp訪問的資源的位置:給虛擬用戶指定的映射成爲系統的用戶的家目錄


  匿名用戶登錄,顯示的是服務器端/var/ftp/目錄下的文件,輸入的用戶名ftp,密碼爲空:


wKioL1VUFo_DMK4dAAEdUQiPR2w730.jpg

  

通過使用help可以獲得幫助命令:

wKioL1VUF4rTGWrvAAFJqrX0YO0180.jpg

可以在windows下執行:

wKioL1VUGEjA_dL4AAHTuHYN6Fo385.jpg


使用系統用戶登錄:

wKioL1VUStOTd-ycAAERPuuNl6Q663.jpg


若想要上傳文件至服務器端,需要將服務器端的配置文件中更改如下的權限,並且由於服務器端的/etc/ftp目錄的權限都爲root,需要創建一個目錄,將文件夾權限中增加ftp

 

/etc/vsftpd/vsftpd.conf

匿名用戶的配置:

anonymous_enable=YES

#anon_upload_enable=YES   是否允許匿名用戶上傳數據

#anon_mkdir_write_enable=YES  是否允許匿名用戶創建目錄

#anon_other_write_enable=YES  是否能刪除文件

注意:在配置文件中,配置行需要頂格不能有空格;更改完配置文件後需重啓服務。

 

增加ftpupload的權限:

wKiom1VUTeOgz7IvAACblN-BWDs579.jpg


在客戶端使用lcd命令切換至客戶端的目錄如/etc,使用put命令上傳文件至服務器端upload,還能夠添加刪除目錄如下:


wKiom1VUT6DyUhubAAHs47q9C2A373.jpg



   系統用戶的配置:

             local_enable=YES

             write_enable=YES

            local_umask=022

 

   禁錮所有的用戶在家目錄下,這樣可以保障服務器端的安全性:

            #chroot_local_user=YES


系統用戶默認是有讀寫權限的,共享目錄爲家目錄:

wKiom1VUUuDRUXBNAAFndShz0P0613.jpg


禁錮指定的ftp本地用戶在家目錄

#chroot_list_enable=YES

# (default follows)

#chroot_list_file=/etc/vsftpd/chroot_list

 

如下11爲用戶限制,在chroot_list文件內,不能切換至別的目錄,test則可以自由切換:

wKiom1VUV9yh5fa0AALgQKr5F20839.jpg


日誌

xferlog_enable=YES

xferlog_std_format=YES

#xferlog_file=/var/log/xferlog

 

改變上傳文件的屬主:

#chown_uploads=YES

#chown_username=whoever

 

鏈接超時時長

#idle_session_timeout=600

數據鏈接超時時長

#data_connection_timeout=120

 

vsftpd使用pam完成用戶認證,其用到的pam配置文件:

pam_service_name=vsftpd

是否啓用控制用戶登錄的列表文件

userlist_enable=YES     

userlist_deny=YES      默認 /etc/vsftpd/user_list 

 

連接限制:

max_clients :  最大併發連接數;

max_per_ip:每個ip可同時發起的併發請求;

 

傳輸速率:

anno_max_rate 匿名用戶最大傳輸速率,單位是“字節/秒”

local_max_rate: 本地用戶最大傳輸速率,單位是“字節/秒”

 

虛擬用戶:  

         所有的虛擬用戶會被統一映射爲一個指定的系統賬號,訪問的共享位置即爲此係統賬號的家目錄;

 

        各虛擬用戶可被賦予不同的訪問權限,通過匿名用戶的權限控制參數進行指定;

  

         虛擬用戶賬號的存儲方式:

                 文件:編輯文件

                             奇數行爲用戶名

                              偶數行爲密碼

 

                              此文件需要被編碼爲hash格式;

                 關係型數據庫中的表中:

                              即時查詢數據庫完成用戶認證;

    

 

通過mysqlvsftp構建虛擬用戶:

    一、安裝所需要程序    

   mysql庫:

                               pam要依賴於pam-mysql                                

                                  yum - install vsftpd pam_mysql mysql-devel mysql-server

               注意pam_mysql由epel源提供。

 

二、創建虛擬用戶賬號

1.準備數據庫及相關表

首先請確保mysql服務已經正常啓動。而後,按需要建立存儲虛擬用戶的數據庫即可,這裏將其創建爲vsftpd數據庫。


2、添加測試的虛擬用戶

根據需要添加所需要的用戶,需要說明的是,這裏將其密碼爲了安全起見應該使用PASSWORD函數加密後存儲。


創建數據庫vsftpd:

[root@localhost yum.repos.d]# mysql

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 10

Server version: 5.1.73 Source distribution


Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.


Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


mysql> CREATE DATABASE vsftpd;

Query OK, 1 row affected (0.00 sec)


mysql> GRANT SELECT ON vsftpd.* TO  vsftpd@'172.16.%.%' IDENTIFIED BY 'cd521709';

Query OK, 0 rows affected (0.00 sec)


mysql> FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.00 sec)


首先創建數據庫vsftpd,可以在客戶端登陸查看服務器端的數據庫:

[root@localhost pam.d]# mysql -uvsftpd -h172.16.249.108 -p

Enter password: 

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MySQL connection id is 11

Server version: 5.1.73 Source distribution


Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


MySQL [(none)]> SHOW DATABASES;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| test               |

| vsftpd             |

+--------------------+

3 rows in set (0.00 sec)

在服務器端創建table:

mysql> use vsftpd;

Database changed

mysql>  CREATE TABLE users (

    ->  id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,

    -> name VARCHAR(50) BINARY NOT NULL,

    -> password CHAR(48) BINARY NOT NULL );

Query OK, 0 rows affected (0.02 sec)


查看錶內信息:

mysql> DESC users;

+--------+------------------+------+-----+---------+----------------+

| Field  | Type             | Null | Key | Default | Extra          |

+--------+------------------+------+-----+---------+----------------+

| id     | int(10) unsigned | NO   | PRI | NULL    | auto_increment |

| name   | varchar(50)      | NO   |     | NULL    |                |

| password | char(48)         | NO   |     | NULL    |                |

+--------+------------------+------+-----+---------+----------------+

3 rows in set (0.00 sec)

 

mysql> insert into users(name,password) values('tom',password('magedu'));

Query OK, 1 row affected (0.00 sec)

 

mysql> insert into users(name,password) values('jerrt',password('magedu'));

Query OK, 1 row affected (0.00 sec)

 

查看所有用戶信息

mysql> SELECT * FROM users;

+----+-------+-------------------------------------------+

| id | name  | password                                    |

+----+-------+-------------------------------------------+

|  1 | tom   | *6B8CCC83799A26CD19D7AD9AEEADBCD30D8A8664 |

|  2 | jerrt | *6B8CCC83799A26CD19D7AD9AEEADBCD30D8A8664 |

+----+-------+-------------------------------------------+

2 rows in set (0.00 sec)


三、配置vsftpd

 

1.建立pam認證所需文件

 ftp服務器端,非mysql服務器端

#vim /etc/pam.d/vsftpd.mysql

添加如下兩行

auth required pam_mysql.so user=vsftpd passwd=cd521709 host=172.16.249.108 db=vsftpd table=users usercolum=name passwdcolumn=password crypt=0

account required pam_mysql.so user=vsftpd passwd=cd521709 host=172.16.249.108 db=vsftpd table=users usercolum=name passwdcolumn=password crypt=0


2.修改vsftpd的配置文件,使其適應mysql認證

 

建立虛擬用戶映射的系統用戶及對應的目錄

# useradd -s /sbin/nologin -d /var/ftproot vuser   將創建的虛擬用戶的家目錄指定爲/var/ftproot

# chmod go+rx /var/ftproot


請確保/etc/vsftpd.conf中已經啓用了以下選項

anonymous_enable=YES

local_enable=YES

write_enable=YES

anon_upload_enable=NO

anon_mkdir_write_enable=NO

chroot_local_user=YES


而後添加以下選項

guest_enable=YES

guest_username=vuser


並確保pam_service_name選項的值如下所示

pam_service_name=vsftpd.mysql


如下爲自己的配置:

pam_service_name=vsftpd.mysql

userlist_enable=YES

tcp_wrappers=YES

 

guest_enable=YES

guest_username=vuser


可以使用windows中的cmd來登陸校驗:

wKiom1VW0FKRGmNlAACgOKUZ9ZY599.jpg




五、配置虛擬用戶具有不同的訪問權限

 

vsftpd可以在配置文件目錄中爲每個用戶提供單獨的配置文件以定義其ftp服務訪問權限,每個虛擬用戶的配置文件名同虛擬用戶的用戶名。配置文件目錄可以是任意未使用目錄,只需要在vsftpd.conf指定其路徑及名稱即可。

 

1、配置vsftpd爲虛擬用戶使用配置文件目錄

 

#vim /etc/vsftpd/vsftpd.conf

添加如下選項

 

user_config_dir=/etc/vsftpd/vusers_config

 

2、創建所需要目錄,併爲虛擬用戶提供配置文件

 

# mkdir /etc/vsftpd/vusers_config/

# cd /etc/vsftpd/vusers_config/

# touch tom jerry

 

3、配置虛擬用戶的訪問權限

 

虛擬用戶對vsftpd服務的訪問權限是通過匿名用戶的相關指令進行的。比如,如果需要讓tom用戶具有上傳文件的權限,可以修改/etc/vsftpd/vusers_config/tom文件,在裏面添加如下選項即可。

anon_upload_enable={YES|NO}

anon_mkdir_write_enable={YES|NO}

anon_other_write_enable={YES|NO}

 

tom文件中

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES


則可上傳、創建、刪除文件:

wKioL1VW3GrCp1ivAAINn6UZ1Gg934.jpg


jerrt文件中

anon_upload_enable=NO

anon_mkdir_write_enable=NO

anon_other_write_enable=NO


則不能上傳、創建、刪除文件

wKioL1VW3iTAygsNAAGKrBmed9A171.jpg













發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章