Hay un ejemplo de reglas de iptables en archlinux wiki:
# Generated by iptables-save v1.4.18 on Sun Mar 17 14:21:12 2013
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
:TCP - [0:0]
:UDP - [0:0]
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -p icmp -m icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -p udp -m conntrack --ctstate NEW -j UDP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP
-A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
-A INPUT -p tcp -j REJECT --reject-with tcp-reset
-A INPUT -j REJECT --reject-with icmp-proto-unreachable
COMMIT
# Completed on Sun Mar 17 14:21:12 2013
Hace unos días, mi amigo me preguntó por qué hay REJECT
en las últimas tres reglas. Me dijo que debería DROP
haberlo, y mencionó algo sobre una mejor seguridad en caso de DROP
.
Entonces, tengo dos preguntas:
¿Qué hacen las tres reglas?
¿Hay alguna diferencia cuando pongo allí
DROP
en su lugarREJECT --reject-with
? En caso afirmativo, ¿cuál es la diferencia?
Respuestas:
Esas 3 reglas parecen explicarse por sí mismas:
Si está buscando más detalles (sobre paquetes UDP / TCP, ICMP), necesita profundizar en los documentos de red, y tal vez
man iptables
también.Hace la diferencia Y contrario a la creencia popular,
DROP
no da mejor seguridad queREJECT
. Incomoda a los usuarios legítimos, y efectivamente no protege contra los maliciosos. Esta publicación explica el razonamiento en detalle:http://www.chiark.greenend.org.uk/~peterb/network/drop-vs-reject
fuente