在 Ubuntu 16.04 上通過(guò) SSL/TLS 搭建安全的 FTP 服務(wù)器

FTP 是 File Transfer Protocol (文件傳輸協(xié)議)的簡(jiǎn)稱僧叉,用于在 Internet 上控制文件的雙向傳輸。作為很古老的一種文件傳輸協(xié)議骤竹,簡(jiǎn)單的服務(wù)器搭建和豐富的客戶端支持是它的優(yōu)勢(shì),但安全性卻是它很大的一個(gè)軟肋尿贫。(在建立連接時(shí)使用明文傳輸用戶名和密碼等重要信息)

一、安全性測(cè)試

1. 安裝 ftp 服務(wù):

ubuntu 16.04 可以使用包管理器直接安裝 vsftpd 以建立 ftp 服務(wù)器爱沟。
$ sudo apt-get install vsftpd

vsftpd 的配置文件為 /etc/vsftpd.conf帅霜,默認(rèn)即開(kāi)啟了本地用戶local_enable=YES)的登錄和下載權(quán)限,可以直接使用呼伸。如需使用上傳功能身冀,可以將配置文件中 #write_enable=YES 前面的注釋去掉。
因?yàn)橹饕菧y(cè)試安全性括享,其他配置選項(xiàng)暫不做改動(dòng)搂根。

2. 使用 wireshark 抓包

Wireshark 是一個(gè)功能強(qiáng)大的網(wǎng)絡(luò)抓包和分析工具。這里使用它來(lái)對(duì) FTP 客戶端與服務(wù)器之間的數(shù)據(jù)交換進(jìn)行監(jiān)控铃辖。
因?yàn)?Ubuntu 服務(wù)器安裝在 virtualbox 虛擬機(jī)中剩愧,聯(lián)網(wǎng)使用的是 Host-only 模式,所以抓包時(shí)監(jiān)控的是 vboxnet0 虛擬網(wǎng)卡娇斩。

效果如下:
ftp 明文傳輸密碼

可以看到仁卷,F(xiàn)TP 的用戶名和密碼都是使用明文傳輸?shù)模梢灾苯颖豢吹健?/p>

3. 更安全的 SFTP 服務(wù)

SFTP 是 Secure File Transfer Protocol (安全文件傳送協(xié)議)的縮寫(xiě)犬第,包含在 ssh 服務(wù)中锦积。Ubuntu 16.04 系統(tǒng)中,配置好 ssh 服務(wù)后歉嗓,sftp 服務(wù)即默認(rèn)開(kāi)啟丰介。
需要注意的是,sftp 使用了加密鉴分、解密技術(shù)哮幢,所以傳輸效率比普通的FTP要低得多

可以使用 sudo apt-get openssh-server 命令安裝 ssh 服務(wù)志珍,如 sftp 服務(wù)未默認(rèn)開(kāi)啟橙垢,可以編輯 sshd 配置文件:/etc/ssh/sshd_config,添加上 Subsystem sftp /usr/lib/openssh/sftp-server伦糯。

使用 sftp 服務(wù)時(shí)的抓包截圖:

sftp 抓包截圖

可以看到钢悲,截獲的包內(nèi)容都變成了 Encrypted packet

二、搭建安全的 FTPS 服務(wù)

這里要詳細(xì)說(shuō)明的是另外一種解決方案舔株,使用 SSL/TLS 對(duì) FTP 的數(shù)據(jù)傳輸進(jìn)行加密莺琳。關(guān)于 SFTP 與 FTPS 的之間的對(duì)比,建議參考此文章:FTPS (FTP over SSL) vs SFTP (SSH File Transfer Protocol)载慈。

1. 創(chuàng)建證書(shū)

FTPS 是使用安全套接層(SSL)證書(shū)的 FTP 技術(shù)惭等,也就是使用用戶 ID、密碼和 SSL 證書(shū)進(jìn)行身份驗(yàn)證办铡。
$ sudo openssl req -x509 -nodes -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem -days 365 -newkey rsa:2048
上面的命令用于生成證書(shū)key 并保存在 vsftpd.pem 文件中辞做。
運(yùn)行后會(huì)提示你輸入相關(guān)信息(可以隨便填寫(xiě)琳要,不要留空):

Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:hangzhou
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:section
Common Name (e.g. server FQDN or YOUR name) []:starky
Email Address []:starky@email.com
生成證書(shū)
2. 修改配置文件

如果你有開(kāi)啟 ufw 防火墻(默認(rèn)是未開(kāi)啟的),需要先在防火墻配置中開(kāi)放指定端口用于通訊和數(shù)據(jù)傳輸秤茅。

$ sudo ufw allow 990/tcp
$ sudo ufw allow 4000:5000/tcp

我這里沒(méi)有開(kāi)啟 ufw 稚补,所以不需要以上操作。直接修改 vsftpd 的配置文件($ sudo vim /etc/vsftpd.conf)框喳。將文件中的對(duì)應(yīng)配置做如下修改(沒(méi)有就添加):

# 開(kāi)啟 ssl 并指定使用的協(xié)議
ssl_enable=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
# 指定證書(shū)和 key 文件
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
# 安全選項(xiàng)
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
require_ssl_reuse=NO
ssl_ciphers=HIGH
# 指定主動(dòng)模式時(shí)使用的端口范圍
pasv_min_port=40000
pasv_max_port=50000

修改完成后重啟 vsftpd 服務(wù):$ sudo systemctl restart vsftpd

三课幕、連接驗(yàn)證

客戶端使用 filezilla 連接服務(wù)器,新建站點(diǎn)時(shí)使用如下配置:

Host:  192.168.56.102
Protocol:  FTP – File Transfer Protocol
Encryption:  Require explicit FTP over TLS
Logon Type:  Ask for password
User:  username

filezilla

點(diǎn)連接后會(huì)跳出輸入密碼界面和證書(shū)信息五垮,確定之后即可成功連接
連接成功界面

而此時(shí) wireshark 的抓包截圖如下:
ftps 抓包

捕捉到的請(qǐng)求和響應(yīng)信息都是已加密過(guò)的密文乍惊。

參考文章

Setting Up a Secure FTP Server using SSL/TLS on Ubuntu
關(guān)于 vsftpd 配置文件的詳細(xì)解釋可參考Vsftpd - Ubuntu中文

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市放仗,隨后出現(xiàn)的幾起案子润绎,更是在濱河造成了極大的恐慌,老刑警劉巖诞挨,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件莉撇,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡惶傻,警方通過(guò)查閱死者的電腦和手機(jī)棍郎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)达罗,“玉大人坝撑,你說(shuō)我怎么就攤上這事静秆×溉啵” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵抚笔,是天一觀的道長(zhǎng)扶认。 經(jīng)常有香客問(wèn)我,道長(zhǎng)殊橙,這世上最難降的妖魔是什么辐宾? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮膨蛮,結(jié)果婚禮上叠纹,老公的妹妹穿的比我還像新娘。我一直安慰自己敞葛,他們只是感情好誉察,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著惹谐,像睡著了一般持偏。 火紅的嫁衣襯著肌膚如雪驼卖。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,737評(píng)論 1 305
  • 那天鸿秆,我揣著相機(jī)與錄音酌畜,去河邊找鬼。 笑死卿叽,一個(gè)胖子當(dāng)著我的面吹牛桥胞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播附帽,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼埠戳,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了蕉扮?” 一聲冷哼從身側(cè)響起整胃,我...
    開(kāi)封第一講書(shū)人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎喳钟,沒(méi)想到半個(gè)月后屁使,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡奔则,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年蛮寂,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片易茬。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡酬蹋,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出抽莱,到底是詐尸還是另有隱情范抓,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布食铐,位于F島的核電站匕垫,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏虐呻。R本人自食惡果不足惜象泵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望斟叼。 院中可真熱鬧偶惠,春花似錦、人聲如沸朗涩。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至扒腕,卻和暖如春绢淀,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背瘾腰。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工皆的, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蹋盆。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓费薄,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親栖雾。 傳聞我的和親對(duì)象是個(gè)殘疾皇子楞抡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容