Выяснил что plain ftp передает пароль в открытом виде в момент авторизации.
Есть https://ru.wikipedia.org/wiki/FTPS в разных версиях / режимах работы. Не могу вьехать что делать что бы proftpd + inetd работал безопасно. В общем на сервере выполнил: $ sudo proftpd-gencert /etc/proftpd/proftpd.conf:: Include /etc/proftpd/tls.conf /etc/proftpd/tls.conf:: TLSEngine on TLSLog /var/log/proftpd/tls.log TLSProtocol SSLv23 TLSRSACertificateFile /etc/ssl/certs/proftpd.crt TLSRSACertificateKeyFile /etc/ssl/private/proftpd.key TLSOptions NoCertRequest EnableDiags TLSVerifyClient off TLSRequired on Пробую: bash# lftp ftp://user@vps Password: lftp user@vps:~> ls ls: Fatal error: Certificate verification: Not trusted lftp user@vps:~> exit bash# lftp -e 'set ssl:verify-certificate no' ftp://user@vps Password: lftp user@vps:~> ls drwxr-xr-x 5 user user 4096 Nov 22 18:04 devel drwxr-xr-x 2 user user 4096 Oct 10 16:14 tmp Обычная команда `ftp` из `/usr/bin/netkit-ftp` не поддерживает SSL: bash# ftp -n vps Connected to vps. 220 ProFTPD 1.3.5 Server (Debian) [149.202.132.30] ftp> ls 550 SSL/TLS required on the control channel ftp: bind: Address already in use ftp> user user ^C 421 Service not available, remote server has closed connection ftp> exit `curl` тоже работает:: $ curl --ftp-ssl -k --netrc ftp://user@vps/.bashrc Нужно ли в inetd.conf использовать ftps или ftp: ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/proftpd ftps stream tcp nowait root /usr/sbin/tcpd /usr/sbin/proftpd У меня на ftps ошибки: bash# curl --ftp-ssl -k --netrc ftps://user@vps/.bashrc curl: (35) gnutls_handshake() failed: An unexpected TLS packet was received. bash# lftp ftps://user@vps lftp user@vps:~> ls ls: Fatal error: gnutls_handshake: An unexpected TLS packet was received. Такое ощущение что для ftps:// используется другой протокол, чем на ftp:// с включенным SSL. Как правильно запретить общение открытым текстом и настроить SSL/TLS в proftpd? Далее вопрос как в Debian сделать публичный ключ proftpd доверенным на клиентах? Я пробовал как: $ sudo mkdir /usr/share/ca-certificates/vps $ sudo scp user@vps:/etc/ssl/certs/proftpd.crt /usr/share/ca-certificates/vps/proftpd.crt $ sudo dpkg-reconfigure ca-certificates $ sudo update-ca-certificates --fresh Но curl и lftp игнорируют Дебиановские соглашения о сертификатах. Или я неверно готовлю. При том proftpd.crt виден в конце: /etc/ssl/certs/ca-certificates.crt Также если кормить напрямую: bash# curl -v --ftp-ssl --cacert /usr/share/ca-certificates/vps/proftpd.crt --netrc ftp://user@vps/.bashrc * Trying 149.202.132.30... * Connected to vps (149.202.132.30) port 21 (#0) < 220 ProFTPD 1.3.5 Server (Debian) [149.202.132.30] > AUTH SSL < 234 AUTH SSL successful * found 1 certificates in /usr/share/ca-certificates/vps/proftpd.crt * found 728 certificates in /etc/ssl/certs * ALPN, offering http/1.1 * SSL connection using TLS1.2 / ECDHE_RSA_AES_128_GCM_SHA256 * server certificate verification failed. CAfile: /usr/share/ca-certificates/vps/proftpd.crt CRLfile: none * Closing connection 0 curl: (60) server certificate verification failed. CAfile: /usr/share/ca-certificates/vps/proftpd.crt CRLfile: none More details here: http://curl.haxx.se/docs/sslcerts.html curl performs SSL certificate verification by default, using a "bundle" of Certificate Authority (CA) public keys (CA certs). If the default bundle file isn't adequate, you can specify an alternate file using the --cacert option. If this HTTPS server uses a certificate signed by a CA represented in the bundle, the certificate verification probably failed due to a problem with the certificate (it might be expired, or the name might not match the domain name in the URL). If you'd like to turn off curl's verification of the certificate, use the -k (or --insecure) option. -- Best regards!

