¿La regla de iptables permite todo el tráfico saliente de origen local?


11

Me preguntaba si alguien podría ayudarme con la siguiente regla de iptables:

Nos gustaría permitir CUALQUIERA y TODO el tráfico de origen local (como en el servidor que ejecuta iptables).

DNS, HTTP, etc ... todo. Se debe permitir cualquier conexión iniciada por el servidor que ejecuta iptables.

Actualmente estamos utilizando básicamente la política predeterminada de SALIDA, ACEPTAR. ¿Es esto correcto? Las entradas están bloqueadas, por lo que supongo que esto significa que las conexiones (excepto las que permitimos) no se pueden iniciar porque se interrumpirán antes de que nuestro lado pueda cumplir con la política de SALIDA.

Lo siento, mis habilidades de iptables son débiles;)

Gracias por su amabilidad.

Respuestas:


26

Necesitas dos reglas para hacer eso:

iptables -I OUTPUT -o eth0 -d 0.0.0.0/0 -j ACCEPT
iptables -I INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

Algunas notas.

  • Las reglas preexistentes que puede tener ya pueden hacerlo, pero se ven diferentes.
  • Esto suele -Iobligar a estas reglas a ser las primeras. iptableslas reglas se evalúan de arriba abajo.
  • Las banderas -oy -isignifican "fuera" y "dentro" respectivamente. Reemplace eth0con el nombre de interfaz de ethernet adecuado.

tenemos ambos :) no pude mencionar el segundo porque como dije ... mis habilidades de iptables son salsa débil. gracias por la aclaración :)
anónimo-uno

2
-d 0.0.0.0/0Es redundante y no es necesario.
zapstar

Gran respuesta. Pero ahora puedo hacer ping al servidor, y no entiendo por qué. ¿Puedes explicar?
Daniel

@Daniel Porque si solo permite el tráfico saliente, el filtro de paquetes descartará la respuesta de ping cuando llegue a su host. Para evitar esto, también debe permitir el tráfico entrante asociado con la misma sesión o relacionado con el tráfico saliente. En otras palabras, debido a que la respuesta de ping está relacionada con la solicitud de ping, debe permitirse. Si hay una solicitud de ping entrante y no se registra ningún ping saliente en la tabla de sesión, el paquete entrante se descartará. Espero que tenga sentido!
bahamat

@bahamat: después de intentarlo de nuevo, descubrí que necesitaba permitir el tráfico icmp explícitamente. Y estaba hablando de poder hacer ping al servidor, donde implementé las reglas anteriores. No puedo reproducirlo por cierto, tal vez cometí un error en alguna parte. Gracias de cualquier manera.
Daniel

0

Actualmente estamos utilizando básicamente la política predeterminada de SALIDA, ACEPTAR.

Eso es suficiente para OUTPUT porque Netfilter no necesita reglas especiales para iniciar el seguimiento de conexiones con estado.

Pero si desea filtrar el tráfico entrante de acuerdo con la política de " denegación predeterminada ", puede hacerlo cambiando la INPUTcadena a DROP:iptables -P INPUT DROP

Después, todo se establecería con solo 2 reglas :

iptables -A INPUT -j ACCEPT -i lo
iptables -A INPUT -j ACCEPT -m state --state RELATED,ESTABLISHED

Preste atención a la regla que permite el tráfico de entrada en la interfaz de bucle invertido : como señalé en mi blog que publica " Cortafuegos mínimo para el usuario final ", a menos que se permita explícitamente, el tráfico de bucle invertido no será manejado por la verificación de estado "establecido", en comparación con el retorno tráfico a través de, por ejemplo, eth0.

Para garantizar que este conjunto de reglas mínimo se cargue " tal cual " sin interferir con las reglas que ya podrían estar allí, es conveniente utilizarlo iptables-restoreen SHELL-session:

lptables-restore <<__EOF__
-P INPUT DROP
-A INPUT -j ACCEPT -i lo
-A INPUT -j ACCEPT -m state --state RELATED,ESTABLISHED
__EOF__

Antes de hacerlo, asegúrese de no cortar su propia conexión de red 1 , aunque las sesiones SSH ya abiertas deberían continuar funcionando normalmente, los intentos de abrir otras nuevas no funcionarán.

__

  1. Por supuesto, puede agregar otras reglas para permitir tales conexiones. Puede ser tan simple como simplemente -A INPUT -j ACCEPT -p tcp --dport 22, no hay necesidad de jugar -m stateaquí. Tampoco olvides lptables-restorevolver a arreglarlo iptables-restoreantes de probarlo;)
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.