參考-Vsftpd虛擬用戶

Vsftpd虛擬用戶

 

 

FTP 的數據鏈路原理

FTP 是相當古老的傳輸協議之一,他最主要的功能是在服務器與客戶端之間進行檔案的傳輸。 FTP 其實是以 TCP 封包的模式進行服務器與客戶端計算機之間的聯機,當聯機建立後,使用者可以在客戶端端連上 FTP 服務器來進行檔案的下載與上傳,此外,也可以直接管理用戶在 FTP 服務器上面的檔案呢,相當的方便! 而這個古老的協議是使用明碼傳輸,且過去有相當多的安全危機歷史。爲了更安全的使用 FTP 協議, 我們主要介紹較爲安全但功能較少的 vsftpd 這個軟件吶。

FTP 功能簡介

FTP 服務器的功能除了單純的進行檔案的傳輸與管理之外,依據服務器軟件的設定架構, 他還可以提供幾個主要的功能,底下我們約略的來談一談:

· 不同等級的用戶身份:

FTP 服務器在預設的情況下,依據使用者登入的情況而分爲三種不同的身份,分別是 (1)實體賬號,real user(2)訪客, guest(3)匿名登錄者, anonymous 這三種。這三種身份的用戶在系統上面的權限差異很大喔! 例如實體用戶取得系統的權限比較完整,所以可以進行比較多的動作;至於匿名登錄者, 大概我們就僅提供他下載一下資源而已,並不許匿名者使用太多主機的資源啊! 當然,這三種人物能夠使用的『在線指令』自然也就不相同囉! ^_^

· 命令記錄與登錄文件記錄:

FTP 可以利用系統的 syslogd 這個 daemon 來進行數據的紀錄, 而記錄的數據報括了用戶曾經下達過的命令與用戶傳輸數據(傳輸時間、檔案大小等等)的紀錄呢! 所以你可以很輕鬆的在 /var/log/ 裏面找到各項登錄信息喔!

· 限制或解除用戶家目錄所在(change root, 簡稱 chroot)

爲了避免用戶在您的 Linux 系統當中隨意逛大街 (意指離開用戶自己的家目錄而進入到 Linux 系統的其他目錄去), 所以將使用者的工作範圍『侷限』在用戶的家目錄底下,嗯!實在是個不錯的好主意!FTP 可以限制用戶僅能在自己的家目錄當中活動喔!如此一來,由於使用者無法離開自己的家目錄,而且登入 FTP 後,顯示的『根目錄』就是自己家目錄的內容,這種環境稱之爲 change root ,簡稱 chroot ,改變根目錄的意思啦!

這有什麼好處呢?當一個惡意的使用者以 FTP 登入您的系統當中,如果沒有 chroot 的環境下,他可以到 /etc, /usr/local, /home 等其他重要目錄底下去察看檔案數據,尤其是很重要的 /etc/ 底下的配置文件,如 /etc/passwd 等等。如果您沒有做好一些檔案權限的管理與保護,那他就有辦法取得系統的某些重要信息, 用來『***』您的系統呢!所以在 chroot的環境下,當然就比較安全一些咯!

FTP 的運作流程與使用到的端口

FTP 的傳輸使用的是較爲可靠的 TCP 封包協議,在前幾章的網絡基礎當中我們談過, TCP 這種封包格式在建立聯機前會先進行三向交握的。不過 FTP 服務器是比較麻煩一些,因爲 FTP 服務器使用了兩個聯機,分別是命令信道與數據流通道 (ftp-data) 這兩個聯機都需要經過三向交握, 因爲是 TCP 封包嘛!那麼這兩個聯機通道的關係是如何呢?底下我們先以 FTP 預設的主動式 (active) 聯機來作個簡略的說明囉:

wKiom1dqJcmDXmIOAABZirQfrBo516.png圖一、FTP 服務器的主動式聯機示意圖


簡單的聯機就如上圖所示,至於聯機的步驟是這樣的:

1. 建立命令通道的聯機
如上圖一所示,客戶端會隨機取一個大於 1024 以上的埠口 (port AA) 來與 FTP 服務器端的 port 21 達成聯機, 這個過程當然需要三向交握了!達成聯機後客戶端便可以透過這個聯機來對 FTP 服務器下達指令, 包括查詢檔名、下載、上傳等等指令都是利用這個通道來下達的;

 

2. 通知 FTP 服務器端使用 active 且告知連接的埠號
FTP 服務器的 21 埠號主要用在命令的下達,但是當牽涉到數據流時,就不是使用這個聯機了。 客戶端在需要數據的情況下,會告知服務器端要用什麼方式來聯機,如果是主動式 (active) 聯機時, 客戶端會先隨機啓用一個埠口 (圖一當中的 port BB) ,且透過命令通道告知 FTP 服務器這兩個信息,並等待 FTP 服務器的聯機;

 

3. FTP 服務器『主動』向客戶端聯機
FTP 服務器由命令通道瞭解客戶端的需求後,會主動的由 20 這個埠號向客戶端的 port BB 聯機, 這個聯機當然也會經過三向交握啦!此時 FTP 的客戶端與服務器端共會建立兩條聯機,分別用在命令的下達與數據的傳遞。 而預設 FTP 服務器端使用的主動聯機埠號就是 port 20 囉!

如此一來則成功的建立起『命令』與『數據傳輸』兩個信道!不過,要注意的是, 『數據傳輸信道』是在有數據傳輸的行爲時纔會建立的通道喔!並不是一開始連接到 FTP 服務器就立刻建立的通道呢!留意一下囉!

 

 

以上是vsftpd的功能和原理,下面我給大家做一個小小的實驗

 

 

實驗環境

一:Linux6.4一臺(192.168.10.199

測試二:win7(物理機,IP192.168.10.113

 

環境建設起來了,我們想一想要做什麼呢!平時企業中用的最多的就是vsftpd虛擬用戶。如果要是用本地用戶的話,那管理員的工作量有多大!我們可以想想一下,最好的方法就是用vsftpd的強大功能虛擬用戶。

下面我來給大家演示:

Linux

 wKiom1dqJd6QZ595AAAw9a_jItU494.png

物理機

 wKiom1dqJfLQyJovAAAU0fyfpN4710.png

 

接下來我們在Linux上安裝vsftpd

wKioL1dqJhfh7nJtAAAG9aBasFg493.png 

這裏我爲了加快進程就安裝好了

我們查看一下vsftpd產生哪些配置文件

 wKiom1dqJjai29IWAAAtkve0vYw067.png

第一個是日記文件

第二個是虛擬用戶認證配置文件

第三個是限制

第四個是黑白名單

第五個是vsftpd的配置文件(核心)

 

下面我開始配置虛擬用戶,看我操作。

Ⅰ:我在/etc/vsftpd/下創建了一個名字爲vuser.txt的文本

wKioL1dqJlfg4KrrAAAEMdO9FlY578.png 

裏面添加了三個用戶(奇數爲用戶,偶數爲密碼)

wKiom1dqJnHTadvAAAADRqfWmZU786.png 

Ⅱ:建立訪問者的口令庫文件,然後修改其權限

 wKiom1dqJpWx0B-wAAAGLtt4tFY827.png

(如果系統提示找不到db_load命令,則需先安裝yum –y install db4 (pam*是否需安裝沒經過測試)

:進入/etc/pam.d/中創建vsftpd.vuser

在其中添加如下信息:

auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser (32位系統是/lib/目錄)

account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser(32位系統是/lib/目錄)

Ⅳ:創建虛擬用戶映射的系統賬號

Useradd d /home/vsftpd s /sbin/nologin vuser (創建系統賬號,但不能登錄系統)

Chmod 700 /home/vsftpd

wKioL1dqJrOxMF4uAAAGJ0rfunQ548.png 

Ⅴ:修改主配置文件(/etc/vsftpd/vsftpd.conf)

在裏面添加如下幾行信息

Guest_enable=yes  開啓虛擬用戶

User_config_dir=/etc/vsftpd/vsftpd_vuser_conf   虛擬用戶配置文件存放目錄

Guest_username=vuser虛擬用戶映射到系統賬號

Pam_service_name=vsftpd.vuser PAM認證文件

wKiom1dqJvHQxFtYAAAK5ipe1lQ652.png 

Ⅵ:進入/etc/vsftpd/vsftpd_vuser_conf目錄,創建與虛擬用戶名相同名稱的文件(虛擬用戶名即vuser.txt中的用戶名名),比如創建test1。

wKiom1dqJxuCSe-yAAAJmSKoC3g520.png 

這個目錄是手工創建出來的,默認沒有的。

Ⅶ: 在test1中填寫如下信息

write_enable=YES

anon_world_readable_only=NO

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

local_root=/usr/local/amp/apache/htdocs/test1 (此路徑根據虛擬用戶要訪問的目錄對應修改)

wKioL1dqJ03BavyRAAAJWJIkeTs827.png 

全部弄好之後不要忘記重新啓動服務器

測試:我在物理機上!

先來互拼一下,看看網絡到底通不通.(如果不通關閉防火牆iptables -F)

wKiom1dqJ4CzETF_AAAXS99b4NE109.png 

此時我們就開始測試了。

如果一開始訪問不了的話,我們把防火牆和selinux全部關掉在試

wKiom1dqJ43ja04SAACSetXRcNw346.png 

我們發現此時是可以訪問了,但是不要用戶和密碼,那就說明我們的主配置文件內的匿名用戶還開啓中。我們去把他關掉在試試看。還有沒有同樣的錯誤。

wKioL1dqJ7CTLlCFAAEsNyN2ESg246.png 

看,我們修改了主配置內的匿名,不允許登錄了,測試成功了。

總結:客戶端根據創建的虛擬用戶連接服務器,虛擬用戶映射到系統賬號vuser登錄ftp,然後FTP根據配置文件vsftpd.conf的設置(user_config_dir=/etc/vsftpd/vsftpd_vuser_conf)找到虛擬用戶配置文件的存放目錄,然後根據虛擬用戶的配置文件指定的目錄路徑(local_root=/usr/local/amp/apache/htdocs/demo)訪問到指定的目錄。(注:虛擬用戶訪問到的文件根目錄屬主需要改成vuser


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