Não é tarefa do iptables descartar um pacote quando a porta é fechada, esse é o trabalho da pilha de rede normal (como sem o iptables). (Para ser preciso: a pilha de rede não apenas descarta o pacote, mas também educadamente informa ao outro lado que não há nada escutando).
Só porque o iptables aceita um pacote não significa que há algo escutando.
Atualização: Como mencionado nos comentários, existe um risco. Mas isso não é de aceitar pacotes no porto fechado em si, mas da diferença no comportamento nesta porta comparado a todos os outros: Dropping vs. rejeitando. A solução é não descartar pacotes em todas as outras portas, mas rejeitá-los como a pilha de rede faria:
Se o pacote for TCP, use -j REJECT --reject-with tcp-reset
, para UDP e outros protocolos baseados em porta, use -j REJECT --reject-with icmp-port-unreachable
. Como cada simples DROP é agora dividido em duas regras, é melhor criar uma nova cadeia apenas para rejeitar e pular para essa cadeia onde quer que você queira descartar antes.
Use um portmapper como nmap
para verificar os resultados.