如何在Ubuntu上使用SSL/TLS搭建一個(gè)安全的FTP服務(wù)器
在本教程中,我們將介紹如何使用 Ubuntu 16.04 / 16.10 中的 SSL / TLS 保護(hù) FTP 服務(wù)器(FTPS)。
如果你想為基于 CentOS 的發(fā)行版安裝一個(gè)安全的 FTP 服務(wù)器,你可以閱讀 – 在 CentOS 上使用 SSL / TLS 保護(hù) FTP 服務(wù)器。
在遵循本指南中的各個(gè)步驟之后,我們將了解在 FTP 服務(wù)器中啟用加密服務(wù)的基本原理,以確保安全的數(shù)據(jù)傳輸至關(guān)重要。
要求
你必須已經(jīng)在 Ubuntu 上安裝和配置好一個(gè) FTP 服務(wù)器
在我們進(jìn)行下一步之前,確保本文中的所有命令都將以root身份或者 sudo 特權(quán)賬號(hào)運(yùn)行。
第一步:在 Ubuntu 上為 FTP 生成 SSL/TLS 證書
1、我們將首先在 /etc/ssl/ 下創(chuàng)建一個(gè)子目錄來存儲(chǔ) SSL/TLS 證書和密鑰文件,如果它不存在的話這樣做:
- $ sudo mkdir /etc/ssl/private
2、 現(xiàn)在我們在一個(gè)單一文件中生成證書和密鑰,運(yùn)行下面的命令:
- $ 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、在我們進(jìn)行 vsftpd 配置之前,對(duì)于那些已啟用 UFW 防火墻的用戶,你們必須打開端口 990 和 40000 -50000,來在 vsftpd 配置文件中分別啟用 TLS 連接端口和被動(dòng)端口的端口范圍:
- $ sudo ufw allow 990/tcp
- $ sudo ufw allow 40000:50000/tcp
- $ sudo ufw status
4、現(xiàn)在,打開 vsftpd 配置文件并定義 SSL 詳細(xì)信息:
- $ sudo vi /etc/vsftpd/vsftpd.conf
- 或
- $ sudo nano /etc/vsftpd/vsftpd.conf
然后,添加或找到選項(xiàng) ssl_enable,并將它的值設(shè)置為 YES 來激活使用 SSL ,同樣,因?yàn)?TLS 比 SSL 更安全,我們將通過啟用 ssl_tlsv1 選項(xiàng)限制 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、現(xiàn)在,我們也可以阻止匿名用戶使用 SSL 登錄,并且迫使所有的非匿名登錄使用安全的 SSL 鏈接來傳輸數(shù)據(jù)和在登錄期間發(fā)送密碼:
- allow_anon_ssl=NO
- force_local_data_ssl=YES
- force_local_logins_ssl=YES
7、此外,我們可以使用以下選項(xiàng)在 FTP 服務(wù)器中添加更多的安全功能 。對(duì)于選項(xiàng) require_ssl_reuse=YES,它表示所有的 SSL 數(shù)據(jù)鏈接都需重用已經(jīng)建立的 SSL 會(huì)話(需要證明客戶端擁有 FTP 控制通道的主密鑰),但是一些客戶端不支持它,如果沒有客戶端問題,出于安全原因不應(yīng)該關(guān)閉(默認(rèn)開啟)。
- require_ssl_reuse=NO
此外,我們可以通過 ssl_ciphers 選項(xiàng)來設(shè)置 vsftpd 允許使用那些加密算法。 這將有助于挫敗攻擊者使用那些已經(jīng)發(fā)現(xiàn)缺陷的加密算法的嘗試:
- ssl_ciphers=HIGH
8、 然后,我們定義被動(dòng)端口的端口范圍(最小和最大端口)。
- pasv_min_port=40000
- pasv_max_port=50000
9、 要啟用 SSL 調(diào)試,把 openSSL 連接診斷記錄到 vsftpd 日志文件中,我們可以使用 debug_ssl 選項(xiàng):
- debug_ssl=YES
最后,保存配置文件并且關(guān)閉它。然后重啟 vsftpd 服務(wù):
- $ systemctl restart vsftpd
第三步:在 Ubuntu 上使用 SSL / TLS 連接驗(yàn)證 FTP
10、 執(zhí)行所有上述配置后,通過嘗試在命令行中使用 FTP 來測試 vsftpd 是否現(xiàn)在使用了 SSL / TLS 連接,如下所示。
從下面的輸出來看,這里有一個(gè)錯(cuò)誤的信息告訴我們 vsftpd 僅允許用戶(非匿名用戶)從支持加密服務(wù)的安全客戶端登錄。
- $ 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>
該命令不支持加密服務(wù)從而導(dǎo)致了上述錯(cuò)誤。因此,要安全連接到啟用了加密服務(wù)的 FTP 服務(wù)器,我們需要一個(gè)默認(rèn)支持 SSL/TLS 連接的 FTP 客戶端,例如 FileZilla。
第四步:在客戶端上安裝FileZillaStep來安全地連接FTP
11、FileZilla 是一個(gè)強(qiáng)大的,廣泛使用的跨平臺(tái) FTP 客戶端,支持在 SSL/TLS 上的 FTP。為了在 Linux 客戶端機(jī)器上安裝 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、 一旦安裝完成,打開它然后點(diǎn)擊File=>Sites Manager或者(按Ctrl+S)來獲取下面的Site Manager。
Filezilla Site Manager
13、 現(xiàn)在,定義主機(jī)/站點(diǎn)名字,添加 IP 地址,定義使用的協(xié)議,加密和登錄類型,如下面的屏幕(使用適用于你方案的值):
點(diǎn)擊 New Site 按鈕來配置一個(gè)新的站點(diǎn)/主機(jī)連接。
- Host: 192.168.56.10
- Protocol: FTP – File Transfer Protocol
- Encryption: Require explicit FTP over #推薦
- Logon Type: Ask for password #推薦
- User: 用戶名
在 Filezilla 上配置新的 FTP 站點(diǎn)
14、 然后從上面的界面單擊連接以輸入密碼,然后驗(yàn)證用于 SSL / TLS 連接的證書,并再次單擊確定以連接到 FTP 服務(wù)器:
驗(yàn)證 FTP 的 SSL 證書
15、現(xiàn)在,你應(yīng)該通過 TLS 連接成功地登錄到了 FTP 服務(wù)器,檢查連接狀態(tài)部分,來獲取有關(guān)下面接口的更多信息。
連接 Ubuntu 的 FTP 服務(wù)器
16、 最后,讓我們在文件夾中從本地的機(jī)器傳送文件到 FTP 服務(wù)器, 查看 FileZilla 界面的下端來查看有關(guān)文件傳輸?shù)膱?bào)告。
使用 Filezilla 安全的傳輸 FTP 文件
就這樣! 始終記住,安裝 FTP 服務(wù)器而不啟用加密服務(wù)具有某些安全隱患。 正如我們在本教程中解釋的,您可以在 Ubuntu 16.04 / 16.10 中配置 FTP 服務(wù)器使用 SSL / TLS 連接來實(shí)現(xiàn)安全性。
如果你在 FTP 服務(wù)器上設(shè)置 SSL/TLS 遇到任何問題,請使用以下評(píng)論表單來分享您對(duì)本教程/主題的問題或想法。