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, beanstalkd
entre 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 pull
no puedo encontrar el servidor, hacer ping a google no funciona y mailgun no enviará. La ejecución iptables -F
corrige 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?
-S
, no-L
, ya que el formato "amigable" omite mucha información.Respuestas:
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:
(Es posible que la documentación anterior tenga
-m state
; esto está en desuso).Y por supuesto,
porque por qué bloquearías eso
fuente