快速搭建FTP服務器

  FTP服務器是一種常見的用於文件交換的服務,目前大小公司都有在用。最近公司有需求須要搭建FTP服務,就研究了一下。linux

  本次主要是基於vsftpd的搭建和配置。sql

1、vsftpd簡介:vim

vsftpd是一個UNIX類操做系統上運行的FTP服務器,它能夠運行在Linux、BSD、Solaris、HP-UNIX等多種操做系統上面,是一個徹底免費的、開發源代碼的ftp服務器軟件。目前主流的Linux發行版中均可以找到vsftpd的身影。安全

它有以下特色:服務器

  
  
  
  
  1. 程序小巧輕快,安裝方便。 
  2. 安全性和穩定性較早期FTP有很大進步。 
  3. 配置簡單。 

2、學習安裝和配置vsftpd:session

實驗環境:Centos 5.8 x86_64 app

測試環境關掉防火牆和selinux。tcp

       
       
       
       
  1. service iptables stop 
  2. setenforce 0 

一、安裝vsftpdide

  
  
  
  
  1. yum -y install vsftpd 

二、vsftpd相關的目錄及配置文件工具

  
  
  
  
  1. /usr/sbin/vsftpd  vsftpd主程序。 
  2. /etc/init.d/vsftpd  vsftpd服務控制腳本。 
  3. /etc/pam.d/vsftpd  這個是vsftpd使用PAM模塊時的相關配置文件,主要用來驗證登錄FTP用戶帳號的身份。 
  4. /etc/vsftpd/  配置文件目錄。 
  5. /etc/vsftpd/vsftpd.conf  vsftpd服務主配置文件,使用方法:參數=設定值。 
  6. /etc/vsftpd/ftpusers  與PAM模塊的配置文件配合使用,主要填寫FTP用戶帳號,一行一個。 
  7. /etc/vsftpd/user_list  vsftpd服務本身的用戶帳戶控制文件,與vsftpd.conf配置文件中的userlist_enable、userlist_deny兩個參數有關。 
  8. /var/ftp/  默認匿名用戶根目錄。 

三、主配置文件vsftpd.conf詳解

  
  
  
  
  1. 與服務器環境較相關的設定值 
  2.  
  3. connect_from_port_20=YES (NO
  4.  
  5. 主動式鏈接時使用FTP服務器的端口號,就是FTP-date的端口號。 
  6.  
  7. listen_port=21 
  8.  
  9. vsftpd控制端口。 
  10.  
  11. dirmessage_enable=YES (NO
  12.  
  13. 當用戶進入某個目錄時,是否顯示該目錄須要注意的內容,顯示信息的文件默認是 .message 。 
  14.  
  15. message_file=.message 
  16.  
  17. 當 dirmessage_enable=YES 時,能夠修改默認顯示信息文件的文件名。 
  18.  
  19. listen=YES (NO
  20.  
  21. 設置爲YES表示以stand alone方式啓動服務器,設置爲NO則表示以super deamon的方式啓動服務器。 
  22.  
  23. pasv_enable=YES (NO
  24.  
  25. 啓動被動模式(passive mode),必定要設置爲YES。 
  26.  
  27. use_localtime=YES (NO
  28.  
  29. 啓用本地時間,通常須要設置爲YES。由於vsFTPd默認使用GMT格林威治時間,這比東八區的時間早了8個小時,會使得服務器上的文件時間屬性出現混亂。 
  30.  
  31. write_enable=YES (NO
  32.  
  33. 是否容許用戶上傳數據。 
  34.  
  35. connect_timeout=60 
  36.  
  37. 在數據鏈接主動模式下,發出的鏈接信號在60秒內沒有獲得客戶端的響應,則強制斷線。 
  38.  
  39. accept_timeout=60 
  40.  
  41. 在用戶以PASV被動模式進行數據傳輸時,若是主機啓動passive port並等待客戶端超過60秒無迴應,就強制斷線。 
  42.  
  43. data_connection_timeout=300 
  44.  
  45. 在客戶端和服務器的數據鏈接已經創建的狀況下,若是在300秒內仍是沒法順利完成數據傳輸,則客戶端的連線會被vsFTPd強制斷開。 
  46.  
  47. idle_session_timeout=300 
  48.  
  49. 若是用戶在300秒內沒有命令操做,則斷線。 
  50.  
  51. max_clients=0 
  52.  
  53. 當vsFTPd以stand alone模式運行時,這個參數決定同一個IP、同一時間內被服務器容許的鏈接數。 
  54.  
  55. max_per_ip=0 
  56.  
  57. 與上面 max_clients 相似,這裏是同一個 IP 同一時間可容許多少聯機? 
  58.  
  59. pasv_min_port=0, pasv_max_port=0 
  60.  
  61. 這兩個參數指定pasv模式使用的端口號的範圍,0表示不限制。 
  62.  
  63. ftpd_banner=一些文字說明 
  64.  
  65. 用登入FTP時,顯示的歡迎信息,可設定顯示的信息內容較少。 
  66.  
  67. banner_file=/path/file 
  68.  
  69. 這個參數能夠彌補FTPd_banner參數的不足,特別是當須要在服務器端展現較多的文字信息時(如站點說明,歡迎文字等等)。 
  70.  
  71. 與實體用戶較相關的設定值 
  72.  
  73. guest_enable=YES (NO
  74.  
  75. 開啓訪客用戶,若是開啓則全部的非匿名用戶的均會被假設成訪客身份。訪客默認狀況下使用FTP這個帳戶相關的權限設置,可是能夠經過參數guest_username來修改。 
  76.  
  77. guest_username=ftp 
  78.  
  79. 在開啓了guest_enable=YES以後纔會生效,用來指定訪客的身份。 
  80.  
  81. local_enable=YES (NO
  82.  
  83. 是否容許/etc/passwd中存在的實體用戶賬號登錄vsFTPd服務器。 
  84.  
  85. local_max_rate=0 
  86.  
  87. 實體用戶的傳輸速度限制,單位爲bytes/second,0表示不限制。 
  88.  
  89. chroot_local_user=YES (NO
  90.  
  91. 將實體用戶限制在本身的家目錄以內,默認值爲NO。 
  92.  
  93. chroot_list_enable=YES (NO)、chroot_list_file=/etc/vsftpd.chroot_list 
  94.  
  95. 這兩個參數須要配合使用,用以將chroot_list文件中列出的用戶限制在本身的默認目錄中。 
  96.  
  97. userlist_enable=YES (NO)、userlist_deny=YES (NO)、userlist_file=/etc/vsftpd/user_list 
  98.  
  99. 參數userlist_enable=YES表示藉助vsFTPd的阻止機制來處理user_list文件中列出的某些不受歡迎的賬號;當userlist_deny=YES時user_list文件中的賬號將被拒絕,當userlist_deny=NO時則表示容許user_list中的賬號登錄服務器; 
  100.  
  101. 匿名者登入的設定值 
  102.  
  103. anonymous_enable=YES (NO
  104.  
  105. 是否容許匿名帳戶anonymous登陸,如下參數均在容許狀況下生效。 
  106.  
  107. anon_world_readable_only=YES (NO
  108.  
  109. 是否容許匿名用戶具備只讀權限。 
  110.  
  111. anon_other_write_enable=YES (NO
  112.  
  113. 是否容許匿名帳戶具備可寫權限。 
  114.  
  115. anon_mkdir_write_enable=YES (NO
  116.  
  117. 是否容許匿名用戶具備建立目錄的權限。 
  118.  
  119. anon_upload_enable=YES (NO
  120.  
  121. 是否容許匿名用戶具備上傳文件的權限。 
  122.  
  123. deny_email_enable=YES (NO
  124.  
  125. 如果啓動這項功能,則必須提供一個檔案/etc/vsftpd/banner_emails,內容爲email address。如果使用匿名登入,則會要求輸入email address,若輸入的email address 在此檔案內,則不容許進入。默認值爲NO。 
  126.  
  127. banned_email_file=/etc/vsftpd/banned_emails 
  128.  
  129. 若是 deny_email_enable=YES 時,能夠利用這個設定項目來規定哪一個 email address 不可登入咱們的 vsftpd 喔!在上面設定的檔案內,一行輸入一個 email address 便可! 
  130.  
  131. no_anon_password=YES (NO
  132.  
  133. 此文件用來輸入email address,只有在deny_email_enable=YES時,纔會使用到此檔案。如果使用匿名登入,則會要求輸入email address,若輸入的email address 在此檔案內,則不容許進入。 
  134.  
  135. anon_max_rate=0 
  136.  
  137. 設置匿名登入者使用的最大傳輸速度,單位爲B/s,0 表示不限制速度。默認值爲0。 
  138.  
  139. anon_umask=077 
  140.  
  141. 設置匿名登入者新增或上傳檔案時的umask 值。默認值爲077,則新建檔案的對應權限爲700。 
  142.  
  143. 關於系統安全方面的一些設定值 
  144.  
  145. ascii_download_enable=YES (NO
  146.  
  147. 設置是否啓用ASCII 模式下載數據。默認值爲NO。 
  148.  
  149. ascii_upload_enable=YES (NO
  150.  
  151. 設置是否啓用ASCII 模式上傳數據。默認值爲NO 
  152.  
  153. one_process_model=YES (NO
  154.  
  155. 是否使用單進程模式 
  156.  
  157. tcp_wrappers=YES (NO
  158.  
  159. 設置vsftpd是否與tcp wrapper相結合來進行主機的訪問控制。默認值爲YES。若是啓用,則vsftpd服務器會檢查/etc/hosts.allow 和/etc/hosts.deny 中的設置,來決定請求鏈接的主機,是否容許訪問該FTP服務器。這兩個文件能夠起到簡易的防火牆功能。 
  160.  
  161. xferlog_enable=YES (NO
  162.  
  163. 是否啓用上傳/下載日誌記錄。若是啓用,則上傳與下載的信息將被完整紀錄在xferlog_file 所定義的檔案中。預設爲開啓。 
  164.  
  165. xferlog_file=/var/log/xferlog 
  166.  
  167. 設置日誌文件名和路徑,默認值爲/var/log/vsftpd.log。 
  168.  
  169. xferlog_std_format=YES (NO
  170.  
  171. 若是啓用,則日誌文件將會寫成xferlog的標準格式,如同wu-ftpd 通常。默認值爲關閉。 
  172.  
  173. dual_log_enable=YES, vsftpd_log_file=/var/log/vsftpd.log 
  174.  
  175. 若是啓用該選項,將生成兩個類似的日誌文件,默認在 /var/log/xferlog 和 /var/log/vsftpd.log 目錄下。前者是 wu-ftpd 類型的傳輸日誌,能夠利用標準日誌工具對其進行分析;後者是Vsftpd類型的日誌。 
  176.  
  177. nopriv_user=nobody 
  178.  
  179. 預設vsftpd服務的運行帳戶。 
  180.  
  181. pam_service_name=vsftpd 
  182.  
  183. 設置PAM使用的名稱,默認值爲/etc/pam.d/vsftpd。 

四、配置實例

基於匿名用戶的配置:

  
  
  
  
  1. cd /etc/vsftpd/ 
  2. vim vsftpd.conf 

      
      
      
      
  1. write_enable=YES 
  2. anonymous_enable=YES 
  3. no_anon_password=YES 
  4. anon_upload_enable=YES 
  5. anon_mkdir_write_enable=YES 
  6. anon_other_write_enable=YES 
  7. anon_root=/data/vsftpd 
  8. anon_world_readable_only=NO 
  9. syslog_enable=YES 
  10. connect_from_port_20=YES 
  11. pam_service_name=vsftpd 
  12. listen=YES 

  
  
  
  
  1. mkdir -p /data/vsftpd/upload 
  2. chmod 777 /data/vsftpd/upload 

基於本地用戶的配置:

  
  
  
  
  1. cd /etc/vsftpd/ 
  2. vim vsftpd.conf 

      
      
      
      
  1. anonymous_enable=NO 
  2. local_enable=YES 
  3. write_enable=YES 
  4. local_umask=022 
  5. dirmessage_enable=YES 
  6. xferlog_enable=YES 
  7. connect_from_port_20=YES 
  8. xferlog_std_format=YES 
  9. pam_service_name=vsftpd 
  10. userlist_enable=YES 
  11. listen=YES 
  12. tcp_wrappers=YES 
  13. userlist_deny=NO 

  
  
  
  
  1. useradd test 
  2. echo test | passwd --stdin test 
  3. echo "test" >> user_list 

基於虛擬用戶的配置:

  
  
  
  
  1. yum -y install db4-utils 
  2. cd /etc/vsftpd/ 
  3. vim virtual_userlist.txt 

      
      
      
      
  1. test1 
  2. 123456 
  3. test2 
  4. 123456 

  
  
  
  
  1. db_load -T -t hash -f /etc/vsftpd/virtual_userlist.txt /etc/vsftpd/virtual_userlist.db 
  2. chmod 600 /etc/vsftpd/virtual_userlist.db 
  3. vim /etc/pam.d/vsftpd.vu 

      
      
      
      
  1. auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/virtual_userlist 
  2. account required /lib64/security/pam_userdb.so db=/etc/vsftpd/virtual_userlist 

  
  
  
  
  1. useradd virtual_user -d /data/vsftpd 
  2. chmod 700 /home/ftpsite 
  3. chown virtual_user.virtual_user /data/vsftpd/ 
  4. vim /etc/vsftpd/vsftpd.conf 

      
      
      
      
  1. anonymous_enable=NO 
  2. local_enable=YES 
  3. xferlog_enable=YES 
  4. connect_from_port_20=YES 
  5. xferlog_std_format=YES 
  6. listen=YES 
  7. listen_port=21 
  8. userlist_enable=YES 
  9. guest_enable=YES 
  10. guest_username=virtual_user 
  11. pam_service_name=vsftpd.vu 
  12. virtual_use_local_privs=YES 
  13. ftpd_banner=Welcome to opendoc FTP service. 
  14. write_enable=YES 
  15. anonymous_enable=NO 
  16. anon_world_readable_only=NO 
  17. anon_upload_enable=YES 
  18. anon_mkdir_write_enable=YES 
  19. anon_other_write_enable=YES 
  20. local_umask=022 
  21. download_enable=Yes 
  22. local_root=/data/vsftpd 

關於服務器控制:

  
  
  
  
  1. service vsftpd {start|stop|restart|condrestart|status} 

客戶端操做:

clip_p_w_picpath002

到此,vsftpd的安裝配置算是告一段落了,若有問題請和我聯繫。。

相關文章
相關標籤/搜索