FTP服務器工作原理及如何通過PAM認證實現虛擬用戶登錄

來源:Linux社區 作者:guodayong

本文分爲兩部分:
<一>:FTP服務理論篇

<二>:FTP服務架構篇
<一>:理論篇:
注:筆者還是在這裏嘮叨一句:理論很枯燥、很無趣,對以後要從事運維管理工作的人員來說,理論知識是必須掌握的,所以筆者希望博友能夠認真閱讀FTP的相關理論,這樣在後續的服務構建篇當中,纔會更容易理解並掌握每步操作的真實意義!

FTP服務器的相關概念:

  1. FTP簡稱文件傳輸協議,全稱(File Transfer Protocol),FTP服務在互聯網上任意兩臺計算機之間提供文件傳輸服務。無論是客戶端(Client)、服務器(Server)
  2. 還是Linux、Windows等操作系統,只要支持FTP協議,就可以使用FTP服務來提供文件傳輸等功能。如今FTP已被Ineternet 3/1廣大用戶所使用的重要互聯網服務之一。
  3. FTP(文件傳輸協議)是TCP/IP協議的一種具體應用,它工作在OSI(Open System Interconnection)七層模型的第七層(應用層),TCP/IP模型的第四層。
  4. FTP服務使用TCP傳輸,所以在使用FTP服務時,FTP客戶端和服務器之間要建立連接,這個連接也就是我們熟悉的“三次握手”,之所以建立三次連接,是爲了證明客戶端
  5. 和服務端之間的連接是可靠的、安全的、面向連接的,爲數據的傳輸提供了可靠、安全的保障。

FTP服務器的功能:

  1. FTP服務主要提供下載數據、上傳數據,並且可以將遠程的文件複製到本地計算機,以達到資源共享和傳遞信息的目的,FTP在傳輸文件時還支持斷點續傳功能。
  2. FTP服務歸根基地提供兩個功能:
  3. ①可以在兩臺完全不同的計算機之間進行文件數據傳輸。(支持傳送二進制文件,如:文件、程序、數據、視頻、圖片等各種類型的文件傳輸)
  4. ②可以提供許多文件數據同時共享。

FTP服務器的工作原理:

  1. FTP標準在RFC959文檔中說明,此協議定義了一個在遠程計算機系統和本地計算機之間傳輸文件的標準。一般的講,要進行文件的傳輸,
  2. 我們必須使用有效的用戶名和密碼來訪問FTP服務器上的資源(默認匿名用戶不要提供密碼),在Internet互聯網上FTP服務器提供了“guest user”來訪問FTP服務。
  3. 1.控制連接
  4. 當客戶端希望和FTP服務器通訊時,建立上傳/下載文件數據傳輸時,服務器的TCP 21端口發送一個建立連接的請求:FTP服務器接受來自客戶端的請求,
  5. 並通過TCP/IP完成連接請求,這樣的連接稱之爲FTP控制連接
  6. 2.數據連接
  7. 當FTP控制連接建立完成後,客戶端便可使用FTP服務進行傳輸文件(get、put...);

FTP服務器的登陸方式:

  1. FTP服務登錄模式:
  2. 匿名用戶登錄模式:只需要輸入用戶anonymous/ftp,並將自己的E-mail作爲口令即可登錄FTP服務器,又稱爲(anonymousFTP服務器)
  3. 本地賬戶登錄模式:當進入FTP登錄窗口是,需要輸入正確的用戶名(user)和密碼(passwd)即可登錄FTP服務器。
  4. 虛擬用戶登錄模式:將登錄用戶映射到指定的系統賬號(/sbin/nologin)來訪問FTP資源,這樣就起到安全的效果。

FTP服務傳輸數據分爲三種傳輸模式:
主動模式(PORT)、被動模式(PASSIVE)、單端口模式

  1. 主動模式
  2. 主動傳輸模式,有FTP服務器向客戶端發送一個用於數據傳輸的連接,客戶端的連接端口由服務器和客戶端通過協商確定,
  3. 即FTP服務器用端口20與客戶端的臨時端口進行連接並傳輸數據,客戶端用於接收狀態。
  4. 被動模式
  5. 被動傳輸模式,由客戶端發送PASV命令使服務器處於被動模式,FTP的數據連接和控制連接方向一致,由客戶端向服務器端發送一個用於數據傳輸的連接,
  6. 客戶端的連接端口是發起該數據請求時使用的端口。
  7. 單端口模式
  8. 單端口模式,由服務器端發起,使用該模式時,客戶端的控制連接端口和數據連接端口一致,這種模式無法在短時間內連續輸入數據並傳送命令,
  9. 因此筆者不建議大家使用此模式。

FTP服務配置文件的結構:

  1. Vsftpd服務器的文件結構如下:
  2. # rpm -ql vsftpd ##查看在安裝vftpd軟件包時,所產生的配置文件。(這裏只做常用的文件)
  3. /usr/sbin/vsftpd ##Vsftpd主程序
  4. /etc/rc.d/init.d/vsftpd ##用於啓動終止腳本
  5. /etc/vsftpd/vsftpd.conf ##Vsftpd主配置文件
  6. /etc/pam.d/vsftpd ##PAM認證文件
  7. /etc/vsftpd.ftpusers ##禁止使用Vsftpd的用戶列表
  8. /etc/vsftpd.user_list ##禁止或允許使用Vsftpd的用戶列表
  9. /var/ftp ##匿名用戶的下載目錄
  10. /var/ftp/pub ##匿名用戶默認訪問目錄
  11. /etc/logrotate.d/vsftpd.log ##vsftpd的日誌文件

介紹vsftpd配置文件參數的設置信息
注:在構建FTP服務器,我們會經常更改vsftpd.conf中各個參數來完成需求,所以我們要完全瞭解每個參數後面的真實意義,這樣在配置器服務時,纔會運用自如。

  1. 當vsftpd軟件包安裝完成後,默認的主配置文件/etc/vsftpd/vsftpd.conf
  2. # vim /etc/vsftpd/vsftpd.conf
  3. #anonymous_enable=YES ##允許匿名訪問,即anonymous賬號訪問FTP服務
  4. #local_enable=YES ##允許本地用戶登錄FTP服務器
  5. #write_enable=YES ##本地用戶可以讀寫
  6. #local_umask=022 ##默認掩碼爲022,默認創建的文件權限爲755
  7. #anon_upload_enable=YES ##允許匿名用戶上傳文件,基於安全因素考慮,默認vsftpd是註釋此項
  8. #anon_mkdir_write_enable=YES ##是否允許匿名用戶創建目錄,基於安全因素考慮,默認vsftpd是註釋此項
  9. dirmessage_enable=YES ##如果目錄存在.message隱藏文件時,當進入此目錄時,會顯示.message裏面的內容
  10. xferlog_enable=YES ##默認記錄上傳、下載的日誌文件,是否開啓此功能
  11. #xferlog_file=/var/log/xferlog ##Vsftpd的日誌存放位置
  12. connect_from_port_20=YES ##從端口20連接,默認狀態下,20端口爲數據傳輸端口
  13. #chown_uploads=YES
  14. #chown_username=whoever ##此兩選項必須同時出現,含義爲,允許新上傳文件的擁有者爲whoever,默認這兩行被註釋到得。
  15. xferlog_std_format=YES ##使用標準格式上傳/下載
  16. #data_connection_timeout=120 ##傳輸延時時間,當時間超過120秒後,會自動斷開,默認是註釋掉的。
  17. #nopriv_user=ftpsecure ##使用特殊用戶ftpsecure,這裏可以把ftpsecure賬戶作爲一般訪問用戶,所有連接FTP服務器的用戶都具有ftpsecure用戶名。
  18. 基於安全因素考慮,可以在/etc/passwd中將ftpsecure的用戶shell設置爲/sbin/nologin(禁止登陸操作系統)
  19. #async_abor_enable=YES ##取消下載後客戶端不掛起,一般不需要設置。
  20. #ascii_upload_enable=YES
  21. #ascii_download_enable=YES ##是否啓用ASCII方式傳送文件,一般我們不需要這個格式。
  22. #ftpd_banner=Welcome to blah FTP service. ##登陸FTP服務器,所提示的信息,默認註釋掉的。
  23. #deny_email_enable=YES
  24. #banned_email_file=/etc/vsftpd/banned_emails ##若是啓用以上兩個選項,則可以在/etc/vsftpd/banned_emails中建立黑名單啦。
  25. #chroot_list_enable=YES
  26. #chroot_list_file=/etc/vsftpd/chroot_list ##當登陸FTP服務器時,被列在chroot_list文件中的用戶,不可以訪問FTP根目錄以外的目錄。
  27. #ls_recurse_enable=YES ##是否可以使用ls -R 命令,默認是註釋掉的。
  28. listen=YES ##當此項爲YES時,vsftpd運行於stand-alone模式下,默認是開啓的。
  29. #listen_ipv6=YES ##是用IPv6,默認是註釋掉的。
  30. pam_service_name=vsftpd ##列出與vsftpd相關的pam文件。
  31. userlist_enable=YES ##當此項設置爲YES時,啓用配置文件/etc/vsftpd.user_list.此時有兩種情況:
  32. ①若沒有userlist_deny=NO,則/etc/vsftpd.user_list中的用戶不可以訪問FTP服務器
  33. ②若有userlist_deny=NO,則僅接受/etc/vsftpd.user_list中的用戶登陸請求,同時此用戶也不可以存在/etc/vsftpd.ftpusers文件中。
  34. tcp_wrappers=YES ##支持TCP Wrappers

補充:(未出現在vsftpd.conf配置文件中的常用參數)

  1. guest_enable=YES
  2. guest_username=ftp
  3. guest用戶名,即登陸不是匿名用戶的用戶,具有guest用戶身份
  4. local_root=/var/ftp
  5. anon_root=/var/ftp
  6. 以上兩個選項爲本地用戶和匿名用戶默認訪問的目錄
  7. #pasv_enable=YES
  8. #port_enable=YES
  9. 以上兩個選項是FTP服務器的工作模式,兩者只能出現一個,而且另一個必須註釋掉。
  10. use_localtime=YES
  11. 是否使用本機時間,若設置NO時,僅使用格林尼治時間。由於北京時間和格林尼治時間有8小時時差,所以建議設置爲YES
  12. Idle_session_timeout=300
  13. 客戶端若在300秒之內沒有任何操作,則服務器自動斷開。
  14. max_clinet=0
  15. 最大連接數量(stand-alone模式下)
  16. max_per_ip=0
  17. 每個客戶端最大連接ftp服務器的連接數
  18. local_max_rate=0
  19. 本地用戶登陸FTP服務器最大傳輸速率,單位爲字節/秒
  20. anon_max_rate=0
  21. 匿名用戶登陸FTP服務器最大傳輸速率,單位爲字節/秒

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