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:
-
apftiene prioridad sobrepf, en cuyo caso, (P) ¿cómo puedo cambiar o solucionarlo? - No puedo bloquear la aplicación en
apfy permitir algunos puertos a través depf; ver (Q) arriba. -
Las reglas de
pfno 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é?