天天看點

vsftpd參考小手冊

從http://forum.ubuntu.org.cn/viewtopic.php?f=54&t=117505轉載   這個小手冊主要是有關vsftpd的一個參考,和一些遇到的問題解答

添加vsftpd在win下亂碼解決方法,缺點是有2G限制

viewtopic.php?t=132305

添加chinasupermanzk的虛拟使用者基礎教程,實驗是完全可行的

viewtopic.php?p=722180

添加vsftpd的進階應用-vsftp與mysql筆記

viewtopic.php?t=131467&highlight=

這是為了配合筆記的vsftpd測試位址,可以選擇注冊,也可以匿名登入

http://apt-get.vicp.net/itweb 注冊位址

ftp://apt-get.vicp.net ftp伺服器位址

如果使用工具登入,位址為: apt-get.vicp.net

參考篇-----------------------------

ftp基本知識vsftpd的名字代表“very secure FTP daemon”,它的開發者Chris Evans考慮的首要問題就是資料傳輸的安全性。是以,在上述所有的特性當中,較高的安全性是處于最重要的地位。vsftpd比其他諸如Wu-ftpd和 Proftpd之類的FTP伺服器更加優越。另外,在速度方面,據統計,使用ASCⅡ模式下載下傳資料的速度是Wu-ftpd的兩倍。在Linux2.4系列版本的核心下,千兆以太網的下載下傳速度可以達到86MB/S;在穩定性方面,根據ftp.redhat.com的資料,它可以支援15000個并發使用者,是以其總體性能也是非常高的,vsftpd在安全性、高性能及穩定性三個方面有上佳的表現。它提供的主要功能包括虛拟IP設定、虛拟使用者、Standalone、inetd操作模式、強大的單使用者設定能力及帶寬限流等。在安全方面,它從原理上修補了大多數Wu-FTP、ProFTP,乃至BSD-FTP的安裝缺陷,使用安全編碼技術解決了緩沖溢出問題,并能有效避免“globbing”類型的拒絕服務攻擊。目前正在使用vsftpd的官方網站有Red Hat、SuSE、Debian、GNU、GNOME、KDE、Gimp和OpenBSD等。

linux裡有三個主要的FTP伺服器,分别是VsFTPd、ProFTPd和Pure-FTPd,其中VsFTPd以安全和性能著稱,ProFTPd則以衆多的特性取勝,Pure-FTPd的性能和特性介乎兩者中間

論壇很多都是介紹怎麼配置ftp的,這裡就隻說下關于ftp的一點基本知識

ftp使用者的分類,根據伺服器對象的不同将ftp使用者分為3類

1:本地使用者(real使用者)

2:虛拟使用者(guest使用者)

3:匿名使用者

本地使用者:如果使用者在遠端ftp伺服器上擁有伺服器的本地帳号,本地使用者可以通過輸入自己的帳号和密碼來進行授權登陸

虛拟使用者:如果使用者在遠端ftp伺服器上擁有帳号,且此帳号隻能用于檔案的傳輸服務,則稱此使用者為虛拟使用者或guest使用者(實際多個虛拟使用者隻是本地一個使用者的影射)

匿名使用者:如果使用者在遠端ftp伺服器上沒有帳号,則稱此使用者為匿名使用者

ftp協定中定義的典型消息,用來判斷問題

125 :資料連接配接打開,傳輸開始

200 :指令ok

226 :資料傳輸完畢

331 :使用者名OK,需要輸入密碼

425 :不能打開資料連接配接

426 :資料連接配接被關閉,傳輸被中斷

452 :錯誤寫檔案

500 :文法錯誤,不可識别的指令

530 :未登入。

基本指令:

這裡說下建立ftp可能會涉及到的一些指令

ls (顯示目錄清單,如果太多,可以使用分頁指令:ls /etc | more ,按q結束)

touch (建立檔案,注意是檔案,不是目錄)

cp (複制檔案或目錄,如:cp /etc/vsftpd.conf /home/xxx 複制vsftpd.conf到/home/xxx目錄下)

mv (移動檔案或目錄或改名 如:mv /home/xxx.conf /etc/ 移動/home/xxx.conf到/etc下)

rm (删除檔案或目錄 如果删除目錄需要加 -R 參數)

cd (切換路徑,可以用tab鍵補全路徑 cd ..代表退到上個路徑)

mkdir (建立目錄)

chown (改變目錄或檔案所有者,如 sudo chown root.root /etc/vsftpd.conf 所有者群組都為root)

chmod (改變目錄或檔案權限,配合ls -l使用)

(如,chmod ugo+rwx /home/ftp/xxx

u:檔案或目錄所有者的權限

g:組的權限

o:其他使用者權限

+添權重限

-減少權限

r w x (讀,寫,執行)

ls -l (檢視檔案或目錄權限等資訊

ftp的資料傳輸模式

可能很多人都感到pasv_enable這個參數很奇怪,隻是預設是打開的,是以很多人不關心它

這裡就要說下ftp的傳輸模式,分為2種模式

1:主動模式(Active FTP)

2:被動模式(Passive FTP)

主動模式:簡單說就是客戶送出請求到伺服器21端口,然後監聽,伺服器用預設20端口連接配接客戶監聽的端口,進 行資料傳輸

就是說是伺服器向客戶發起一個用于傳輸的連接配接。

被動模式:客戶送出請求到伺服器21端口,然後開啟x端口,再向伺服器發送PASV指令,告訴伺服器自己處于被動模式,伺服器收到指令,就會開放一個p端口監聽,然後通知客戶自己資料端口p,客戶收到指令,又會開啟一個端口v進行連接配接伺服器的p端口,然後兩個v-p端口進行資料傳輸,就是說資料傳輸是客戶發起的,相對伺服器就是被動的。

(被動模式通常用在處于防火牆之後的FTP用戶端通路外界FTP伺服器的情況,因為防火牆通常配置是不允許外界通路防火牆之後的機器,隻允許由防火牆之後的主機發起的連接配接請求)

這是vsftpd官方推薦的一種過于偏執的安全配置,如果隻是想架設匿名ftp下載下傳伺服器,将是很好的參考!

#vsftpd

#cat /etc/vsftpd.conf

#Standalone mode

listen=YES

max_clients=200

max_per_ip=4

tcp_wrappers=YES

#Access rights

anonymous_enable=YES

local_enable=NO

write_enable=NO

anon_upload_enable=NO

anon_mkdir_write_enable=NO

anon_other_write_enable=NO

#Security

anon_world_readable_only=YES

connect_from_port_20=YES

hide_ids=YES

pasv_min_port=50000

pasv_max_port=60000

#Features

xferlog_enable=YES

is_recurse_enable=NO

ascii_download_enable=NO

async_abor_enable=YES

#Performance

one_process_model=YES

idle_session_timeout=120

data_connection_timeout=300

accept_timeout=60

connect_timeout=60

anon_max_rate=50000

ftpd_banner=This FTP server is anonymous only, and vsftpd in "standalone"

上邊的配置沒有詳細解釋是因為下邊會給出常用參數說明!

vsftpd主配置檔案常用參數說明:

listen=<YES/NO> :設定為YES時vsftpd以獨立運作方式啟動,設定為NO時以xinetd方式啟動(xinetd是管理守護程序的,将服務集中管理,可以減少大量服務的資源消耗)

listen_port=<port> :設定控制連接配接的監聽端口号,預設為21

listen_address=<ip address> :将在綁定到指定IP位址運作,适合多網卡

connect_from_port_20=<YES/NO> :若為YES,則強迫FTP-DATA的資料傳送使用port 20,預設YES

pasv_enable=<YES/NO> :是否使用被動模式的資料連接配接,如果客戶機在防火牆後,請開啟為YES

pasv_min_port=<n>

pasv_max_port=<m> :設定被動模式後的資料連接配接端口範圍在n和m之間,建議為50000-60000端口

message_file=<filename> :設定使用者進入某個目錄時顯示的檔案内容,預設為 .message

dirmessage_enable=<YES/NO> :設定使用者進入某個目錄時是否顯示由message_file指定的檔案内容

ftpd_banner=<message> :設定使用者連接配接伺服器後的顯示資訊,就是歡迎資訊

banner_file=<filename> :設定使用者連接配接伺服器後的顯示資訊存放在指定的filename檔案中

connect_timeout=<n> :如果客戶機連接配接伺服器超過N秒,則強制斷線,預設60

accept_timeout=<n> :當使用者以被動模式進行資料傳輸時,伺服器發出passive port指令等待客戶機超過N秒,則強制斷線,預設60

accept_connection_timeout=<n> :設定空閑的資料連接配接在N秒後中斷,預設120

data_connection_timeout=<n> : 設定空閑的使用者會話在N秒後中斷,預設300

max_client=<n> : 在獨立啟動時限制伺服器的連接配接數,0表示無限制

max_per_ip=<n> :在獨立啟動時限制客戶機每IP的連接配接數,0表示無限制(不知道是否跟多線程下載下傳有沒幹系)

local_enable=<YES/NO> :設定是否支援本地使用者帳号通路

guest_enable=<YES/NO> :設定是否支援虛拟使用者帳号通路

write_enable=<YES/NO> :是否開放本地使用者的寫權限

local_umask=<nnn> :設定本地使用者長傳的檔案的生成掩碼,預設為077

local_max_rate<n> :設定本地使用者最大的傳輸速率,機關為bytes/sec,值為0表示不限制

local_root=<file> :設定本地使用者登陸後的目錄,預設為本地使用者的主目錄

chroot_local_user=<YES/NO> :當為YES時,所有本地使用者可以執行chroot

chroot_list_enable=<YES/NO>

chroot_list_file=<filename> :當chroot_local_user=NO 且 chroot_list_enable=YES時,隻有filename檔案指定的使用者可以執行chroot

anonymous_enable=<YES/NO> :設定是否支援匿名使用者通路

anon_max_rate=<n> :設定匿名使用者的最大傳輸速率,機關為B/s,值為0表示不限制

anon_world_readable_only=<YES/NO> 是否開放匿名使用者的浏覽權限

anon_upload_enable=<YES/NO> 設定是否允許匿名使用者上傳

anon_mkdir_write_enable=<YES/NO> :設定是否允許匿名使用者建立目錄

anon_other_write_enable=<YES/NO> :設定是否允許匿名使用者其他的寫權限(注意,這個在安全上比較重要,一般不建議開,不過關閉會不支援續傳)

anon_umask=<nnn> :設定匿名使用者上傳的檔案的生成掩碼,預設為077

anon_root=<file> :設定匿名使用者登陸後的目錄

no_anon_password=<YES/NO> :設定匿名使用者登陸是否詢問密碼

ascii_download_enable=<YES/NO>

ascii_upload_enable=<YES/NO> :一般為NO,啟動這個可能會導緻DoS的攻擊

hide_ids=<YES/NO> :如果啟動,所有檔案擁有者與組群都為FTP,也是就ls -l之類指令看到的擁有者群組均為FTP

ls_recurse_enable=<YES/NO> :啟動此功能,則允許登入者使用ls -R這個指令,預設為NO

tcp_wrappers=<YES/NO> :設定伺服器是否支援tcp_wrappers(就是支援/etc/hosts.allow和/etc/hosts.deny這兩個檔案)

pam_service_name=vsftpd :設定PAM子產品的名稱

xferlog_enable=<YES/NO> :是否啟動FTP日志記錄

xferlog_file=/var/log/vsftpd.log :設定日志記錄檔案的名稱

xferlog_std_format=<YES/NO> :當設定為YES時,将使用與wu-ftpd相同的日志記錄格式

問題篇-------------------------------

1.匿名使用者問題

下面說下匿名使用者上傳的問題

要使匿名使用者可以上傳,需要激活兩個選項,

1.anon_upload_enable=YES

2.anon_mkdir_write_enable=YES

然後打開寫權限:write_enable=YES

同時還要anon_world_readable_only=NO ,開放匿名使用者對整個伺服器的浏覽權限。

需要注意的是匿名使用者對檔案權限而言,屬于其他使用者,是以一定要把允許匿名使用者上傳目錄的權限修改為其他使用者可寫,如果配置anon_root=/home/ftp ( 匿名的根目錄為/home/ftp)

那麼/home/ftp的其他使用者權限就不能有寫權限,如果根目錄所有者是ftp的話,所有者的權限也不能有w,否則出同樣的錯誤

可以在建立個檔案/home/ftp/public目錄,打開public其他使用者的寫權限,就可以個public上傳了(匿名使用者根目錄是不可以有寫權限的),如果隻讓下載下傳,就可以再建立目錄

/home/ftp/down 然後設定其他使用者沒有寫權限就可以了

需要注意的是anon_other_write_enable這個參數,YES會開放檔案更名,删除檔案等權限,官方是不建議開啟的,但關閉會無法進行續傳,

這就需要管理者作出權衡了

(這裡解釋下續傳的問題,就我自己的了解續傳是指:在已經上傳的檔案目錄中繼續添加檔案或目錄

如果繼續使用預設的022檔案掩碼,就會産生不能續傳問題,因為022不允許寫入,

當然你可以打開anon_other_write_enable來解決,不過就會産生混亂,安全問題

這時候檔案掩碼就很重要了,下邊會介紹到檔案掩碼,你可以根據自己的環境設定

2.檔案掩碼問題

在配置檔案中有umask=xxx的參數,這個參數挺讓新手費解的,其實它的意思簡單

:建立的檔案不能擁有的權限

相信大家都見過,sudo chmod 777 /xxx/xxx

其實umask的數值和那個777是一樣的系統,8進值表示的權限

第一個是目錄所有者權限,第二個是組的權限,第三個是其他使用者權限。

有關umask的有這幾個參數:

local_umask,anon_umask.

分别代表本地使用者,和匿名使用者的檔案掩碼。

可以根據不同需要設定使用者建立檔案的權限。

umask還是比較重要的,設定好的話,可以很省事,而且安全

下邊是關于8近制權限的清單:

0:沒有權限

1:允許執行

2:允許寫入

3:允許執行和寫入

4:允許讀取

5:允許執行和讀取

6:允許寫入和讀取

7:允許執行,寫入和讀取

3.虛拟使用者問題

首先要了解,虛拟使用者和本地使用者是不可以同時存在的

關于虛拟使用者的設定論壇裡有很多,我隻實驗了一種可以完整配置成功

特别提醒,必須把local_enable=YES打開才能允許虛拟使用者登入

這裡要說的是關于虛拟使用者權限的問題

虛拟使用者本質上是本地使用者的一個影射,預設的檔案掩碼是077,這是有原因的

對與虛拟使用者這個團體來說用到的權限隻跟檔案的所有者的權限有關,就是第一組的rwx

虛拟使用者要通路另一個虛拟使用者的檔案,除了需要可以浏覽到對方檔案外,就需要相應的權限了

能看到檔案,就需要有r權限

如果要進入目錄,就需要x權限

要想寫入目錄,就需要w權限

另外提下,在每個虛拟使用者各自的配置檔案中,更改anon_umask可以改變每個使用者上傳的檔案掩碼,但必須在主配置檔案中注釋掉local_umask。

4.本地使用者的通路控制

論壇的置頂貼中有一個簡單的ftp,是一個本地使用者的配置,實際中可能不隻需要一個

這裡就說下本地使用者的通路控制,基本有兩種方法

都是通過修改主配置檔案:

1:指定的本地使用者不能通路,其他可以通路

userlist_enable=YES

userlist_deny=YES

userlist_file=/etc/vsftpd.user_list (這個檔案需要自己建立,并添加不能通路的使用者名)

2:指定的本地使用者可以通路,其他不可以(這個比較常用)

userlist_enable=YES

userlist_deny=NO

userlist_file=/etc/vsftpd.user_list(同上,添加可以通路的使用者名)

關于chroot的配置1:如果想把所有使用者都限制在主目錄内活動可以使用下邊配置

chroot_local_user=YES

chroot_list_enable=YES(這行可以沒有, 也可以有)

chroot_list_file=/etc/vsftpd.chroot_list

那麼, 凡是加在檔案vsftpd.chroot_list中的使用者都是不受限止的使用者

即, 可以浏覽其主目錄的上級目錄.

2: 如果不希望某使用者能夠浏覽其主目錄上級目錄中的内容,可以如上設定, 然後在

檔案vsftpd.chroot_list中不添加該使用者即可(此時, 在該檔案中的使用者都是可以浏覽其主目錄之外的目錄的).

或者, 設定如下

chroot_local_user=NO

chroot_list_enable=YES(這行必須要有, 否則檔案vsftpd.chroot_list不會起作用)

chroot_list_file=/etc/vsftpd.chroot_list

然後把所有不希望有這種浏覽其主目錄之上的各目錄權限的使用者添加到檔案vsftpd.chroot_list(此時, 在該檔案中的使用者都是不可以浏覽其主目錄之外的目錄的)

最後要說下tcp_wrappers參數,這個參數是為獨立啟動vsftpd提供基于主機的通路控制的配置,可以限制特定主機通路,又可以對不同主機或

網絡實施不同的配置(可以了解為不同的待遇)

tcp_wrappers使用/etc/hosts.allow和/etc/hosts.deny兩個配置檔案實作通路控制,hosts.allow是一個許可表,hosts.deny是一個拒絕表

在hosts.allow中也可以使用DENY,是以通常可以隻使用hosts.allow來實作通路控制。

對vsftpd而言,書寫hosts.allow有三種文法形式

1: vsftpd:主機表 (設定允許通路的主機表)

2: vsftpd:主機表:DENY (設定拒絕通路的主機表)

3: vsftpd:主機表:setenv VSFTPD_LOAD_CONF 配置檔案名 (對指定的主機使用另外的配置)

setenv VSFTPD_LOAD_CONF的值為指定的配置檔案名,意圖是讓vsftpd守護程序讀取新的配置項來覆寫主配置檔案中的項,實作特定待遇

這有一個小例子來說明tcp_wrappers

功能:

》1.拒絕192.168.2.0/24通路

》2.對192.168.1.0/24内的所有主機不作連接配接限制和最大傳輸速率限制

》3.對其他主機的通路限制為:每ip連接配接數為1,最大傳輸速率為10kb/s (在主配置檔案中設定就好了)

首先保證設定tcp_wrappers=YES

然後編輯 sudo vi /etc/hosts.allow 輸入

vsftpd:192.168.2.0/24: DENY (阻止192.168.2.0子網的通路)

vsftpd:192.168.1.0/24 (允許192.168.1.0子網的通路)

vsftpd:192.168.1.0/24: setenv VSFTPD_LOAD_CONF /etc/xxx.conf (對192.168.1.0/24指定專有配置檔案xxx.conf,xxx可以自己指定檔案名,需要建立)

然後建立xxx.conf檔案,并編輯 (建立檔案可以用sudo touch /etc/xxx.conf建立)

local_max_rate=0

anon_max_rate=0

max_per_ip=0

!

vsftpd還有很多東西,這裡就寫這些基本的,本人也是菜鳥一隻,隻希望可以幫助下新手,少走彎路!

祝大家每天都能進步!!!

從http://forum.ubuntu.org.cn/viewtopic.php?f=54&t=117505轉載