Cortafuegos Murus - redirige una ip al servidor web localhost

1

Editado para simplificar la pregunta:

usando el archivo host, podemos redirigir un dominio (example.com) a localhost:

127.0.0.1 example.com

¿Cómo podemos redirigir una ip (por ejemplo, 35.166.133.11) a localhost (puerto de servidor web 80) usando las reglas pf personalizadas del firewall Murus?

Acción:bloquear,pasar,rdr,rdrpasar,dummynet,nodummynet
Dirección:entrar,salir
Protocolo:todos,tcp,udp,icmp,igmp,gre,esp
Interfaz:todos,gif0,stf0,en0,p2p0,utun0

    
pregunta Basem 02.01.2017 - 16:03

1 respuesta

0

En mi humilde opinión, el entorno de su servidor web es defectuoso porque simplemente puede reemplazar 35.166.133.11 por 192.168.1.2 en las fuentes en lugar de enrutar paquetes de 192.168.1.2 a lo0 (35.166.133.11 mantener el estado) y luego redirigirlos desde lo0 a fuente en0 (192.168.1.2) de nuevo.

Pero en otras configuraciones puede ser útil. P.ej. si ejecuta un segundo servidor web que imita la página de prueba AMI de Amazon Linux en localhost o 192.168.1.3/4/5.

rdr solo acepta paquetes entrantes. Por lo tanto, primero debe enrutar esos paquetes a lo0, luego agregar una regla rdr allí (que los detectará ya que serán enrutados desde "algún lugar") para enviarlos a su servidor web local al 192.168.1.2.

El orden en el archivo de configuración es necesariamente rdr incomming paquets , luego filter packets (como pasa), pero cronológicamente, la 2ª regla llegará primero (en en0), que luego activará la primera regla (en lo0).

# Step "2". redirect those same packets that were routed to lo0 below
rdr pass log on lo0 proto tcp from en0 to 35.166.133.11 port 80 -> 192.168.1.2 port 80
# Step "1". Route new IPv4 TCP connections leaving en0 to lo0
pass out on en0 route-to lo0 proto tcp from en0 to 35.166.133.11 port 80 keep state

en pf.conf esto se vería así:

...
scrub-anchor "com.apple/*"
nat-anchor "com.apple/*"
rdr-anchor "com.apple/*"
rdr pass log on lo0 proto tcp from en0 to 35.166.133.11 port 80 -> 192.168.1.2 port 80
dummynet-anchor "com.apple/*"
anchor "com.apple/*"
load anchor "com.apple" from "/etc/pf.anchors/com.apple"
pass out on en0 route-to lo0 proto tcp from en0 to 35.166.133.11 port 80 keep state

En el ejemplo anterior, tendría que cambiar la interfaz en0 a, por ejemplo. en1 si en0 no tiene la IP 192.168.1.2 pero en1 sí .

Descargue su pf.conf actual y detenga pf: sudo pfctl -d . Luego agrega las dos líneas adicionales arriba. Después de modificar pf.conf, compruebe la sintaxis del archivo con sudo pfctl -vnf /etc/pf.conf , lo que debería generar el siguiente resultado:

pfctl: Use of -f option, could result in flushing of rules
present in the main ruleset added by the system at startup.
See /etc/pf.conf for further details.

scrub-anchor "/*" all fragment reassemble
nat-anchor "/*" all
rdr-anchor "/*" all
rdr pass log on lo0 inet proto tcp from 192.168.1.2 to 35.166.133.11 port = 80 -> 192.168.1.2 port 80
anchor "/*" all
pass out on en0 route-to lo0 inet proto tcp from 192.168.1.2 to 35.166.133.11 port = 80 flags S/SA keep state
dummynet-anchor "/*" all

y si tiene éxito, cárguelo con sudo pfctl -e -f /etc/pf.conf .

Después de apagar el servidor web en el puerto 80, puede probar esto con netcat:

En una ventana de terminal, ingrese sudo nc -l 80 . En una segunda ventana de terminal ingrese sudo nc 35.166.133.11 80 . Ahora ingrese un poco de texto en la segunda sesión de nc y presione la tecla enter. El texto debe aparecer en la primera sesión de "escucha" nc. También puede ingresar texto en la sesión de escucha que debería aparecer en la segunda ventana. Para finalizar la sesión, ingrese ctrl D en cualquiera de las dos sesiones de nc.

    
respondido por el klanomath 02.01.2017 - 18:09

Lea otras preguntas en las etiquetas