Veamos estas dos reglas de iptables que a menudo se utilizan para permitir DNS saliente:
iptables -A OUTPUT -p udp --sport 1024:65535 --dport 53
-m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp --sport 53 --dport 1024:65535
-m state --state ESTABLISHED -j ACCEPT
Mi pregunta es: ¿cómo debo entender exactamente el estado ESTABLECIDO en UDP? UDP no tiene estado.
Aquí está mi intuición: me gustaría saber si esto es incorrecto o no:
La página del manual me dice esto:
estado
Este módulo, cuando se combina con el seguimiento de conexión, permite el acceso a estado de seguimiento de conexión para este paquete. --estado ...
Entonces, iptables básicamente recuerda el número de puerto que se usó para el paquete saliente (¿qué más podría recordar para un paquete UDP?) , Y luego permite que el primer paquete entrante se envíe en un corto período de tiempo. Un atacante tendría que adivinar el número de puerto (¿sería realmente demasiado difícil?)
Sobre evitar conflictos:
El kernel realiza un seguimiento de qué puertos están bloqueados (ya sea por otros servicios o por paquetes UDP salientes anteriores), de modo que estos puertos no se utilizarán para nuevos paquetes DNS salientes dentro del marco de tiempo. (¿Qué sucedería si accidentalmente intentara iniciar un servicio en ese puerto dentro del plazo? ¿Sería denegado / bloqueado ese intento?)
Encuentre todos los errores en el texto anterior :-) Gracias,
Chris