目錄

FTP SERVER

本文是以 CentOS 架構作的說明,您若是需要了解 Ubuntu 架設 FTP Server 請參閱我們另一篇文章:架設 FTP 伺服器 – 如何在 Ubuntu 上架設 FTP 伺服器

FTP SERVER 架設 簡介

vsftpd(very secure FTP daemon)是一個廣泛使用的、開源的 FTP Server 軟體,以其高效能、高安全性和穩定性著稱,支援多種 FTP 相關協議,包括 FTP、SFTP(通過SSH)、TLS/SSL 加密的 FTP 等。本文介紹如何在TAKI Cloud 的 Linux系統雲端主機上執行個體上安裝並配置 vsftpd。

FTP SERVER 架設 準備資源

已建立一台基礎運算雲端主機執行個體,並滿足以下配置。如果您還未建立,請參見自訂購買雲端主機執行個體。

  • 作業系統:AlmaLinux 8.x 位元、RockyLinux 8.x 位元、CentOS 7.x 64位元、CentOS 8.x 64位元、Ubuntu。
  • IP地址:執行個體(雲端主機)已指派公網IP地址或綁定 IP Address。
  • 安全性群組:入方向允許存取 80、22、443 連接 port。具體操作,請參見添加安全性群組規則。

FTP SERVER 架設 操作步驟

步驟一:安裝 vsftpd

  1. 遠端連線Linux執行個體,具體操作,請透過 putty 或是利用終端機執行 ssh 指令並登入帳號與密碼或密鑰認證登入 Linux 執行個體。
  1. 執行以下命令,安裝 vsftpd。
				
					yum install -y vsftpd
				
			

出現類似如下圖所示介面時,表示 vsftpd 安裝成功。

  1. 執行以下命令,啟動FTP服務,並設定開機自啟動。
				
					systemctl start vsftpd
systemctl enable vsftpd
				
			
  1. 執行以下命令,查看FTP服務監聽的連接 port 位。
				
					netstat -antup | grep ftp
				
			

出現如下圖所示介面,表示 FTP Server 已啟動,監聽的連接 port 號碼為 21。

此時,vsftpd 預設已開啟匿名訪問功能,您無需輸入使用者名稱密碼即可登入 FTP 伺服器,但沒有修改或上傳檔案的許可權。

步驟二:配置 vsftpd

  1. 建立一個 Linux 使用者並設定密碼。FTP 支援以下三種認證模式:
    • 匿名使用者模式:任何人無需密碼驗證就可以直接登入到 FTP Server。這種模式最不安全,一般只用來儲存不重要的公開檔案,不推薦在生產環境中使用。
    • 本機使用者模式:通過 Linux 系統本地帳號進行驗證的模式,相較於匿名使用者模式更安全。

    • 虛擬使用者模式:FTP Server 的專有使用者。虛擬使用者只能訪問 Linux 系統為其提供的FTP 服務,而不能訪問 Linux 系統的其他資源,進一步增強了FTP Server 的安全性。

  • 運行以下命令,為 FTP 服務建立一個 Linux 使用者。本樣本中,該使用者名稱為 takitest。
				
					adduser takitest
				
			
  • 執行以下命令,修改 takitest 使用者的密碼。
				
					passwd takitest
				
			

執行命令後,根據命令列提示完成 FTP 使用者的密碼修改。

  1. 執行以下命令,建立一個供 FTP 服務使用的檔案目錄。
				
					mkdir -p /var/ftp/test
				
			
  1. 執行以下命令,建立測試檔案。該測試檔案用於 FTP 用戶端訪問 FTP Server 時使用。
				
					touch /var/ftp/test/testfile.txt
				
			
  1. 執行以下命令,更改 /var/ftp/test 目錄的擁有者為 takitest。
				
					chown -R takitest:takitest /var/ftp/test
				
			
  1. 修改 vsftpd.conf 設定檔。

a. 執行以下命令,開啟 vsftpd 的設定檔。

				
					vim /etc/vsftpd/vsftpd.conf
				
			

b. 按 i 進入編輯模式。

c. 配置 FTP Server 工作模式。

FTP伺服器支援以下兩種工作模式:

  • 主動模式(Active Mode):用戶端向 FTP Server 傳送 port 資訊,由伺服器主動串連該連接 port。

  • 被動模式(Passive Mode):FTP Server 開啟並傳送 port 資訊給用戶端,由用戶端串連該連接 port,伺服器被動接受串連。

本文介紹配置 FTP Server 為被動模式。具體的配置參數說明如下,除下面提及的參數,其他參數保持預設值即可。

修改下列參數的值:

				
					#禁止匿名登入FTP伺服器。
anonymous_enable=NO
#允許本機使用者登入FTP伺服器。
local_enable=YES
#監聽IPv4 sockets。
listen=YES
				
			

在行首添加 # 注釋掉以下參數,關閉監聽 IPv6 sockets:

				
					#listen_ipv6=YES
				
			

在設定檔的末尾添加下列參數,其中 pasv_address 需修改為 FTP Server 的外網 IP 地址。

				
					#設定本機使用者登入後所在目錄。
local_root=/var/ftp/test
#全部使用者被限制在主目錄。
chroot_local_user=YES
#啟用例外使用者名稱單。
chroot_list_enable=YES
#指定例外使用者列表檔案,列表中使用者不被鎖定在主目錄。
chroot_list_file=/etc/vsftpd/chroot_list
#開啟被動模式。
pasv_enable=YES
allow_writeable_chroot=YES
#本教程中為Linux執行個體的公網IP。
pasv_address=<FTP Server 外網 IP 地址>
#設定被動模式下,建立資料轉送可使用的連接埠範圍的最小值。
#建議您把連接埠範圍設定在一段比較高的範圍內,例如50000~50010,有助於提高訪問 FTP Server 的安全性。
pasv_min_port=50000
#設定被動模式下,建立資料轉送可使用的連接埠範圍的最大值。
pasv_max_port=50010
				
			

更多參數的詳細資料,請參見 vsftp設定檔及參數說明

d. 按 Esc 鍵,輸入:wq,按 Enter 鍵關閉並儲存設定檔。

  1. 建立 chroot_list 檔案,並在檔案中寫入例外使用者名稱單。

a. 執行以下命令,建立 chroot_list 檔案。

				
					vim /etc/vsftpd/chroot_list
				
			

b. 按 i 進入編輯模式。

c. 輸入例外使用者名稱單。此名單中的使用者不會被鎖定在主目錄,可以訪問其他目錄。

d. 按 Esc 鍵,輸入:wq,按 Enter 鍵關閉並儲存設定檔。

  1. 執行以下命令,重啟 vsftpd 服務。
				
					systemctl restart vsftpd
				
			

步驟三:設定安全性群組

搭建好 FTP 網站後,在執行個體安全性群組的入方向添加規則並允許存取下列 FTP 連接 port。

被動模式需開放 21 連接 port,以及 /etc/vsftpd/vsftpd.conf 設定檔中參數 pasv_min_port 和 pasv_max_port 之間的所有連接 port。配置詳情如下表所示。

規則方向授權策略協議類型連接埠範圍授權對象
入方向允許自訂TCP21/21

所有要訪問FTP伺服器的用戶端公網IP地址,多個地址之間用逗號隔開。

允許所有用戶端訪問時,授權對象為0.0.0.0/0。

入方向允許自訂TCPpasv_min_port/pasv_max_port。例如:50000/50010

所有要訪問FTP伺服器的用戶端公網IP地址,多個地址之間用逗號隔開。

允許所有用戶端訪問時,授權對象為0.0.0.0/0。

步驟四:測試搭建的 FTP Server

FTP用戶端、Windows 命令列工具或瀏覽器均可用來測試 FTP Server。本文以Windows 10 64位系統的本地主機作為 FTP 用戶端,介紹 FTP Server 的訪問步驟。

  • 在本地主機,開啟這台電腦。
  • 在地址欄中輸入ftp://<FTP Server 外網 IP 地址>:<FTP 連接 port>,本文中為 Linux 執行個體的內網 IP 地址。例如:ftp://192.168.XX.XX:21。
  • 在彈出的登入身份對話方塊中,輸入已設定的 FTP 使用者名稱和密碼,然後單擊登入。登入後,您可以查看到 FTP Server 指定目錄下的檔案,例如:測試檔案 testfile.txt。

vsftp 設定檔及參數說明

/etc/vsftpd 目錄下檔案說明如下:

  • /etc/vsftpd/vsftpd.conf 是 vsftpd 的核心設定檔。
  • /etc/vsftpd/ftpusers 是黑名單檔案,此檔案中的使用者不允許訪問FTP伺服器。
  • /etc/vsftpd/user_list是 白名單檔案,此檔案中的使用者允許訪問FTP伺服器。

vsftpd.conf 設定檔參數說明如下:

  • 使用者登入控制參數說明如下表所示。

    參數說明
    anonymous_enable=YES接受匿名使用者
    no_anon_password=YES匿名使用者login時不詢問口令
    anon_root=(none)匿名使用者主目錄
    local_enable=YES接受本機使用者
    local_root=(none)本機使用者主目錄
  • 使用者權限控制參數說明如下表所示。
參數說明
write_enable=YES可以上傳檔案(全域控制)
local_umask=022本機使用者上傳的檔案許可權
file_open_mode=0666上傳檔案的許可權配合umask使用
anon_upload_enable=NO匿名使用者可以上傳檔案
anon_mkdir_write_enable=NO匿名使用者可以建目錄
anon_other_write_enable=NO匿名使用者修改刪除
chown_username=lightwiter匿名上傳檔案所屬使用者名稱

常見問題

您需要根據以下操作步驟,開啟IE瀏覽器的下載許可權。

  1. 在本地主機中開啟IE瀏覽器。

  2. 在瀏覽器的右上方單擊IE表徵圖表徵圖,然後單擊Internet 選項

  3. Internet 選項對話方塊的頂部,單擊安全頁簽。

  4. 選擇一個地區以查看或更改安全設定地區,單擊Internet,然後在該地區的安全層級地區,單擊自訂層級

  5. 選擇下載 > 檔案下載 > 啟用,然後單擊確定

  6. 單擊應用,然後單擊確定

您可以根據 FTP 的報錯資訊手動排查問題。當您的報錯難以排查解決時,建議您使用第三方 FTP 用戶端串連工具。例如:FileZilla。下載地址為FileZilla。本樣本介紹使用FileZilla串連匿名模式的FTP伺服器。

  1. 配置 vsftpd 為匿名模式。

    1. 運行以下命令,修改設定檔 /etc/vsftpd/vsftpd.conf

      如果您在安裝 vsftpd 時,使用的是apt install vsftpd安裝命令,則設定檔路徑為/etc/vsftpd.conf

       
       
      vim /etc/vsftpd/vsftpd.conf
    2. i 進入編輯模式。

    3. 將匿名上傳許可權的注釋去掉,修改為 anon_upload_enable=YES

    4. Esc 退出編輯模式,然後輸入 :wq 並斷行符號以儲存並關閉檔案。

修改後的設定檔,如下圖所示。

  • 運行以下命令更改 /var/ftp/pub 目錄的許可權,為FTP使用者添加寫入權限。
  • /var/ftp/pub 為FTP服務預設的檔案目錄。
  • /var/ftp/pub 為FTP服務預設的檔案目錄。
 
 
chmod o+w /var/ftp/pub/
    1. 運行以下命令重新載入設定檔。

       
       
      systemctl restart vsftpd
  1. 下載並安裝 FileZilla。

  2. 通過 FileZilla 串連匿名模式的 FTP Server。

    1. 開啟 FileZilla 用戶端。

    2. 在頂部功能表列,選擇檔案站台管理員

    3. 站台管理員對話方塊的左下角,單擊新增站台(N)

輸入新網站的名稱,並完成網站配置。

*說明*

以下介面為 3.68.1 版本的 FileZilla,其他版本的 FileZilla 介面可能有所不同。

圖示紅框是需填入的資訊

  1. 具體的配置項說明如下:

    • 新網站名稱:您自訂的網站名稱。例如 test-01

    • 協議:FTP-檔案傳輸通訊協定。

    • 主機:FTP Server 外網 IP 地址。本文中為 Linux 執行個體的外網 IP 地址,例如211.23.XX.XX

    • 連接埠:21。

    • 登入類型:一般。

      本樣本中使用 FTP 用戶端串連一般模式的 FTP Server。所以您需要使用 FTP 使用者密碼串連FTP Server,則登入類型需要設定為正常,並需要配置使用者和密碼資訊。

  2. 單擊連線(C)

    連線成功後,您可以對檔案進行上傳、下載和刪除等操作。FileZilla 工具介面如下圖所示。

    圖中各地區的資訊說明如下表所示。

     

     

    序號

    說明

    顯示命令、FTP串連狀態和任務執行結果。

    本地地區,顯示本地主機的目錄資訊。

    遠程地區,顯示FTP伺服器的目錄資訊。匿名模式下,預設目錄為/pub

    記錄地區,可查看FTP任務的隊列資訊和日誌資訊。

TAKI Cloud 雲端主機
TAKI Cloud 雲端主機 只要470元起
TAKI Cloud 實體主機 Dedicated Server
TAKI Cloud 實體主機 只要4,500起
TAKI Cloud 中華電信 主機代管 服務
TAKI Cloud 主機代管 只要2,000元起

By taki

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *