Pregunta

Estoy usando OS X 10.5 y estoy buscando una manera de detectar si una aplicación intenta acceder a Internet. En este punto me gustaría bloquear la aplicación si coincide con un conjunto de reglas que definiré.

No es la ipfw de comandos de Unix que cuenta puede ser usado para bloquear el acceso a determinados puertos, sino que afecta a todas las aplicaciones. He leído las páginas del manual y no vi una manera de utilizar ipfw bloquear el acceso pero limitarlo a un específica aplicación.

Mi problema principal radica en detectar qué aplicación que está tratando de obtener el acceso externo a la red. Programación tiene que haber una manera de hacer esto, si es que mediante el uso de algunos API Mac OS X o de comandos de Unix cómo se puede lograr esto?

Actualización: Esencialmente Quiero hacer lo que hace Little Snitch, pero yo quiero escribir desde cero a mí mismo porque no me gusta Little Snitch. Sólo necesito saber qué API puede que me haga cumplir la caja de arena de red de aplicaciones y ¿cómo funciona exactamente Little Snitch hacer esto?

¿Fue útil?

Solución

Me di cuenta que es un año de retraso, pero yo estaba cavando algo similar y me encontré con lo que creo que es la respuesta. Espero que esto podría ayudar a alguien más abajo de la línea.

Little Snitch parece utilizar extensiones del núcleo de red para filtrar el tráfico que entra en el sistema. He validado este mediante el descubrimiento de que se instale una extensión del kernel en la caja:

[~] kextstat
...
55 0 0x687000 0x2b000 0x2a000 at.obdev.nke.LittleSnitch (2.0.46) <7 6 5 4 2>
...

Si desea mediante programación para impedir el acceso a la red a otra aplicación, ésta parece ser la mejor opción. Si simplemente desea supervisar el uso de la red por otras aplicaciones, sin embargo, tiene otras opciones, como libpcap.

Otros consejos

Si el idioma de OS X 10.5 (Leopard), puede utilizar la API de caja de arena. sandbox_init es probablemente un buen lugar para empezar ; puede utilizar la opción kSBXProfileNoInternet para detener el acceso a Internet.

Hay también un artículo más detallado aquí que da algunos ejemplos de control más preciso mediante el Cinturón de seguridad extensiones.

El firewall de aplicación en Mac OS X 10.5 hace algo similar, pero Apple actualmente sólo admite utilizando para permitir / bloque aplicaciones específicas de aceptar entrantes conexiones. Esto se realiza a través de una extensión kernel, que se controla a través de la /usr/libexec/ApplicationFirewall/socketfilterfw daemon, que a su vez se configura utilizando el panel de Preferencias Firewall.

No hay manera de un proceso de espacio de usuario es capaz de hacer lo que usted describe. Supongo que no los procesos que se ejecutan incluso como root. Recuerde: No estamos aquí con Windows. E incluso si es así, usted probablemente no debería esperar cacao para apoyarlo. El cacao es para la materia de interfaz gráfica de usuario fácil de uso de Mac OS X. No para el desarrollo del sistema de bajo nivel.

La única manera de lograr lo que usted describe, es extender el kernel, que es lo que Little Snitch. Si había alguna otra forma inteligente, les aseguro que Little Snitch habría hecho de otra manera. las extensiones del núcleo no son para débiles de corazón. Cuando un accidente de extensión del kernel, todo el sistema accidentes . Así que mejor sabe lo que hace.

Usted es capaz, sin embargo, para obtener información sobre los procesos y sus basas de espacio de usuario, pero no el uso de cacao. Y los propios procesos de usuario única, si la aplicación no se está ejecutando como root. Es necesario utilizar libproc, que no está documentado por Apple. Vas a tener que encontrar la manera rel="nofollow" lsof lo hace. Y tu todavía no es capaz de manipular con lo que se obtiene.

Creo que el mejor de usar sólo Little Snitch. La sobrecarga añadida por Little Snitch es marginalmente pequeña y le prometo, que no se siente la diferencia. Simplemente se detenga la conexión de socket, hasta que una decisión ha sido tomada -. Por usted o el software

Si, sin embargo, aún debe sentir la tentación de escribir sus propias extensiones del núcleo, La Guía de programación de la Red Núcleo de Extensión de Apple es lo que necesita. La sección "Filtros" Socket describe las interfaces utiliza Little Snitch.

En este momento, la cuestión no dejan claro si se desea escribir su propio programa para resolver esta necesidad, o si simplemente está preguntando si hay algún programa ya está ahí para llenar el mismo papel.

Si es esto último, entonces Little Snitch hace exactamente lo que se le pregunte. Se le dirá qué aplicación está intentando tener acceso a internet fuera, y le dará las opciones de si se debe permitir el acceso o negar que en base a un conjunto de reglas. No es totalmente automático sin embargo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top