Estoy intentando configurar algunas reglas de firewall personalizadas en el firewall pf
en macOS (10.11 en este caso). Estas son reglas tradicionales basadas en la red, no reglas específicas de la aplicación. Tengo algunos problemas:
La sintaxis parece bastante simple. Pero mis reglas no funcionan correctamente.
table <VPN> { 192.16.10.1/24 } persist
table <badhosts> persist
block in quick from <badhosts> to any
block in
pass in quick from <VPN> to any flags S/SA keep state
pass in quick proto tcp from any to any port { 25 80 443 587 993 } flags S/SA keep state
pass in quick proto { esp icmp ah } from any to any keep state
pass in quick proto udp from any to any port { 500 1701 4500 } keep state
La idea aquí es que:
-
<VPN>
cubre las conexiones entrantes desde mi VPN, se permitirá todo el tráfico VPN. -
<badhosts>
es mi propia lista agregada manualmente de IP que quiero bloquear. - Las últimas tres reglas deben permitir que el tráfico público se conecte a mi servidor web, al servidor de correo y a que haga conexiones a la VPN
Inicialmente estaba teniendo problemas más grandes, pero he hurgado, he avanzado un poco más y editado este post.
Estaba apareciendo un error de sintaxis en la línea block in quick from <badhosts> to any
cuando estaba en la parte inferior. Lo moví por encima de todas las declaraciones pass
, le di una palabra clave quick
y no más errores de sintaxis. Pero, ¿por qué eso causaba un error de sintaxis simplemente por estar debajo? Parece que debería haber funcionado bien allí.
Más importante aún, esta configuración parece bloquear todo el tráfico y parece permitir que el tráfico público acceda a la web y al servidor de correo. Pero, de repente, una cosa que no puedo hacer es conectarme a la VPN (es decir, en otra máquina, no puedo conectarme a esta máquina que ejecuta el servidor VPN, porque el firewall me detiene).
Espero que este sea el único problema, y que una vez que pueda conectarme a la VPN, la regla con respecto al tráfico de VPN funcionará como se esperaba.
La VPN es de tipo L2TP sobre IPSec. Debo faltar alguna bandera o protocolo extraño usado para la VPN pero no sé qué es.