vsftpd簡析

vsftpd是FTP協議的實現工具,是一個ftp服務器。
mysql

FTP協議基於TCP協議通訊,且佔用兩個TCP端口,分爲兩個鏈接,分別爲命令鏈接和數據鏈接;sql

命令鏈接:即正常客戶端與服務器端簡歷鏈接,數據請求時創建的鏈接等。數據庫

數據鏈接:即數據傳輸時創建的鏈接。安全


FTP協議有兩種工做模式,分別爲主動模式和被動模式bash

主動模式:客戶端使用TCP隨機端口號發起請求到服務器端,而服務器端使用TCP21號端口相應並與之創建命令鏈接,而後服務器端使用TCP20號端口向客戶端發送數據傳輸請求的數據鏈接,客戶端使用命令鏈接所使用的隨機端口號+1的端口(若是+1被佔用,那就+2,以此類推)等待並相應服務器端。服務器

被動模式:客戶端使用隨機端口發起請求到服務器端,服務器端使用TCP21號端口相應並與之創建命令鏈接,而後客戶端使用命令鏈接所使用的隨機端口號+1的端口(若是+1被佔用,那就+2,以此類推)發起數據傳輸請求到服務器端,服務器端使用TCP隨機端口號相應;之因此使用隨機端口,是爲了解決可能出現多個客戶端同時須要傳輸文件的需求。架構

注意:主動模式有一個弊端,若是客戶端上有防火牆存在,是不容許服務器主動發起請求到客戶端的,防火牆會視之爲掃描後***,會致使FTP傳輸的失敗,而被動模式不會有這種狀況發生。併發


FTP數據都是流式化之後傳輸的,要麼是文本字節碼,要麼是二進制流框架


FTP協議是C/S架構ssh

  服務器端經常使用的程序:

    wu-ftp

    proftpd

    pureftp

    vsftpd:Very Secure ftpd

    IIS

    ServU

  客戶端經常使用的程序:

    GUI,圖形界面程序

     flashfxp

     cuteftp

     filezilla(開源)

     gftp(Linux)

    CLI,命令行程序

     ftp

     lftp

     wget

     lftpwget


用戶認證方式

  系統用戶

  虛擬用戶

    hash file,使用hash文件存儲用戶名及密碼

    mysql,使用mysql數據庫存儲用戶名及密碼

  匿名用戶

數據傳輸安全

  sftp:ssh提供的基於ssh協議的ftp

  ftps:基於ssl的ftp

響應碼

  1xx:信息碼

  2xx:成功狀態碼

  3xx:進一步提示補全信息的狀態碼

  4xx:客戶端錯誤

  5xx:服務端錯誤


安裝vsftpd

使用rpm包安裝便可


pam:Plugable Authentication Module,插件式認證模塊

nsswitch:名稱解析框架

  模塊化:/lib64/libnss*,/usr/lib64/libnss*

  配置文件:/etc/nsswitch.conf

pam:認證框架,pam認證時都是基於配置文件認證的

  模塊化:/lib64/security/pam*.so

  配置文件:/etc/pam.conf和/etc/pam.d/*


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

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

主程序文件:/usr/sbin/vsftpd

數據文件:/var/ftp


配置文件的修改:/etc/vsftpd/vsftpd.conf

對於ftp訪問ftp服務時應該對其chroot,避免切換目錄後產生安全隱患

chroot_local_user={YES|NO} //YES即啓用禁錮用戶功能,使用戶登錄進入FTP目錄後,沒法切換目錄

chroot_list_enable={YES|NO}
// 這個指令必須和chroot_list_file一塊兒啓用
// 不能上面的chroot_local_user同時啓用,由於上面的chroot_list_enable指令是禁錮全部用戶
chroot_list_file=/etc/vsftpd/chroot_list
// chroot_list_file文件中的用戶名即爲指定的被禁錮的用戶,每行一個用戶名

匿名用戶的配置

anonymous_enable=YES
// 容許匿名用戶登錄
anonymous_upload_enable=YES
// 容許匿名用戶上傳文件
anonymous_write_enable=YES
// 容許匿名用戶刪除文件
anon_mkdir_write_enable=YES
// 容許匿名用戶建立刪除目錄

注意:啓用寫入功能時,ftp用戶對相應的本地文件系統也要有相應的寫入權限;生效的權限取決於文件
系統權限和服務權限的交集;

banner信息的配置

ftpd_banner=Welcome to blah FTP service.
// 直接輸入banner信息
banner_file=/PATH/TO/BANNER_FILE
// 定義banner信息文件
例:banner_file=/etc/vsftpd/banner,而後在banner文件中輸出banner信息便可

注意:ftpd_banner和banner_file指令不能同時開啓

dirmessage_enable=YES
// 這個指令的做用是,用戶在訪問特定目錄時會彈出特定banner信息
// 在須要彈出banner信息的目錄下編輯一個.message文件便可
// 例如/var/ftp/.message

控制登錄用戶的機制

/etc/vsftpd/ftpusers中的用戶都不容許使用ftp服務,這是在/etc/pam.d/vsftpd文件中定義的,一行一個用戶


/etc/vsftpd/userlist文件:

  黑名單:默認即爲黑名單

在/etc/vsftpd/vsftpd.conf中修改
userlist_enable=YES
// 啓用userlist文件
userlist_deny=YES
// 拒絕此文件中的用戶

  白名單:

在/etc/vsftpd/vsftpd.conf中修改
userlist_enable=YES
// 啓用userlist文件
userlist_deny=NO
// 容許此文件中的用戶訪問ftp服務

注意:/etc/vsftpd/ftpusers是黑名單,/etc/vsftpd/userlist若是設置爲白名單,若是這時候黑名單和白名單中存在同一個用戶,那麼拒絕優先


鏈接限制

max_clients=
// 最大併發鏈接數
max_per_ip=
// 每IP可同時發起的併發請求

速率限制

anon_max_rate=
// 匿名用戶的最大傳輸速率,單位是「字節/秒」
local_max_rate=
// 本地用戶的最大傳輸速率,單位是「字節/秒」

上傳文件的umask:用於限制上傳的文件的權限

anon_umask=
// 匿名用戶上傳文件的umask;
local_umask=
// 本地用戶上傳文件的umask;

修改匿名用戶上傳文件的屬主和屬組

chown_uploads=YES
chown_username=someuser
// 全部匿名用戶上傳的文件的屬主和屬組都會改變成chown_username所指定的用戶名

虛擬用戶

全部的虛擬用戶都會被映射爲一個系統用戶,訪問時的文件目錄是爲此係統用戶的家目錄;

虛擬用戶的用戶名和密碼存儲方式:

  hash編碼的文件:

    奇數行爲用戶名,偶數行爲密碼

  關係型數據庫:

    vsftpd的用戶認證支持從關係型數據庫中讀取用戶名和密碼,由於vsftpd的認證機制由pam進行管理,因此只要pam支持關係型數據庫就能夠。

    pam-mysql實現認證

      因爲pam不支持mysql認證,因此此處的pam-mysql模塊是第三方模塊,使得pam支持

傳輸日誌

xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log


這篇主要是筆記的整理,寫的比較潦草,若有遺漏錯誤和爭議之處,歡迎你們的批評指正和討論,謝謝。

相關文章
相關標籤/搜索