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 sobrepf
, 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 depf
; 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é?