¿Cuál es la regla de iptables para bloquear todo el tráfico de https excepto a una sola IP?

0

Estoy intentando configurar un microservicio para mi aplicación web, que está alojado en la dirección ip X.X.X.X . El microservicio solo debe aceptar conexiones https desde esta aplicación web.

He probado que el microservicio funciona desde el servidor web con las reglas liberales de "permitir todo" de las tablas ip, pero mis reglas a continuación (específicamente, las últimas 2) no me dejan pasar.

Aquí está la cabecera de mis reglas iptables en este momento:

#allow current ssh connection so we don't disconnect ourselves
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
#allow ssh traffic
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 22 -j ACCEPT
#allow ssh web traffic only from nominated webserver
iptables -A INPUT -p tcp -s X.X.X.X/32 --dport 443 -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -d X.X.X.X/32 --sport 443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

He comprobado que X.X.X.X ip es correcto, y el proxy de la aplicación web tiene la misma IP (es nginx en el mismo servidor). ¿Qué estoy jodiendo?

Editar: salida de iptables -L :

target     prot opt source               destination         
ACCEPT     tcp  --  X-X-X-X.rev.cloud.scaleway.com  anywhere             tcp dpt:https state ESTABLISHED

¿Esto significa que de alguna manera mi IP "fuente" no es realmente la fuente de la solicitud que creo que estoy enviando? (¿Y es el proveedor de VPS de canalización?)

    
pregunta Escher 15.01.2018 - 08:49
fuente

1 respuesta

2

Si solo desea una única IP, entonces debería hacerlo de la manera más retentiva posible:

# iptables -P INPUT DROP
# iptables -P FORWARD DROP
# iptables -P INPUT DROP
# iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED --jump ACCEPT
# iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED --jump ACCEPT
# iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED --jump ACCEPT
# iptables -A INPUT -m conntrack --ctstate INVALID --jump DROP
# iptables -A FORWARD -m conntrack --ctstate INVALID --jump DROP
# iptables -A OUTPUT  -m conntrack --ctstate INVALID --jump DROP

# iptables -A INPUT --in-interface lo --jump ACCEPT
# iptables -A OUTPUT --in-interface lo --jump ACCEPT
# iptables -A INPUT -p tcp -m tcp --source  X.X.X.X/32 --dport 443 -j ACCEPT
# iptables -A INPUT-p tcp -m tcp --source  X.X.X.X/32 --dport 22 -j ACCEPT
# debugging rules to help you set up.
# iptables -A INPUT -j LOG
# iptables -A FORWARD -j LOG 
# iptables -A OUTPUT -j LOG  

y si no te importa ipv6, solo deja eso a un lado.

Básicamente, todo lo que se acepte como entrada se rastreará y la salida se permitirá a medida que se repita.

Si necesita DNS, entonces esto es extra, pero si puede iniciar sesión en los registros debería ayudarlo a ver lo que falta.

    
respondido por el user168387 15.01.2018 - 08:57
fuente

Lea otras preguntas en las etiquetas