漫漫運維路——文件服務系列之VSFTP

Linux中,用於實現文件傳輸和共享的服務比較多,VSFTP就是其中被使用較多的一個文件服務,而說到VSFTP就不得不說一個話題,那就是FTP

FTPFile Transfer Procotol的首字母縮寫,是一個用於控制Internet上文件傳輸的協議,FTP協議一般採用明文進行數據傳輸,雖然較之安全性不如HTTPS,設置HTTP,但是其建立連接的過程比較簡單,所以其傳輸速率就更快。

FTP在完成數據傳輸之前就需要建立連接,而傳輸數據的時候又要建立專門的數據傳輸連接,由此可把FTP連接分爲兩種,一種叫命令連接,一種叫數據連接,命令連接開始於數據連接之前,負責把用戶登錄後輸入的相關命令發送到服務器端,實現於服務器端交互;而數據連接則發生於當建立命令連接後客戶端開始請求相關文件時,客戶端每請求一個文件就會新建立一個數據連接,而當請求的文件傳輸完成後,該數據連接就會被拆除。而從數據連接請求發出方的角度來看,又可把FTP的連接分爲主動連接和被動連接。其區別如下:

連接類型

發起方

發起端口

響應方

響應端口

主動連接(命令連接)

Client

tcp/5000

Server

tcp/21

主動連接(數據連接)

Server

tcp/20

Client

tcp/5000+1

被動連接(命令連接)

Client

tcp/5000

Server

tcp/21

被動連接(數據連接)

Client

tcp/5000+1

Server

隨機

Linux中實現FTP文件傳輸功能的軟件以VSFTP最常見,接下來就將通過實驗的方式對VSFTP進行介紹。

1:配置vsftp讓匿名用戶具有上傳和下載權限。

安裝vsftp

[root@localhost ~]# yum install vsftpd -y

編輯vsftp主配置文件/etc/vsftpd.conf

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 

listen=YES#以獨立守護進程監聽在21號端口

write_enable=YES#設置可寫

anonymous_enable=YES#設置啓用匿名用戶

anon_mkdir_write_enable=YES#設置匿名用戶可以新建目錄

anon_other_write_enable=YES#設置匿名用戶新建的文件或目錄其他用戶有權限

anon_upload_enable=YES#設置匿名用戶可上傳文件

新建匿名用戶上傳文件專用目錄,並更改屬主爲ftp

[root@localhost ~]# mkdir /var/ftp/upload

[root@localhost ~]# chown ftp:ftp /var/ftp/upload/

重啓服務並測試

[root@localhost ~]# service vsftpd restart

Shutting down vsftpd:                                      [  OK  ]

Starting vsftpd for vsftpd:                                [  OK  ]

[root@localhost ~]# service iptables stop#關閉防火牆,也可以設置規則方形ftp

登錄進入ftp並切換至upload目錄


wKiom1VRW8jQsSq7AAH6rB_ZfvA133.jpg 

 

新建空目錄


wKiom1VRW-KTpLWfAAImdWEwsdw861.jpg

 

成功!

2:設置允許本地用戶登錄,並禁錮其只能在其家目錄內

編輯配置文件

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 

把配置文件內容更改爲如下所示

listen=YES

anonymous_enable=NO#設置禁止匿名用戶登錄

write_enable=YES#設置可寫

local_enable=YES#:設置允許本地用戶登錄

chroot_local_user=YES#:設置把本地用戶禁錮在家目錄裏

userlist_enable=YES#設置啓用控制用戶登錄的列表文件

userlist_file=/etc/vsftpd/userlist#和上一項同用,定位列表文件位置

userlist_deny=YES#設置使用登錄列表爲拒絕用戶的名單

pam_service_name=vsftpd#設置使用可插入式認證模塊的服務名爲vsftpd

添加用戶用於測試


wKiom1VRW_vgXHxMAAEepqipVko302.jpg

 

新建userlist文件並設置禁止root用戶登錄ftp服務

[root@localhost test]# echo "root">>/etc/vsftpd/userlist

重啓測試


wKioL1VRXZCzWrUJAAKyozmq6ak176.jpg

 

使用root用戶登錄測試


wKioL1VRXbOiYj9uAAP7CSRFLdc703.jpg

 

到此可以看出當使用root登錄時直接會拒絕,而當使用test用戶登錄時則一切正常,且被禁錮於test用戶的家目錄/home/test目錄下。

3:把虛擬用戶的賬號信息保存於單獨的服務器的MariaDB數據庫上

1、實驗規劃:

主機

IP

安裝服務

A

192.168.252.11

VSFTPD

B

192.168.252.10

MariaDB

2、配置主機B

安裝MariaDB就不再贅述,在此直接配置MariaDB

首先創建保存賬號信息的數據庫,並授權給遠程主機A能通過ftp用戶登錄

MariaDB [ftp]> CREATE DATABASE ftp;#創建數據庫

MariaDB [ftp]> GRANT ALL ON ftp.* TO 'ftp'@'192.168.252.11' IDENTIFIED BY "test";#授權

MariaDB [ftp]> FLUSH PRIVILEGES;#通知MariaDB重讀授權信息

MariaDB [ftp]> CREATE TABLE users (

    -> id int AUTO_INCREMENT NOT NULL,

    -> name char(20) binary NOT NULL,

    -> password char(48) binary NOT NULL,

    -> primary key(id)

    -> );#創建users表,

在數據庫裏插入兩條用戶信息


wKioL1VRXd3z9Qj2AAFZnUt-l_o320.jpg

 

創建完成後不要忘記使用主機A進行測試


wKiom1VRXJiCfxhfAAJtAN4bZzc695.jpg

 

如上所示則成功

3、配置主機A

安裝pam_mysql模塊

[root@localhost ~]# yum install pam_mysql -y

提供pam.mysql文件並編輯,內容如下

[root@localhost ~]# vim /etc/pam.d/vsftpd.mysql

auth required /lib/security/pam_mysql.so user=ftp passwd=test host=192.168.252.10 db=ftp table=users usercolumn=name passwdcolumn=password crypt=2

account required /lib/security/pam_mysql.so user=ftp passwd=test host=192.168.252.10 db=ftp table=users usercolumn=name passwdcolumn=password crypt=2

新建虛擬用戶映射的系統用戶及相應目錄

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

[root@localhost ~]# chmod go+rx /var/ftproot/

修改vsftpd配置文件,其內容如下

listen=YES

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=vsftpd.mysql

 

重啓測試


wKiom1VRXK7CUarwAAH7xsoCdQg556.jpg

 

~                                                                                   

成功

4、設置vsftpd相關歡迎和提示信息,以及日誌功能

編輯配置文件,使其內容如下所示

listen=YES

anonymous_enable=NO

write_enable=YES

local_enable=YES

chroot_local_user=YES

userlist_enable=YES

userlist_file=/etc/vsftpd/userlist

userlist_deny=YES

pam_service_name=vsftpd

dirmessage_enable=YES

ftpd_banner=Hello Welcome to login my FTP server.

xferlog_enable=YES

xferlog_std_format=YES

xferlog_file=/var/log/vsftpd_log

在此使用test用戶測試,切換目錄到/home/test下,新建ftp目錄,並在目錄下添加.message文件

[root@localhost ~]# mkdir /home/test/ftp

[root@localhost ftp]# echo "Hello this is ftp dirctory" >.messages

 重啓服務測試

  

wKioL1VRXmeCf5ZgAAGni1C4AQA292.jpg

 

查看日誌

     

wKioL1VRXrXTpKcUAAQxVDF4dgM073.jpg

 

到此vsftp服務介紹完畢                                    

~                      


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