[翻譯]在 Ubuntu 中使用 SSL/TLS 加密 FTP 連接

原址:Setting Up a Secure FTP Server using SSL/TLS on Ubuntu

在本教程中,我們將介紹如何在 Ubuntu 16.04 / 16.10 中使用 SSL / TLS 加密 FTP(本文中,我們將使用 VsFTP,一個號稱非常安全的 FTP 軟件)

在完成本指南中的所有步驟之后,我們將進一步去了解在FTP服務器中啟用加密服務的基本原理,以確保能安全的傳輸數據。

必備條件:

? ? ? 必須在Ubuntu中已經安裝并配置完FTP服務器

請確保本文中的所有命令都將以root或sudo特權帳戶運行。

Step 1:在 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

Step 2:在 Ubuntu 上配置 VsFTP 使用 SSL / TLS

3.在進行任何 VsFTP 配置之前,對于啟用了UFW防火墻的用戶,必須打開端口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

OR

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

6.現在,我們還必須防止匿名用戶使用SSL,然后強制所有非匿名登錄使用安全的SSL連接進行數據傳輸,并在登錄期間發送密碼:

allow_anon_ssl=NO

force_local_data_ssl=YES

force_local_logins_ssl=YES

7.此外,我們可以使用以下選項在FTP服務器中添加更多的安全功能。使用option_ssl_reuse = YES選項,所有SSL數據連接都需要展示SSL會話重用;證明他們知道與控制頻道相同的主機密碼。所以我們應該禁用它。

require_ssl_reuse=NO

另外,我們可以通過設置 ssl_ciphers 選項來設置SSL密碼等級。這將有助于阻擋試圖強制使用特定密碼的攻擊。

ssl_ciphers=HIGH

8.然后,我們來定義被動端口的端口范圍(最小和最大端口)。

pasv_min_port=40000

pasv_max_port=50000

9.我們可以使用debug_ssl選項啟用SSL調試,將 openSSL 連接記錄到VSFTPD日志文件中:

debug_ssl=YES

最后保存并關閉文件。然后重啟 VSFTPD 服務:

systemctl restart vsftpd

Step 3:在Ubuntu上驗證FTP使用SSL / TLS連接

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。

Step 4:安裝 FileZilla 并安全地連接FTP

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 以打開下面的站點管理器界面。

Filezilla 站點管理界面

13.現在,添加主機/站點名稱和IP地址,定義要使用的協議,加密和登錄類型,如下面的屏幕截圖(使用適用于您的實際情況的值):

Host:192.168.56.10

Protocol:FTP – File Transfer Protocol

Encryption:Require explicit FTP over ? ? ? ? ??# 推薦值

Logon Type:Ask for password? ? ? ? ? ? ? ? ? ? ? # 推薦值

User:username


在Filezilla上配置新的FTP站點

14.然后點擊從上面的“Connect”,輸入密碼,然后驗證用于SSL / TLS連接的證書,然后單擊“確定”再次連接到FTP服務器:


驗證FTP SSL證書

15.現在,您應該已經通過TLS連接成功登錄到了FTP服務器,可以從下面的界面查看連接狀態以獲取更多信息。


連接到Ubuntu FTP服務器

16.最后,我們將文件從本地機器傳輸到FTP服務器的文件夾中,看看FileZilla界面的下端,查看有關文件傳輸的報告。


使用Filezilla安全的傳輸文件到 FTP

全部教程如上!永遠記住,安裝FTP服務器而不啟用加密服務具有一定的安全隱患。正如我們在本教程中所述,您可以在 Ubuntu 16.04 / 16.10中配置FTP服務器以使用SSL / TLS來實現安全連接。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容