Sto cercando di configurare un server FTP accessibile da Internet con la crittografia, usando VSFTPD come programma server, su Fedora 25. Nonostante apparentemente abbia impostato tutto correttamente, non posso mai collegarmi al server dall'esterno della mia LAN quando la crittografia è abilitata. Tuttavia, la connessione è possibile se disabilito la crittografia o se mi connetto dalla mia LAN.
Il problema che sto riscontrando è che il server VSFTPD non può completare l'handshake SSL dopo aver ricevuto il comando AUTH da un client. Utilizzando Wireshark, posso vedere che il server sta tentando di inviare più volte quella che sembra la risposta della stretta di mano.
Se aiuta, ecco il rapporto di Wireshark su un client che tenta di connettersi al server:
From Info
------ ----
Client 64423 → 21 [ACK] Seq=1 Ack=1 Win=13952 Len=0 TSval=996262 TSecr=3062736173
Server Response: 220 (vsFTPd 3.0.3)
Client 64423 → 21 [ACK] Seq=1 Ack=21 Win=13952 Len=0 TSval=996281 TSecr=3062736371
Client Request: AUTH TLS
Server 21 → 64423 [ACK] Seq=21 Ack=11 Win=29056 Len=0 TSval=3062736436 TSecr=996282
Server Response: 234 Proceed with negotiation.
Server [TCP Retransmission] 21 → 64423 [PSH, ACK] Seq=21 Ack=11 Win=29056 Len=31 TSval=3062736822 TSecr=996282
Server [TCP Retransmission] 21 → 64423 [PSH, ACK] Seq=21 Ack=11 Win=29056 Len=31 TSval=3062737214 TSecr=996282
Server [TCP Retransmission] 21 → 64423 [PSH, ACK] Seq=21 Ack=11 Win=29056 Len=31 TSval=3062737214 TSecr=996282
Server [TCP Retransmission] 21 → 64423 [PSH, ACK] Seq=21 Ack=11 Win=29056 Len=31 TSval=3062737214 TSecr=996282
...
Altre informazioni: ho VSFTPD configurato per utilizzare TLSv1 o versioni successive, per lavorare in modalità passiva e con FTPS esplicito e con un certificato RSA autofirmato. Non credo che ci sia un problema con il mio certificato, dato che sono in grado di utilizzare lo stesso certificato per ospitare un server https con httpd, a cui posso accedere dall'esterno della mia LAN. Quindi il problema deve essere in qualche modo correlato a VSFTPD.
Ho anche impostato il mio router e firewall per inoltrare e accettare la porta 21 per le connessioni della porta di controllo ftp. Ho anche impostato VSFTPD per avere la porta 2048 come unica porta dati PASV, ma per qualche ragione non ho avuto bisogno di inoltrare quella porta sul mio router per far funzionare le connessioni FTP non crittografate ... e inoltre, l'errore che sto riscontrando è comunque, prima che la porta dati venga coinvolta.
Qualcuno ha idea di come risolvere questo problema? C'è qualcosa di ovvio che mi manca qui?
CONNECT: Client "::ffff:<client-ip>" DEBUG: Client "::ffff:<client-ip>", "SSL_accept failed: error:00000000:lib(0):func(0):reason(0)"