El bloque saliente de Iptables niega el entrante

El bloque saliente de Iptables niega el entrante

Estoy intentando bloquear solo las conexiones salientes a direcciones IP específicas; sin embargo, quiero permitir conexiones entrantes desde las mismas direcciones IP.

Por lo que tengo entendido sobre el bloqueo de conexiones salientes,no deberíabloquear si una conexión entrante se ha realizado correctamente.

Básicamente configuro reglas como esta:

--append OUTPUT --jump DROP --destination x.x.x.x

Y para permitir conexiones establecidas:

--append INPUT --in-interface eth0 --match state --state RELATED,ESTABLISHED --jump ACCEPT

Quiero que se permitan conexiones cuando esta dirección IP intente conectarse al servidor, pero cuando mi servidor intente establecer una conexión saliente, no debería poder hacerlo.

Me gustaría bloquear el acceso completo al servidor para realizar conexiones salientes x.x.x.x. Sin embargo, cuando un usuario de esa IP desea acceder al servidor, debería poder visitar sitios en ciertos puertos.

Respuesta1

Ya casi has llegado a tu objetivo con las reglas de firewall. Esto es lo que necesita para permitir el tráfico entrante desde el host 10.10.10.10y al mismo tiempo detener el tráfico saliente a esa dirección:

  1. Permitir entrada (presumiblemente a cualquier puerto)
  2. Permitir respuestas salientes a conexiones entrantes establecidas
  3. Bloquear el tráfico saliente restante

Entonces,

iptables -A INPUT --src 10.10.10.10 --jump ACCEPT

iptables -A OUTPUT --match state --state RELATED,ESTABLISHED --jump ACCEPT
iptables -A OUTPUT --dst 10.10.10.10 --jump DROP

Realmente no necesita la INPUTregla a menos que tenga reglas posteriores que lleguen DENYo REJECTsu política esté configurada de esa manera.

Respuesta2

¡Te estás equivocando! Esto es lo que entiendo:

En primer lugar, mira tu inputregla. Permitirá la entrada de state, pero ¿qué statesignifica? ¡Significa que el tráfico ha ido outdesde su servidor a esta dirección antes! Por lo tanto, esta regla nunca coincidirá si bloquea output(para esta dirección) por completo.

Es por esto que su esfuerzo completo no es posible, statesólo está disponible en formato input.

Puede que haya alguna solución hacky. Pero con las opciones dadas no es posible.

PD

Después de tu pregunta, volví a buscar un tema antiguo y adivina qué. Después de leer tu publicación nuevamente, me di cuenta de que esto es EXACTAMENTE lo que quieres. Mira aPuerto golpeando.

Agrega un componente a su solicitud, lo que la hace aún mejor; aleatoriedad.

Simplemente configure un esquema de detonación y no sólo permita outputlas conexiones, sino también sólo si se ha producido inputlo correcto .knocking

información relacionada