摘要訊息 : 為 vsFTPd 配置 SSL 連線教學.

0. 前言

為 FTP 軟體的連線進行加密還是非常有必要的, 否則我們在網路上的資料傳輸就是明文的, 一旦被攻擊者獲取到, 這些資料不需要解密就可以直接看到內容.

本文在 2022 年 3 月 24 日進行一次更新和修正. 修正之後本文已經歸檔, 不再享受更新.

1. 檢查依賴套件

在前面的安裝教學中, 我們其實已經安裝了 OpenSSL 這一個組件, 但是如果你還未安裝, 那麼執行一下指令 yum install -y openssl. 較新的 vsFTPd 都是支援 SSL 加密的, 或者可以用 ldd $(which vsftpd) | grep ssl 指令檢查一下, 如果出現libssl.so 的字樣, 就說明支援 SSL 沒有問題.

2. 配置

接下來我們需要為 vsFTPd 建立專門的憑證. 輸入指令 openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/vsftpd/vsftpd.key -out /etc/vsftpd/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 : 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=50000
pasv_max_port=50000

之後讓防火牆開放 59000 連接埠即可, 對於 Firewall, 執行下面指令 :

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

然後重新開啟 vsFTPd 服務 : systemctl restart vsftpd 即可.

現在我們可以使用 FileZilla 連線, 連線信息包含正在初始 TLS, 正在驗證憑證和 TLS 連線已建立, 並且連線成功, 就代表配置已經完成.