天天看點

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

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

<a target="_blank"></a>

1、我們将首先在 <code>/etc/ssl/</code> 下建立一個子目錄來存儲 ssl/tls 證書和密鑰檔案,如果它不存在的話這樣做:

<code>$ sudo mkdir /etc/ssl/private</code>

2、 現在我們在一個單一檔案中生成證書和密鑰,運作下面的指令:

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

上面的指令将提示你回答以下問題,不要忘了輸入合适于你情況的值:

<code>country name (2 letter code) [xx]:in</code>

<code>state or province name (full name) []:lower parel</code>

<code>locality name (eg, city) [default city]:mumbai</code>

<code>organization name (eg, company) [default company ltd]:tecmint.com</code>

<code>organizational unit name (eg, section) []:linux and open source</code>

<code>common name (eg, your name or your server's hostname) []:tecmint</code>

<code>email address []:[email protected]</code>

<code>$ sudo ufw allow 990/tcp</code>

<code>$ sudo ufw allow 40000:50000/tcp</code>

<code>$ sudo ufw status</code>

4、現在,打開 vsftpd 配置檔案并定義 ssl 詳細資訊:

<code>$ sudo vi /etc/vsftpd/vsftpd.conf</code>

<code>或</code>

<code>$ sudo nano /etc/vsftpd/vsftpd.conf</code>

然後,添加或找到選項 <code>ssl_enable</code>,并将它的值設定為 <code>yes</code> 來激活使用 ssl ,同樣,因為 tls 比 ssl 更安全,我們将通過啟用 <code>ssl_tlsv1</code> 選項限制 vsftpd 隻使用 tls:

<code>ssl_enable=yes</code>

<code>ssl_tlsv1=yes</code>

<code>ssl_sslv2=no</code>

<code>ssl_sslv3=no</code>

5、 接下來,使用 <code>#</code> 字元注釋掉下面的行,如下所示:

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

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

然後,添加以下行以定義 ssl 證書和密鑰檔案的位置(lctt 譯注:或徑直修改也可):

<code>rsa_cert_file=/etc/ssl/private/vsftpd.pem</code>

<code>rsa_private_key_file=/etc/ssl/private/vsftpd.pem</code>

6、現在,我們也可以阻止匿名使用者使用 ssl 登入,并且迫使所有的非匿名登入使用安全的 ssl 連結來傳輸資料和在登入期間發送密碼:

<code>allow_anon_ssl=no</code>

<code>force_local_data_ssl=yes</code>

<code>force_local_logins_ssl=yes</code>

7、此外,我們可以使用以下選項在 ftp 伺服器中添加更多的安全功能 。對于選項 <code>require_ssl_reuse=yes</code>,它表示所有的 ssl 資料連結都需重用已經建立的 ssl 會話(需要證明用戶端擁有 ftp 控制通道的主密鑰),但是一些用戶端不支援它,如果沒有用戶端問題,出于安全原因不應該關閉(預設開啟)。(lctt 譯注:原文此處了解有誤,譯者修改。)

<code>require_ssl_reuse=no</code>

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

<code>ssl_ciphers=high</code>

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

<code>pasv_min_port=40000</code>

<code>pasv_max_port=50000</code>

9、 要啟用 ssl 調試,把 openssl 連接配接診斷記錄到 vsftpd 日志檔案中,我們可以使用 <code>debug_ssl</code> 選項:

<code>debug_ssl=yes</code>

最後,儲存配置檔案并且關閉它。然後重新開機 vsftpd 服務:

<code>$ systemctl restart vsftpd</code>

從下面的輸出來看,這裡有一個錯誤的資訊告訴我們 vsftpd 僅允許使用者(非匿名使用者)從支援加密服務的安全用戶端登入。

<code>$ ftp 192.168.56.10</code>

<code>connected to 192.168.56.10 (192.168.56.10).</code>

<code>220 welcome to tecmint.com ftp service.</code>

<code>name (192.168.56.10:root) : ravi</code>

<code>530 non-anonymous sessions must use encryption.</code>

<code>login failed.</code>

<code>421 service not available, remote server has closed connection</code>

<code>ftp&gt;</code>

該指令不支援加密服務進而導緻了上述錯誤。是以,要安全連接配接到啟用了加密服務的 ftp 伺服器,我們需要一個預設支援 ssl/tls 連接配接的 ftp 用戶端,例如 filezilla。

11、filezilla 是一個強大的,廣泛使用的跨平台 ftp 用戶端,支援在 ssl/tls 上的 ftp。為了在 linux 用戶端機器上安裝 filezilla,使用下面的指令。

<code>--------- on debian/ubuntu ---------</code>

<code>$ sudo apt-get install filezilla</code>

<code>--------- on centos/rhel/fedora ---------</code>

<code># yum install epel-release filezilla</code>

<code>--------- on fedora 22+ ---------</code>

<code>$ sudo dnf install filezilla</code>

12、 一旦安裝完成,打開它然後點選file=&gt;sites manager或者(按ctrl+s)來擷取下面的site manager。

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

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: 使用者名

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

在 filezilla 上配置新的 ftp 站點

14、 然後從上面的界面單擊連接配接以輸入密碼,然後驗證用于 ssl / tls 連接配接的證書,并再次單擊确定以連接配接到 ftp 伺服器:

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

驗證 ftp 的 ssl 證書

15、現在,你應該通過 tls 連接配接成功地登入到了 ftp 伺服器,檢查連接配接狀态部分,來擷取有關下面接口的更多資訊。

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

連接配接 ubuntu 的 ftp 伺服器

16、 最後,讓我們在檔案夾中從本地的機器傳送檔案到 ftp 伺服器, 檢視 filezilla 界面的下端來檢視有關檔案傳輸的報告。

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

使用 filezilla 安全的傳輸 ftp 檔案

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

原文釋出時間為:2017-03-12

本文來自雲栖社群合作夥伴“linux中國”

繼續閱讀