好久沒有寫 skill 分類下的文章了, 最近一直都在專注於 C++ 或者 資料結構 的文章

如果閣下是按照本博客之前給出的 vsFTPd 安裝教學進行安裝的話, 可以直接繼續配置. 如果不是的話, 出現任何問題請 Google

首先, SSL 加密與 FTP 伺服器連線是有必要的, 因為非加密的連線非常可能造成資料被他人獲取, 而對你造成一定的困擾

本教學主要使用 OpenSSL

在前面的安裝教學中, 我們其實已經安裝了 OpenSSL 這一個組件, 但是如果你還未安裝, 那麼執行一下命令

yum install -y openssl

首先要確定, vsFTPd 支援 SSL 加密

ldd $(which vsftpd) | grep ssl

如果回傳的結果中出現類似於這樣的字樣 :

在 CentOS 7 下為 vsFTPd 增加 SSL 連線加密-Jonny'Blog

不同的伺服器回傳的結果可能不同, 但是大致都是相同的, 一定會出現 libssl.so 的字樣

接下來我們需要為 vsFTPd 建立專門的憑證, 這裡我們將憑證放在 CentOS 專門為憑證準備的一個檔案夾 /etc/pki/tls/certs/

cd /etc/pki/tls/certs/

make vsftpd.pem

Country Name (2 letter code) [XX]:
State or Province Name (full name) []:
Locality Name (eg, city) [Default City]:
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:
Email Address []:

上面的都是憑證的基本資料, 按照英文提示填寫即可

完成之後, 憑證就算是建立完成了, 我們將其複製到 vsFTPd 的檔案夾下

cp -a vsftpd.pem /etc/vsftpd

接下來配置 vsFTPd

vim /etc/vsftpd/vsftpd.conf

增加以下設定 :

#SSL

ssl_enable=YES

allow_anon_ssl=NO

force_local_data_ssl=YES

force_local_logins_ssl=YES

ssl_tlsv1=YES

ssl_sslv2=NO

ssl_sslv3=NO

rsa_cert_file=/etc/vsftpd/vsftpd.pem        #憑證存放檔案夾

pasv_min_port=59000        #連接埠可以自己設定

pasv_max_port=59010        #連接埠可以自己設定, 請注意要比最小連接埠要大, 具體數量自訂

之後設定 firewall :

firewall-cmd --permanent --zone=public --add-port=59000-59010/tcp

連接埠要和剛剛設定的連接埠一致

然後重新開啟 vsFTPd 和 firewalld 服務

systemctl restart vsftpd

firewall-cmd --reload

完成之後我們可以使用 FileZilla 連線, 以下是連線訊息 :

狀態: 正在解析 xxx.xxx.xxx 的 IP Address 
狀態: 正在連線到 0.0.0.0:21...
狀態: 連線已建立, 正在等候歡迎訊息...
狀態: 正在初始 TLS...
狀態: 正在驗證憑證...
狀態: TLS 連線已建立.
狀態: 記錄
狀態: 正在取得目錄列表...
狀態: 成功取得 "/dir/file" 的目錄