Por lo tanto, he leído varias publicaciones sobre cómo usar el Firewall de la aplicación ( apf
o socketfilterfw
) y el Filtro de paquetes ( pf
) al mismo tiempo. Pensé que esto sería directo ya que no soy un novato de pf
, pero quizás hay algo que aprender sobre pf
, o si no, sobre la combinación bajo MacOS.
Básicamente, estoy tratando de agregar una regla pf
que permite el tráfico (TCP) a un puerto específico (por ejemplo, 9999
), desde una subred específica (por ejemplo, 192.168.5.0/24
). Finalmente, en la Mac, la aplicación en cuestión será un proceso de escucha java
, por lo tanto, mi deseo de limitar la exposición solo permite que el Firewall de la aplicación acepte tráfico desde cualquier lugar destinado a java
. En su lugar, para la experimentación, estoy usando netcat ( nc
).
Por supuesto, en Preferencias del sistema, habilité el firewall de la aplicación, lo activé ("Habilitar el modo oculto") y me aseguré de que pf
esté habilitado. Luego cargué reglas adicionales en pf
, pero cuando la aplicación está bloqueada ( /usr/bin/nc
en este caso), parece que mis reglas pf nunca se usan. Una transcripción de muestra 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 comenzar a escuchar nc
y conectarme 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
Por lo tanto, hipótesis y preguntas:
-
apf
tiene prioridad sobrepf
, en cuyo caso, (P) ¿cómo puedo cambiar o solucionarlo? - No puedo bloquear la aplicación en
apf
y permitir algunos puertos a través depf
; ver (Q) arriba. -
Las reglas de
pf
no se interpretan realmente de la misma manera en MacOS que, por ejemplo, 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é?