在 Ubuntu 上使用 SSL/TLS 搭建一個安全的 FTP 伺服器

2021-02-19 Linux

在本教程中,我們將介紹如何使用 Ubuntu 16.04 / 16.10 中的 SSL / TLS 保護 FTP 伺服器(FTPS)。

如果你想為基於 CentOS 的發行版安裝一個安全的 FTP 伺服器,你可以閱讀 – 在 CentOS 上使用 SSL / TLS 保護 FTP 伺服器[1]。

在遵循本指南中的各個步驟之後,我們將了解在 FTP 伺服器中啟用加密服務的基本原理,以確保安全的數據傳輸至關重要。

要求

在我們進行下一步之前,確保本文中的所有命令都將以root身份或者 sudo 特權帳號[3]運行。

第一步:在 Ubuntu 上為 FTP 生成 SSL/TLS 證書

1、我們將首先在 /etc/ssl/ 下創建一個子目錄來存儲 SSL/TLS 證書和密鑰文件,如果它不存在的話這樣做:

$ sudo mkdir /etc/ssl/private

2、 現在我們在一個單一文件中生成證書和密鑰,運行下面的命令:

$ sudo openssl req -x509 -nodes -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem -days 365 -newkey rsa:2048

上面的命令將提示你回答以下問題,不要忘了輸入合適於你情況的值:

Country Name (2 letter code) [XX]:IN

State or Province Name (full name) []:Lower Parel

Locality Name (eg, city) [Default City]:Mumbai

Organization Name (eg, company) [Default Company Ltd]:TecMint.com

Organizational Unit Name (eg, section) []:Linux and Open Source

Common Name (eg, your name or your server's hostname) []:tecmint

Email Address []:admin@tecmint.com

第二步:在 Ubuntu 上配置 vsftpd 來使用 SSL/TLS

3、在我們進行 vsftpd 配置之前,對於那些已啟用 UFW 防火牆[4]的用戶,你們必須打開埠 990 和 40000 - 50000,來在 vsftpd 配置文件中分別啟用 TLS 連接埠和被動埠的埠範圍:

$ sudo ufw allow 990/tcp

$ sudo ufw allow 40000:50000/tcp

$ sudo ufw status

4、現在,打開 vsftpd 配置文件並定義 SSL 詳細信息:

$ sudo vi /etc/vsftpd/vsftpd.conf

$ sudo nano /etc/vsftpd/vsftpd.conf

然後,添加或找到選項 ssl_enable,並將它的值設置為 YES 來激活使用 SSL ,同樣,因為 TLS 比 SSL 更安全,我們將通過啟用 ssl_tlsv1 選項限制 vsftpd 只使用 TLS:

ssl_enable=YES

ssl_tlsv1=YES

ssl_sslv2=NO

ssl_sslv3=NO

5、 接下來,使用 # 字符注釋掉下面的行,如下所示:

#rsa_cert_file=/etc/ssl/private/ssl-cert-snakeoil.pem

#rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

然後,添加以下行以定義 SSL 證書和密鑰文件的位置(LCTT 譯註:或徑直修改也可):

rsa_cert_file=/etc/ssl/private/vsftpd.pem

rsa_private_key_file=/etc/ssl/private/vsftpd.pem

6、現在,我們也可以阻止匿名用戶使用 SSL 登錄,並且迫使所有的非匿名登錄使用安全的 SSL 連結來傳輸數據和在登錄期間發送密碼:

allow_anon_ssl=NO

force_local_data_ssl=YES

force_local_logins_ssl=YES

7、此外,我們可以使用以下選項在 FTP 伺服器中添加更多的安全功能 。對於選項 require_ssl_reuse=YES,它表示所有的 SSL 數據連結都需重用已經建立的 SSL 會話(需要證明客戶端擁有 FTP 控制通道的主密鑰),但是一些客戶端不支持它,如果沒有客戶端問題,出於安全原因不應該關閉(默認開啟)。(LCTT 譯註:原文此處理解有誤,譯者修改。)

require_ssl_reuse=NO

此外,我們可以通過 ssl_ciphers 選項來設置 vsftpd 允許使用那些加密算法。 這將有助於挫敗攻擊者使用那些已經發現缺陷的加密算法的嘗試:

ssl_ciphers=HIGH

8、 然後,我們定義被動埠的埠範圍(最小和最大埠)。

pasv_min_port=40000

pasv_max_port=50000

9、 要啟用 SSL 調試,把 openSSL 連接診斷記錄到 vsftpd 日誌文件中,我們可以使用 debug_ssl選項:

debug_ssl=YES

最後,保存配置文件並且關閉它。然後重啟 vsftpd 服務:

$ systemctl restart vsftpd

第三步:在 Ubuntu 上使用 SSL / TLS 連接驗證 FTP

10、 執行所有上述配置後,通過嘗試在命令行中使用 FTP[5] 來測試 vsftpd 是否現在使用了 SSL / TLS 連接,如下所示。

從下面的輸出來看,這裡有一個錯誤的信息告訴我們 vsftpd 僅允許用戶(非匿名用戶)從支持加密服務的安全客戶端登錄。

$ ftp 192.168.56.10

Connected to 192.168.56.10  (192.168.56.10).

220 Welcome to TecMint.com FTP service.

Name (192.168.56.10:root) : ravi

530 Non-anonymous sessions must use encryption.

Login failed.

421 Service not available, remote server has closed connection

ftp>

該命令不支持加密服務從而導致了上述錯誤。因此,要安全連接到啟用了加密服務的 FTP 伺服器,我們需要一個默認支持 SSL/TLS 連接的 FTP 客戶端,例如 FileZilla。

第四步:在客戶端上安裝FileZillaStep來安全地連接FTP

11、FileZilla 是一個強大的,廣泛使用的跨平臺 FTP 客戶端,支持在 SSL/TLS 上的 FTP。為了在 Linux 客戶端機器上安裝 FileZilla,使用下面的命令。

---- On Debian/Ubuntu ----

$ sudo apt-get install filezilla  

---- On CentOS/RHEL/Fedora ----

# yum install epel-release filezilla

---- On Fedora 22+ ----

$ sudo dnf install filezilla

12、 一旦安裝完成,打開它然後點擊File=>Sites Manager或者(按Ctrl+S)來獲取下面的Site Manager。

Filezilla Site Manager

13、 現在,定義主機/站點名字,添加 IP 地址,定義使用的協議,加密和登錄類型,如下面的屏幕(使用適用於你方案的值):

點擊 New Site 按鈕來配置一個新的站點/主機連接。

Host: 192.168.56.10

Protocol: FTP – File Transfer Protocol

Encryption: Require explicit FTP over #推薦

Logon Type: Ask for password #推薦

User: 用戶名

在 Filezilla 上配置新的 FTP 站點

14、 然後從上面的界面單擊連接以輸入密碼,然後驗證用於 SSL / TLS 連接的證書,並再次單擊確定以連接到 FTP 伺服器:

驗證 FTP 的 SSL 證書

15、現在,你應該通過 TLS 連接成功地登錄到了 FTP 伺服器,檢查連接狀態部分,來獲取有關下面接口的更多信息。

連接 Ubuntu 的 FTP 伺服器

16、 最後,讓我們在文件夾中從本地的機器傳送文件到 FTP 伺服器, 查看 FileZilla 界面的下端來查看有關文件傳輸的報告。

使用 Filezilla 安全的傳輸 FTP 文件

就這樣! 始終記住,安裝 FTP 伺服器而不啟用加密服務具有某些安全隱患。 正如我們在本教程中解釋的,您可以在 Ubuntu 16.04 / 16.10 中配置 FTP 伺服器使用 SSL / TLS 連接來實現安全性。

如果你在 FTP 伺服器上設置 SSL/TLS 遇到任何問題,請使用以下評論表單來分享您對本教程/主題的問題或想法。

作者簡介:

Aaron Kili 是 Linux 和 F.O.S.S 愛好者,即將成為 Linux SysAdmin 和網絡開發人員,目前是 TecMint 的內容創作者,他喜歡在電腦上工作,並堅信分享知識。

via: http://www.tecmint.com/secure-ftp-server-using-ssl-tls-on-ubuntu/

作者:Aaron Kili[6] 譯者:DockerChen 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

貢獻時間:2016-11-12 -> 2017-3-9

[1]: 在 CentOS 上使用 SSL / TLS 保護 FTP 伺服器 - http://www.tecmint.com/axel-commandline-download-accelerator-for-linux/

[2]: 在 Ubuntu 上安裝和配置好一個 FTP 伺服器 - http://www.tecmint.com/install-ftp-server-in-ubuntu/

[3]: sudo 特權帳號 - http://www.tecmint.com/sudoers-configurations-for-setting-sudo-in-linux/

[4]: 已啟用 UFW 防火牆 - https://linux.cn/article-8087-1.html

[5]: 在命令行中使用 FTP - http://www.tecmint.com/sftp-command-examples/

[6]: Aaron Kili - http://www.tecmint.com/author/aaronkili/

相關焦點

  • 如何在 CentOS 7 中使用 SSL/TLS 加固 FTP 伺服器進行安全文件傳輸
    在這篇文章中,我們會介紹在 CentOS/RHEL 7 以及 Fedora 中如何在 FTP 伺服器中手動啟用數據加密服務;我們會介紹使用 SSL/TLS 證書保護 VSFTPD(Very Secure FTP Daemon)服務的各個步驟。
  • SSL_TLS 攻擊原理解析
    2、伺服器端收到請求,然後從客戶支持的 CipherSuite 中選出一個應答,並發送給客戶端公鑰證書和選用的 HASH 算法3、客戶端收到公鑰之後,利用自己的信任的根證書對收到的公鑰進行驗證.若通過,客戶端隨機生成對稱密鑰 (Pre-Master secret),通過伺服器發給客戶端,然後使用公鑰對對稱密鑰進行加密,並計算連接中全部報文信息的
  • CentOS7下vsftpd over SSL/TLS加密傳輸配置實踐
    之前有介紹過CentOS下搭建vsftpd伺服器,可以參考如下文章CentOS7下搭建vsftpd伺服器(本地用戶模式)
  • Linux的上傳和下載——Ubuntu中軟體的安裝和ftp伺服器的搭建
    中文件的上傳和下載,這就是我們本篇博客要講到的Ubuntu中軟體的安裝和ftp伺服器的搭建.遠程操作什麼是遠程操作?當主機和操作者不在同一個地點,而操作者要遠程控制一臺主機,那麼就需要在遠程的計算機上進行和主機交互為什麼要遠程操作目前基本上很多情況下存在的現象:在軟體需要伺服器的時候,可選的方案有:伺服器一般採用的系統:伺服器搭建好之後,需要將軟體的所有資源從本地的客戶端計算機上傳至伺服器計算機。
  • Ubuntu16.04環境下使用vsftpd搭建FTP伺服器
    文件,文件中用戶將不受限制的訪問ftp根目錄以外的目錄,每行一個用戶名只有存在於userlist文件中的用戶才能登錄ftp,可以理解為userlist是一個白名單root@ubuntu:/etc# vim vsftpd.user_list
  • 雲伺服器搭建FTP設置教程(Windows Server 2016搭建FTP服務)
    我只用過這3家雲服務,其他的也可以參照一下,我們需要在伺服器上搭建FTP 服務,這裡將簡單介紹如何在 Windows Server 2016 下安裝搭建 FTP 服務,所以做一下筆記記錄一下。大致可分為四步:一、整理打包需要上傳的文件,可以壓縮一下,可以節約上傳/下載時間。也節省流量。
  • Windows下搭建FTP伺服器教程
    一、什麼是ftp?
  • 6.雲伺服器上FTP服務安裝與配置
    FTP是一種在網際網路中進行文件傳輸的協議,基於客戶端/伺服器模式,默認使用20、21號埠,其中埠20(數據埠)用於數據傳輸,埠21(命令埠)用於接受客戶端發出的相關FTP命令與參數。FTP伺服器普遍部署於內網中,具有容易搭建、方便管理的特點。而且有些FTP客戶端工具還可以支持文件的多點下載以及斷點續傳技術,因此FTP服務得到了廣大用戶的青睞。
  • 怎麼建立FTP伺服器?
    ftp伺服器常用於區域網內網共享數據使用,當然internet上也有一些ftp伺服器。ftp伺服器使用了21埠號。ftp提供文件的上傳和下載服務,當然管理員也可以根據需求設置文件夾的訪問權限(讀寫、上傳、下載等)。建立FTP伺服器其實就是裝軟體和完成相關配置的過程。
  • 超級簡單,Windows下搭建FTP伺服器
    一、什麼是ftp?
  • windows 上怎麼搭建ftp服務呢?
    1.ftp簡介在搭建ftp服務前呢,我們先來了解下ftp協議和ftp伺服器ftp協議:一種文件傳輸協議。在本地和伺服器之間進行文件傳輸。ftp伺服器:支持ftp傳輸協議的伺服器。一般windows都帶有ftp服務,只是默認情況下都沒啟動。
  • 建議收藏 | Ubuntu16.04 ftp伺服器安裝+配置
    ftp伺服器安裝與配置1. ftp服務端的安裝如果之前配置過ftp伺服器的還是之後配置的伺服器,無法啟動服務    rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem    rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key    ssl_enable=NO
  • TLS/SSL 高級進階
    我們先要明白一個道理,HTTPS 是先建立在人與人之間的相互信任上,然後才建立在機器與機器的相互信任上。假如,根證書 A 機構,惡意的將一個以前頒發過的證書,又給了另外一個不要臉攔截站點(比如,用來插廣告的)。這樣,我拿到了這個證書後,就可以自己搭一個伺服器,用來進行攔截瀏覽,監管裡你網站,並強行插廣告。這就被稱為不可信的機構/證書。
  • Linux搭建FTP伺服器
    前言:FTP基本概述FTP伺服器(File Transfer Protocol Server)是在網際網路上提供文件存儲和訪問服務的計算機,它們依照FTP協議提供服務。FTP (File Transfer Protocol )文件傳輸協議三個版本:1、wu-ftp 2、proftp 3、vsftpd(very secure ftp daemon 非常安全的ftp服務)作用:常用於web等伺服器實現跨網絡
  • FTP伺服器的搭建
    FTP伺服器是在網際網路上提供文件存儲和訪問服務的計算機,我們可以上傳文件到伺服器供其他人拷貝,它們依照FTP協議提供服務。 FTP是File Transfer Protocol(文件傳輸協議)。顧名思義,就是專門用來傳輸文件的協議。簡單地說,支持FTP協議的伺服器就是FTP伺服器。        FTP伺服器的搭建有很多方式。
  • FTP 伺服器搭建與配置
    FTP存在伺服器的概念,可以理解為文件伺服器。也就存在權限的控制。然而權限的控制與SVN類似,除了授權帳號外,多了一種「匿名訪問」。匿名訪問也就是FTP伺服器向公眾開放。通常匿名的權限較低,只能下載文件,不能上傳文件。2、FTP工作原理是什麼?        FTP是一種CS架構,也就是客戶端與服務端的交互。
  • SSLScan:SSL版本檢測與密碼套件
    項目主頁https://github.com/rbsec/sslscan簡介sslscan是一個高效的c程序,它允許你檢測
  • 如何搭建ftp伺服器實現文件共享?
    一這裡以windows系統和linux系統為例,簡單介紹一下如何在這2種系統下搭建ftp伺服器,整個過程非常簡單,感興趣的朋友可以自己嘗試一下:windowswindows系統自帶有ftp伺服器,只需要在控制面板的「程序和功能」模塊中開啟一下就行,下面我簡單介紹一下操作過程:1.首先,打開控制面板,依次點擊「程序」->「啟用或關閉windows
  • linux搭建FTP伺服器步驟
    linux搭建FTP伺服器在linux作業系統中搭建ftp伺服器,ftp伺服器會提供三種遠程登錄方式,分別是匿名登錄方式、本地用戶方式和虛擬用戶方式
  • 如何在 Ubuntu 下安裝和配置 FTP 伺服器
    然而, FTP 最初的時候並不安全,因為它僅通過用戶憑證(用戶名和密碼)傳輸數據,沒有進行加密。警告:如果你打算使用 FTP, 需要考慮通過 SSL/TLS(將在下篇文章[1]中討論)配置 FTP 連接。否則,使用安全 FTP,比如 SFTP[2] 會更好一些。