12
votes

Bloquer l'accès à l'accès au réseau via une API de cacao (API Littlesnitch)?

J'utilise OS X 10.5 et je cherche un moyen de détecter si une application tente d'accéder à Internet. À ce stade, je voudrais bloquer la demande s'il correspond à un ensemble de règles que je définirai.

Il y a la commande ipfw Unix que je réalise peut être utilisée pour bloquer l'accès à certains ports, mais qui affecte toutes les applications. Je lis les pages de l'homme et je n'ai pas vu le moyen d'utiliser IPFW pour bloquer l'accès, mais limitez-le à une application spécifique

Mon principal problème réside dans la détection de quelle application tente de gagner en dehors de l'accès au réseau. De manière programmatique, il doit y avoir un moyen de le faire, que ce soit en utilisant certaines commandes Mac OS X ou UNIX Comment peut-on accomplir?

mise à jour: Essentiellement, je veux faire ce que le petit snappe fait, mais je veux l'écrire de zéro moi-même parce que je n'aime pas la petite sommet. J'ai juste besoin de savoir ce que l'API peut me laisser accomplir le réseau de sandbox de réseau d'application et comment le petit snotch est-il exactement?


0 commentaires

5 Réponses :


2
votes

Si vous ciblez OS X 10.5 (Leopard), vous pouvez utiliser l'APIBoxing API. Sandbox_init est probablement un bon endroit pour commencer ; Vous pouvez utiliser l'option ksbxprofilenoinignert pour arrêter l'accès à Internet.

Il existe également un article plus détaillé ICI qui donne quelques exemples de plus de contrôle à grain fin à l'aide des extensions de ceinture de sécurité.


0 commentaires

1
votes

Le pare-feu d'application dans Mac OS X 10.5 fait quelque chose de similaire, mais actuellement Apple prend uniquement en charge l'utilisation de celui-ci pour autoriser / bloquer des applications spécifiques d'accepter les connexions entrant . Ceci est fait via une extension de noyau, contrôlée via le Daemon / USR / LibExec / ApplicationfireWall / SocketFilterfw , qui est configuré à l'aide du volet Préférences de pare-feu.


0 commentaires

0
votes

Désolé, la question ne précise pas si vous souhaitez écrire votre propre programme pour résoudre ce besoin, ou si vous demandez simplement s'il y a un programme déjà là-bas pour remplir le même rôle.

Si c'est ce dernier, Little Snatch fait exactement ce que vous demandez. Il vous dira quelle application tente d'accéder à Internet externe et de vous donner les options de manière à autoriser l'accès ou à le nier en fonction d'un ensemble de règles. Ce n'est pas entièrement automatique cependant.


1 commentaires

Programmatiquement, il doit y avoir un moyen de faire cela, qu'il s'agisse d'une API ou d'une commande Mac OS X ou UNIX Comment peut-être être accompli? --- Je pensais que cela rendrait assez clair.



13
votes

Je me rends compte que cela a une année de retard, mais je creuse quelque chose de similaire et je suis tombé sur ce que je pense être la réponse. Espérons que cela pourrait aider quelqu'un d'autre au-dessus de la ligne.

Little Snappit semble utiliser Extensions de noyau réseau pour filtrer le trafic entrant dans le système. J'ai validé cela en découvrant qu'il installe une extension de noyau sur la case: xxx

Si vous souhaitez empêcher le réseau d'accès au réseau à une autre application, cela semble être votre meilleur choix . Si vous souhaitez simplement surveiller l'utilisation du réseau par d'autres applications, vous avez d'autres options, telles que libpcap .


2 commentaires

Oui un an de retard. Ceinture de sécurité n'est pas la réponse. Ceci est exactement ce que je cherchais. Ici, avoir une tique et un +1


Est-il possible d'écrire l'extension du noyau dans une langue autre que l'objectif-c ou Swift, dire, c ++ ou rouille?



1
votes

Il n'y a aucun moyen d'un processus d'espace utilisateur est capable de faire ce que vous décrivez. Je suppose que même les processus ne fonctionnent même pas en tant que root. N'oubliez pas: nous n'exécutons pas Windows ici. Et même si oui, vous ne devriez probablement pas vous attendre à ce que le cacao l'aide. Le cacao est destiné à la substance gui-facile à utiliser de Mac OS X. Pas pour le développement de systèmes de bas niveau.

Le seul moyen d'accomplir ce que vous décrivez, c'est d'étendre le noyau, ce qui est ce que le petit snappe fait. S'il y avait une autre manière intelligente, je vous assure que Little Snatch l'aurait fait différemment. Les extensions des noyaux ne sont pas fausses pour devenir grossière. Lorsqu'un crash d'extension du noyau, tout le système Crashes . Donc, vous feriez mieux de savoir ce que vous faites.

Vous pouvez, cependant, d'obtenir des informations sur des processus et de leurs prises d'espace utilisateur, mais n'utilisez pas de cacao. Et seuls les propres processus de l'utilisateur, si votre application ne fonctionne pas en tant que root. Vous devez utiliser LibProc, qui n'est pas documenté par Apple. Vous devrez déterminer comment lsof le fait-il. Et votre toujours pas capable d'altérer ce que vous obtenez.

Je suppose que vous vaut mieux utiliser peu de petit snappe. Les frais généraux ajoutés par Little Snatch sont marginalement petits et je vous promets que vous ne ressentirez pas la différence. Il suffit simplement de retenir la connexion à la prise, jusqu'à ce qu'une décision soit prise - par vous ou le logiciel.

Si, cependant, vous devriez toujours vous sentir tenté d'écrire vos propres extensions de noyau, Le Guide de programmation de l'extension du noyau réseau d'Apple est ce dont vous avez besoin. La section sur "Filtres à socket" décrit les interfaces Little Snatch utilise.


0 commentaires