原址: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 以打開下面的站點管理器界面。
13.現在,添加主機/站點名稱和IP地址,定義要使用的協議,加密和登錄類型,如下面的屏幕截圖(使用適用于您的實際情況的值):
Host:192.168.56.10
Protocol:FTP – File Transfer Protocol
Encryption:Require explicit FTP over ? ? ? ? ??# 推薦值
Logon Type:Ask for password? ? ? ? ? ? ? ? ? ? ? # 推薦值
User:username
14.然后點擊從上面的“Connect”,輸入密碼,然后驗證用于SSL / TLS連接的證書,然后單擊“確定”再次連接到FTP服務器:
15.現在,您應該已經通過TLS連接成功登錄到了FTP服務器,可以從下面的界面查看連接狀態以獲取更多信息。
16.最后,我們將文件從本地機器傳輸到FTP服務器的文件夾中,看看FileZilla界面的下端,查看有關文件傳輸的報告。
全部教程如上!永遠記住,安裝FTP服務器而不啟用加密服務具有一定的安全隱患。正如我們在本教程中所述,您可以在 Ubuntu 16.04 / 16.10中配置FTP服務器以使用SSL / TLS來實現安全連接。