2019年11月7日 星期四

vsftpd 使用 SSL

先建立放SSL憑證的資料夾
$ mkdir /etc/vsftpd/ssl
產生網站的私鑰、證書。
vsftpd.key:私鑰(private key)
vsftpd.crt:證書(certificate)
(其中 -nodes 參數,表示不對 private key 加密,避免每次啟動需要輸入密碼。)
$ openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/vsftpd/ssl/vsftpd.key -out /etc/vsftpd/ssl/vsftpd.crt
(再來填寫一些基本的資料,即可產生vsftpd.key、vsftpd.crt 兩個檔)
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 []:

修改設定檔
$ vi /etc/vsftpd/vsftpd.conf
#設定密鑰檔案
rsa_cert_file=/etc/vsftpd/ssl/vsftpd.crt
rsa_private_key_file=/etc/vsftpd/ssl/vsftpd.key

#啟用ssl
ssl_enable=YES

#不允許匿名者使用 SSL
allow_anon_ssl=NO

#強制將SSL用於數據傳輸
force_local_data_ssl=YES

#強制將SSL用於登錄
force_local_logins_ssl=YES

#限制連接類型為TLS
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

#如果設置為YES,則所有SSL數據連接都必須具有SSL會話重用性(表示它們控制通道的主密鑰)
require_ssl_reuse=NO
重新啟動 vsftpd
$ systemctl restart vsftpd


參考:
[Linux] vsftpd配置ssl
系统运维|如何在 CentOS 7 中使用 SSL/TLS 加固 FTP 服务器进行安全文件传输


3 則留言:

  1. 請問改22port,改成其他port有辦法嗎?

    回覆刪除
    回覆
    1. 加 SSL 跟使用的 PORT 無關,修改 vsftpd 的 listen_port 設定即可。
      不過 22 PORT 預設是 SSH 使用,須避免跟其他服務有在用的 PORT 相衝突。

      刪除
    2. 謝謝!小弟想避開惡意有人監聽22port擷取封包。
      所以在想說有沒有22port改成其他port
      或者在檔案傳輸加密變成其他port

      刪除