Muito comum se usar DROP para negar um pacote no iptables, inclusive deixando-a como política padrão. Mas você já ouviu falar do REJECT? Sabe que DROP e REJECT são diferentes?
Em certas situações pode ser mais interessante usar REJECT.
DROP: barra um pacote silenciosamente. Nenhuma resposta é devolvida ao remetente, nenhuma mensagem de erro. Ele fica sem saber o que aconteceu com seu pacote.
REJECT: barra um pacote e devolve um erro ao remetente informando que o pacote foi barrado. Se o pacote é um UDP a resposta virá na forma de um ICMP tipo 3. Se o pacote era TCP a resposta virá na forma de um TCP reset.
O fato é que se você usa DROP, como o cliente não sabe o que aconteceu com o pacote, ele poderá ficar tentando e tentando e tentando até se convencer. Uma experiência rápida você pode fazer em seu LINUX, usando DROP no site do vivaolinux:
a) # iptables -I OUTPUT -d www.vivaolinux.com.br -j DROP
Abra o navegador e visite o VOL. Veja quanto tempo o navegador leva para desistir.
Remova a regra:
# iptables -D OUTPUT -d www.vivaolinux.com.br -j DROP
Repita o teste do navegador. Veja que o navegador desiste na hora.
DROP ou REJECT?
Depende. O REJECT tem um efeito indesejável de entregar o IP do firewall. Algo como "Oi, eu sou o firewall e acabei de remover o seu pacote", mas tem a vantagem de chutar o IP na hora.
Já o DROP não entrega tão facilmente o IP do firewall, mas pode te encher os logs!
O bom mesmo é conhecer bem os dois e saber a diferença.
[1] Comentário enviado por TiagoSouza em 06/05/2012 - 17:04h
Percebi que se eu bloqueasse com DROP e deixasse o navegador tentando acessar o endereço bloqueado, e depois, sem parar o navegador, removesse a regra, ele abria a página. Já com REJECT, se eu bloqueasse, deixasse carregando, e removesse a regra, continuava carregando, como se ainda estivesse bloqueado.
Interessante isso. Estava usando DROP em tudo, mudei algumas regras da rede interna para REJECT e externa continuam com DROP. =)