內容:數據庫
一、ftp協議安全
二、vsftpd的搭建及配置服務器
1、FTP協議網絡
一、FTP協議:ide
FTP 是File Transfer Protocol(文件傳輸協議)的英文簡稱,而中文簡稱爲「文傳協議」。工做在第七層,並且是基於TCP協議傳輸數據。spa
FTP工做原理與其它的應用協議有些不一樣。它是用兩個端口進行通訊的。一個端口用於命令交互。這個端口在用戶鏈接以後一直保持;而另外一個端口只是在數據傳時打開(好比:上傳文件,下載文件,獲取服務端文件列表),在數據傳輸時有兩種不一樣的模式,一是用戶開通這個數據端口,這種模式叫作主動模式;二是服務器提供一個接口,這個模式叫被動模式。操作系統
二、FTP的傳輸數據:開放源代碼
FTP的傳輸有兩種方式:ASCII傳輸模式和二進制數據傳輸模式。日誌
(1)、ASCII傳輸方式:假定用戶正在拷貝的文件包含的簡單ASCII碼文本,若是在遠程機器上運行的不是UNIX,當文件傳輸時ftp一般會自動地調整文件的內容以便於把文件解釋成另外那臺計算機存儲文本文件的格式。可是經常有這樣的狀況,用戶正在傳輸的文件包含的不是文本文件,它們多是程序,數據庫,字處理文件或者壓縮文件(儘管字處理文件包含的大部分是文本,其中也包含有指示頁尺寸,字庫等信息的非打印符)。在拷貝任何非文本文件以前,用binary 命令告訴ftp逐字拷貝,不要對這些文件進行處理,這也是下面要講的二進制傳輸。orm
(2)、二進制傳輸模式:在二進制傳輸中,保存文件的位序,以便原始和拷貝的是逐位一一對應的。即便目的地機器上包含位序列的文件是沒意義的。例如,macintosh以二進制方式傳送可執行文件到Windows系統,在對方系統上,此文件不能執行。若是你在ASCII方式下傳輸二進制文件,即便不須要也仍會轉譯。這會使傳輸稍微變慢 ,也會損壞數據,使文件變得不能用。(在大多數計算機上,ASCII方式通常假設每一字符的第一有效位無心義,由於ASCII字符組合不使用它。若是你傳輸二進制文件,全部的位都是重要的。)若是你知道這兩臺機器是一樣的,則二進制方式對文本文件和數據文件都是有效的。
三、FTP的工做方式
FTP支持兩種模式,一種方式叫作Standard (也就是 PORT方式,主動方式),一種是 Passive (也就是PASV,被動方式)。 Standard模式 FTP的客戶端發送 PORT 命令到FTP服務器。Passive模式FTP的客戶端發送 PASV命令到 FTP Server。
這兩種方式的工做原理:
Port模式FTP 客戶端首先和FTP服務器的TCP 21端口創建鏈接,經過這個通道發送命令,客戶端須要接收數據的時候在這個通道上發送PORT命令。 PORT命令包含了客戶端用什麼端口接收數據。在傳送數據的時候,服務器端經過本身的TCP 20端口鏈接至客戶端的指定端口發送數據。 FTP server必須和客戶端創建一個新的鏈接用來傳送數據。
Passive模式在創建控制通道的時候和Standard模式相似,但創建鏈接後發送的不是Port命令,而是Pasv命令。FTP服務器收到Pasv命令後,隨機打開一個高端端口(端口號大於1024)而且通知客戶端在這個端口上傳送數據的請求,客戶端鏈接FTP服務器此端口,而後FTP服務器將經過這個端口進行數據的傳送,這個時候FTP server再也不須要創建一個新的和客戶端之間的鏈接。
注意:不少防火牆在設置的時候都是不容許接受外部發起的鏈接的,因此許多位於防火牆後或內網的FTP服務器不支持PASV模式,由於客戶端沒法穿過防火牆打開FTP服務器的高端端口;而許多內網的客戶端不能用PORT模式登錄FTP服務器,由於從服務器的TCP 20沒法和內部網絡的客戶端創建一個新的鏈接,形成沒法工做。
2、vsftpd的搭建及配置
一、vsftpd簡介
vsftpd 是「very secure FTP daemon」的縮寫,安全性是它的一個最大的特色。vsftpd 是一個 UNIX 類操做系統上運行的服務器的名字,它能夠運行在諸如 Linux、BSD、Solaris、 HP-UNIX等系統上面,是一個徹底免費的、開放源代碼的ftp服務器軟件,支持不少其餘的 FTP 服務器所不支持的特徵。好比:很是高的安全性需求、帶寬限制、良好的可伸縮性、可建立虛擬用戶、支持IPv六、速率高等。
vsftpd是一款在Linux發行版中最受推崇的FTP服務器程序。特色是小巧輕快,安全易用。
二、vsftp的安裝以及配置使用
vsftpd:
程序環境:
配置文件:/etc/vsftpd/vsftpd.conf
主程序:/usr/sbin/vsftpd
文件路徑映射:/var/ftp
用戶的家目錄的映射:訪問ftp必須以某個系統用戶的身份,此用戶的家目錄即文檔目錄;
匿名用戶:anonymous,要映射爲一個系統用戶,默認是ftp;
用戶種類:
匿名用戶:
系統用戶:能夠登陸系統的用戶,/etc/passwd裏的用戶
虛擬用戶:不是系統的登陸用戶
三、配置vsftpd:
配置文件:vsftpd.conf
directive=value
注意:directive以前不能有任何字符;
注意:任何配置的權限修改還要結合文件系統的文件權限,好比,就算在配置文件中容許匿名用戶下載文件,但假如文件自己的權限不夠,也同樣不能下載。
匿名用戶:
anonymous_enable=YES:容許匿名用戶登陸
anon_upload_enable=YES :容許匿名用戶上傳文件
anon_mkdir_write_enable=YES :容許匿名用戶建立目錄
anon_other_write_enable=YES :容許匿名用戶其餘的寫權限如,刪除目錄等
注意:若是容許匿名用戶上傳,默認上傳的權限是600,由於匿名上傳文件的umask爲077,要修改則要添加:anon_umask=022;
系統用戶:
local_enable=YES :容許本地用戶登陸
write_enable=YES :容許本地用戶寫權限
輔助認證配置文件/etc/vsftpd/ftpusers:
pam認證的配置文件:/etc/pam.d/vsftpd
chroot_local_users=YES
禁錮全部的本地用戶於本身的家目錄中;但須要事先移除用戶對家目錄的寫權限;
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
禁錮指定的文件列表中的用戶於本身的家目錄中;但須要事先移除用戶對家目錄的寫權限;(這兩個指令通常同時啓用或不啓用)
數據傳輸日誌:
xferlog_std_format=YES
xferlog_enable=YES
xferlog_file=/var/log/xferlog
控制可登陸vsftpd服務的用戶列表:
userlist_enable=YES:是否啓用/etc/vsftpd/user_list文件來可登陸的用戶;
userlist_deny={YES|NO}
YES:黑名單
NO:白名單
四、FTP數字代碼的意義
110 從新啓動標記應答。
120 服務在多久時間內ready。
125 數據鏈路端口開啓,準備傳送。
150 文件狀態正常,開啓數據鏈接端口。
200 命令執行成功。
202 命令執行失敗。
211 系統狀態或是系統求助響應。
212 目錄的狀態。
213 文件的狀態。
214 求助的訊息。
215 名稱系統類型。
220 新的聯機服務ready。
221 服務的控制鏈接端口關閉,能夠註銷。
225 數據連結開啓,但無傳輸動做。
226 關閉數據鏈接端口,請求的文件操做成功。
227 進入passive mode。
230 使用者登入。
250 請求的文件操做完成。
257 顯示目前的路徑名稱。
331 用戶名稱正確,須要密碼。
332 登入時須要帳號信息。
350 請求的操做須要進一部的命令。
421 沒法提供服務,關閉控制連結。
425 沒法開啓數據鏈路。
426 關閉聯機,終止傳輸。
450 請求的操做未執行。
451 命令終止:有本地的錯誤。
452 未執行命令:磁盤空間不足。
500 格式錯誤,沒法識別命令。
501 參數語法錯誤。
502 命令執行失敗。
503 命令順序錯誤。
504 命令所接的參數不正確。
530 未登入。
532 儲存文件須要帳戶登入。
550 未執行請求的操做。
551 請求的命令終止,類型未知。
552 請求的文件終止,儲存位溢出。
553 未執行請求的的命令,名稱不正確。
OK,更多文章請關注個人博客。