No modo ativo, o servidor inicia uma conexão com um endereço IP definido pelo cliente, portanto, o servidor não tem como afetar o número da porta que está sendo usado. Neste caso, você não precisa abrir outras portas de entrada do que 21, porque o servidor inicia a conexão de dados em direção ao cliente.
No modo passivo, o cliente abre uma conexão com uma porta definida pelo servidor e esse é o ponto em que o intervalo de portas passivas entra em ação. O servidor escolhe uma porta livre dentro do intervalo e a entrega ao cliente. Isso significa que todo o intervalo de portas precisa estar aberto no firewall do servidor, o que tem implicações de segurança.
O Linux possui um recurso interessante para reduzir os efeitos da abertura de um grande intervalo de portas para o rastreamento passivo de conexões FTP-iptables. Para tirar proveito disso, você precisa ter certeza de que o módulo ip_conntrack_ftp está carregado, e então você pode permitir o tráfego como este # iptables -A your_chain -i your_iface -m state --state RELATED -m helper --helper ftp -j ACCEPT
(você pode incluir seu intervalo de portas se necessário). Isso diz ao iptables para aceitar conexões relacionadas gerenciadas pelo auxiliar do conntrack FTP. Portanto, se qualquer outro serviço estiver escutando em um soquete em seu intervalo de portas passivo, o iptables negaria o acesso à porta porque não pode reconhecê-lo relacionado a FTP.