Pergunta

Eu estou usando OS X 10.5 e eu estou procurando uma maneira de detectar se um aplicativo tentar acessar a Internet. Neste ponto eu gostaria de bloquear o aplicativo se ele corresponde a um conjunto de regras que vou definir.

Há o ipfw comando Unix que eu percebo pode ser usado para bloquear o acesso a determinadas portas, mas que afeta todas as aplicações. Eu li as páginas man e não vi uma maneira de usar ipfw para bloquear o acesso, mas limitá-lo a um específica aplicação.

As minhas principais mentiras de problema em detectar qual aplicativo que está tentando ganhar acesso externo à rede. Programaticamente, deve haver uma maneira de fazer isso, se é que usando algum API Mac OS X ou comando Unix como isso pode ser feito?

Update: Basicamente eu quero fazer o que Little Snitch faz, mas eu quero escrever a partir do zero mim, porque eu não gosto de Little Snitch. Eu só preciso saber o que está API pode me deixar realizar a rede de aplicação de modo seguro e como exatamente Little Snitch fazer isso?

Foi útil?

Solução

Sei que este é um ano de atraso, mas eu estava cavando para algo semelhante e me deparei com o que eu penso é a resposta. Esperemos que isso pode ajudar alguém para baixo da linha.

Little Snitch parece usar rede do kernel Extensões para tráfego filtro entrando no sistema. Já validado esta descobrindo que instala uma extensão de kernel na caixa:

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

Se desejar programaticamente para impedir o acesso de rede para outra aplicação, esta parece ser sua melhor aposta. Se você simplesmente deseja monitorar o uso da rede por outros aplicativos, no entanto, você tem outras opções, como libpcap.

Outras dicas

Se você está direcionando OS X 10.5 (Leopard), você pode usar a API sandboxing. sandbox_init é provavelmente um bom lugar para começar ; você pode usar a opção kSBXProfileNoInternet parar de acesso à Internet.

Há também um artigo mais detalhado aqui que dá alguns exemplos de mais controle de grão fino usando o Cinto de segurança extensões.

O Firewall de aplicativos no Mac OS X 10.5 faz algo semelhante, mas atualmente a Apple suporta apenas usá-lo para permitir que aplicações específicas / bloco de aceitar de entrada conexões. Isto é feito através de uma extensão do kernel, que é controlada através do /usr/libexec/ApplicationFirewall/socketfilterfw daemon, que por sua vez é configurado utilizando o painel de Preferências do Firewall.

Não há nenhuma maneira um processo de espaço do usuário é capaz de fazer o que você descreve. Suponho que não, mesmo processos em execução como root. Lembre-se: Nós não estamos executando o Windows aqui. E mesmo assim, você provavelmente não deve esperar Cacau para apoiá-lo. O cacau é para o material GUI-easy-to-use do Mac OS X. Não para o desenvolvimento do sistema de baixo nível.

A única maneira de conseguir o que você descreve, é estender o kernel, que é o que Little Snitch faz. Se houvesse alguma outra maneira inteligente, eu lhe asseguro Little Snitch teria feito diferente. As extensões do kernel não são para fracos de coração. Quando um acidente de extensão kernel, o sistema inteiro acidentes . Então é melhor você saber o que você faz.

Você pode, no entanto, para obter informações sobre os processos e as suas bases de espaço do usuário, mas não usando cacau. E processos próprios única do usuário, se a sua aplicação não está em execução como root. Você precisa usar libproc, que não está documentada pela Apple. Você vai ter que descobrir como lsof faz. E a sua ainda não é capaz de mexer com o que você ganha.

Eu acho que o melhor de usar apenas Little Snitch. A sobrecarga adicionado por Little Snitch é ligeiramente pequeno e eu prometo a você, você não vai sentir a diferença. Limitou-se a segurar a conexão de soquete, até que uma decisão foi feita -. Por você ou o software

Se, no entanto, você ainda deve se sentir tentado a escrever suas próprias extensões de kernel, A Rede Kernel Extensão Guia de Programação da Apple é o que você precisa. A seção sobre "socket Filtros" descreve as interfaces usos Little Snitch.

Infelizmente, a questão não deixam claro se você quer escrever o seu próprio programa para resolver esta necessidade, ou se você está simplesmente perguntando se houver qualquer programa já lá fora, para preencher o mesmo papel.

Se é o último, então Little Snitch é exatamente o que você pedir. Ele lhe dirá qual aplicativo está tentando acessar a internet fora, e dar-lhe as opções de se permitir que o acesso ou a negá-lo com base em um regras estabelecidas. Não é no entanto totalmente automático.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top