Linux中國

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

要求

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

第一步:在 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 防火牆的用戶,你們必須打開埠 99040000 - 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 來測試 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

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站點

在 Filezilla 上配置新的 FTP 站點

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

驗證FTP的SSL證書

驗證 FTP 的 SSL 證書

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

連接Ubuntu的FTP伺服器

連接 Ubuntu 的 FTP 伺服器

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

使用Filezilla安全的傳輸FTP文件

使用 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 譯者:DockerChen 校對:wxy

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


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國