A menudo he visto la regla -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPTaplicada. Si bien no soy un experto, esa línea en particular me preocupa. Es bastante obvio que la regla permite todo el tráfico con la única excepción de que la conexión debe haberse establecido o relacionado con una conexión establecida.
Guión
- Permitiré conexiones al puerto SSH predeterminado
22desde la LAN del servidor en la subred192.168.0.0/16o lo que sea. SuperInsecureApp®expone algo en el puerto1337, que agrego a miINPUTcadena.- He agregado la
conntrackregla para aceptarESTABLISHEDyRELATEDde todas las fuentes - La política de la cadena es
DROP
Básicamente, esa configuración debe permitir conexiones SSH solo desde la LAN, al tiempo que permite el tráfico entrante en el puerto 1337 del mundo.
Aquí es donde florece mi confusión. ¿Expondría conntrackde alguna manera una falla de seguridad que le permitiría a uno obtener una conexión establecida en 1337 (ya que está abierto en todo el mundo), y luego utilizar esa conexión para obtener acceso al puerto SSH (o cualquier otro puerto para el caso)?

conntrackregla está al principio o al final de la cadena? Por lo que entiendoiptables, ¿tendría que procesar todas las reglas en las conexiones establecidas si fuera al final, y solo esa regla si se colocara al principio?ESTABLECIDO y RELACIONADO son características del filtrado de paquetes "con estado", donde el filtrado no solo depende de un conjunto de reglas estáticas sino también del contexto, dentro del cual se consideran los paquetes. Necesita ESTABLECIDO para permitir que las conexiones funcionen, y necesita RELACIONADO para los mensajes ICMP relevantes. El filtrado con estado permite filtrar con mayor precisión en comparación con las reglas estáticas "sin estado".
Veamos ESTABLECIDO primero. Por ejemplo, considere TCP en el puerto 22. El iniciador (cliente) envía un
SYNaserverIPaddr:22. El servidor vuelveSYN+ACKal cliente. Ahora es el turno del cliente para enviar unACK. ¿Cómo debería ser la regla de filtrado en el servidor, de modo que soloACKse acepte la "coincidencia" ? Una regla general sin estado pareceríaque es más liberal que la regla estatal correspondiente. La regla sin estado permite segmentos TCP arbitrarios, por ejemplo,
ACKoFINsin haber establecido una conexión primero. Los escáneres de puertos pueden explotar este tipo de comportamiento para las huellas digitales del sistema operativo.Ahora echemos un vistazo a RELACIONADO. Esto se usa para mensajes ICMP, principalmente mensajes de error. Por ejemplo, si se descarta un paquete del servidor al cliente, se envía un mensaje de error al servidor. Este mensaje de error está "relacionado" con la conexión establecida previamente. Sin la regla RELACIONADA, uno debería permitir los mensajes de error entrantes en general (sin contexto) o, como es costumbre en muchos sitios, abandonar ICMP por completo y esperar tiempos de espera en la capa de transporte. (Tenga en cuenta que esta es una mala idea para IPv6; ICMPv6 juega un papel más importante para IPv6 que ICMP para el legado de IP).
fuente