サーバー側
OpenSSLはインストールされているものとする。
VSFTPDをインストールする。
apt install vsftpd
/etc/vsftpd.confを編集する。
以下変更した箇所
listen=YES
listen_ipv6=NO
anonymous_enable=NO
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
rsa_cert_file=公開鍵
rsa_private_key_file=秘密鍵
# TLSを有効化
ssl_enable=YES
# 暗号化方式
ssl_ciphers=kEECDH+AESGCM+AES128:kEECDH+AESGCM:kEECDH+AES128:kEECDH+AES:!aNULL:!eNULL:!LOW:!EXP
匿名アクセス不可、ユーザーアクセス制限を設定する。
rsa_cert_fileは、Apacheで使用している物を使用した。vsftpdでは、鍵と証明書を1ファイルにしたものを使うこともできる。
vsftpdを再起動する。
/etc/init.d/vsftpd restart
FTPクライアントからのアクセスはFTPES(FTP Explicit SSL)とする。Filezillaでは、「明示的なSSL/TLS」と表記されている。
ちなみに、8GBのファイル(1ファイル)をSSL有・無でダウンロードしてみた。1Gbpsの環境で
SSL有 8.5MBps(約68Mbps)
SSL無 28.5MBps(約230Mbps)
SFTPクライアント
Linuxではlftpが定番らしいのでインストールする。
apt install lftp
使用方法は
lftp USER@HOST
だが、lftp固有の問題らしいが、
「致命的エラー: Certificate verification: Not trusted」のエラーが吐かれ、putもgetも出来ない。この対策として、/etc/lftp.conf の最終行に一行加える。ただし、これは「SSL証明書の正当性確認を無効にする」方法なので、接続先次第では十分配慮が必要な設定である。
vi /etc/lftp.conf
set ssl:verify-certificate no
ユーザー個別に設定したければ、ユーザーのホームディレクトリで、同様に一行加える。
vi
.lftprc
set ssl:verify-certificate no
コメント