Auf Port 21 läuft der Steuerkanal von FTP, Port 20 wird nur im Active Mode für den Datenkanal genutzt. Heute ist fast immer der Passive Mode aktiv: Der Server öffnet dafür Ports aus einem konfigurierten Bereich, z. B. pasv_min_port=40000 und pasv_max_port=40100 in vsftpd.
Klassisches FTP überträgt Passwörter im Klartext. Wenn FTP öffentlich sein muss, dann nur als FTPS (AUTH TLS auf Port 21) und mit freigegebenem Passive-Bereich in der Firewall. Besser: SFTP über Port 22.
Typisches Problem: Login klappt, aber LIST hängt oder bricht mit Timeout ab. Ursache ist fast immer der gesperrte Passive-Portbereich oder eine falsche pasv_address hinter NAT.
Prüfen
nc -vz ftp.beispiel.de 21