Eu reproduzi seu resultado (com a tentativa de conexão SSH para 127.0.0.1
enquanto meu sshd
estava ouvindo). É verdade que o software apenas trava.
Acho que o software aguarda uma resposta ou uma mensagem de erro, mas a mensagem de erro se enquadra na mesma regra e é rejeitada. Eu não sei se há alguma reação em cadeia de mensagens de erro ou não - eu não investiguei até agora. Eu posso errar em primeiro lugar, então se alguém tiver uma explicação melhor, eu ficarei feliz em lê-lo.
Aqui está a solução que funciona no meu Debian:
Você deve se conectar à 127.0.0.2
( explicação aqui ) e fazer sua regra da seguinte forma:
sudo iptables -I INPUT 1 -p tcp -d 127.0.0.2 -j REJECT --reject-with tcp-reset
Observe o fragmento -I INPUT 1
que garante que a regra a ser inserida na primeira posição tenha precedência sobre qualquer regra de ACCEPT
que você já tenha na sua interface de loopback (como eu fiz no meu Debian).
Eu repeti o teste (com tentativa de conexão SSH, desta vez para 127.0.0.2
). Falhou imediatamente com
Connection refused
Eu acho que funciona como você deseja, porque agora a mensagem de erro é destinada a 127.0.0.1
, portanto, não sendo pego pela regra de rejeição e capaz de passar.