iptables en debian bloqueando git pull, solicitudes de API http, etc.

0

Estoy usando IPTables en un servidor API para bloquear todo el tráfico entrante, excepto SSH, HTTP y HTTPS. Necesito tener acceso completo a la interfaz de bucle invertido para ejecutar, beanstalkdentre otras cosas, y necesito acceso saliente http, https y SSH para llamadas API a otros servicios, así como extraer de github.

Creé las reglas de la siguiente manera:

iptables -F

iptables -A INPUT -i lo -j ACCEPT

iptables -A INPUT -p tcp --dport ssh -j ACCEPT
iptables -A INPUT -p tcp --dport http -j ACCEPT
iptables -A INPUT -p tcp --dport https -j ACCEPT
iptables -A INPUT -j DROP

iptables -L salidas:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https
DROP       all  --  anywhere             anywhere            

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

A pesar de esto, git pullno puedo encontrar el servidor, hacer ping a google no funciona y mailgun no enviará. La ejecución iptables -Fcorrige estos problemas, y no puedo permitirme tener un firewall que simplemente evite que mi aplicación funcione por completo ...

¿Cómo puedo lograr lo que intento hacer arriba?

GTF
fuente
1
En general, publicar las reglas de iptables usando -S, no -L, ya que el formato "amigable" omite mucha información.
Grawity

Respuestas:

2

Esto es bastante obvio cuando lo piensas:

  • Hacer ping a Google no funciona porque no tiene una regla que permita las respuestas entrantes de ICMP.

  • Las cosas no pueden "encontrar el servidor" porque no tienes una regla que permita las respuestas de DNS.

  • Mailgun no puede hablar SMTP porque no tiene una regla que permita los paquetes SMTP: el TCP SYN se apaga, pero el SYN / ACK correspondiente se descarta.

La solución general aquí es usar el seguimiento de conexión de netfilter, también conocido como "conntrack", para crear una regla que permita todos los paquetes que corresponden a conexiones activas:

-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

(Es posible que la documentación anterior tenga -m state; esto está en desuso).


Y por supuesto,

-A INPUT -4 -p icmp -j ACCEPT
-A INPUT -6 -p icmp6 -j ACCEPT

porque por qué bloquearías eso

Gravedad
fuente
vencerme
(y solo como nota al margen: estoy usando Mailgun a través de llamadas API, no SMTP)
GTF