1 votos

Usa `pf` para permitir el tráfico TCP en un puerto específico (desde una subred específica)

Así que he leído varios posts sobre cómo usar tanto el Firewall de la Aplicación (apf o socketfilterfw) y el Filtro de Paquetes (pf) al mismo tiempo. Pensé que esto sería sencillo ya que no soy un novato en pf, pero quizás hay algo que aprender sobre pf, o si no, sobre la combinación en MacOS.

Básicamente, estoy intentando añadir una regla pf que permita el tráfico (TCP) a un puerto específico (digamos 9999), desde una subred específica (digamos 192.168.5.0/24). Eventualmente en Mac, la aplicación en cuestión será un proceso de java escuchando, de ahí mi deseo de limitar la exposición en lugar de simplemente permitir que el Firewall de la Aplicación acepte tráfico desde cualquier lugar destinado a java. En su lugar, para experimentar, estoy usando netcat (nc).

En Preferencias del Sistema, por supuesto he habilitado el firewall de la aplicación, activado ("Activar modo sigiloso"), y asegurado que pf está habilitado. Luego cargué reglas adicionales en pf, pero cuando la aplicación es bloqueada (/usr/bin/nc en este caso), parece como si mis reglas de pf nunca fueran utilizadas. Un ejemplo de la transcripción para mostrar mi estado actual:

mac $ alias apf=/usr/libexec/ApplicationFirewall/socketfilterfw
mac $ apf --getglobalstate
Firewall is enabled. (State = 1)
mac $ apf --getstealthmode
Stealth mode enabled
mac $ apf --getappblocked /usr/bin/nc
Incoming connection to /usr/bin/nc is blocked
mac $ sudo pfctl -s info |& grep ^Status
Status: Enabled for 0 days 21:52:31           Debug: Urgent
mac $ sudo pfctl -s rules
pass in quick proto tcp from any to any port = 9999 flags S/SA keep state
scrub-anchor "com.apple/*" all fragment reassemble
anchor "com.apple/*" all
mac $

En este punto parece que debería poder empezar a escuchar con nc y conectar desde otra máquina, como en:

mac $ nc -l 9999

linux $ nc -v -w 1 mac 9999
nc: connect to mac port 9999 (tcp) failed: Operation timed out

Entonces, hipótesis y preguntas:

  • apf tiene precedencia sobre pf, en cuyo caso, (Q) ¿cómo cambio o soluciono eso?
  • No puedo bloquear la aplicación en apf y permitir algunos puertos a través de pf; ver (Q) arriba.
  • Las reglas de pf no son realmente interpretadas de la misma manera en MacOS como, por ejemplo, en FreeBSD; entonces: (Q) ¿por qué no?
  • No entiendo lo suficiente y realmente soy solo un novato, por lo tanto, (Q) ¿qué es lo que no sé?

1voto

Jordanss10 Puntos 129

apf tiene prioridad sobre pf, en cuyo caso, (Q) ¿cómo puedo cambiar o solucionar eso?

No se trata de prioridad; se trata de un AND lógico — esos firewalls son independientes entre sí y estás invocando a ambos. Incluso si Pf no bloquea conexiones, has verificado específicamente que socketfilterfw no la permitirá.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X