2 pontos por GN⁺ 20 일 전 | 1 comentários | Compartilhar no WhatsApp
  • Ferramenta para visualizar e controlar as conexões de rede de aplicações, permitindo ver qual programa se comunica com qual servidor
  • Em Connections View, exibe o tráfego em tempo real e histórico por aplicativo, com suporte a bloquear conexões e rastrear o uso de dados com um clique
  • Com os recursos de Blocklists e Rules, é possível controlar com precisão o tráfego indesejado por categoria ou por condições detalhadas
  • Internamente, usa eBPF para monitorar conexões no nível do kernel e oferece uma interface em formato PWA por meio de uma UI web
  • Não é uma ferramenta de segurança, e sim focada em privacidade; é adequada para bloquear comunicações externas de softwares comuns, mas tem limitações para defesa contra ataques avançados

Visão geral

  • Little Snitch for Linux é uma ferramenta para visualizar e controlar em tempo real as conexões de rede de aplicações
    • Permite ver qual aplicação se comunica com qual servidor
    • Oferece recursos para bloquear conexões indesejadas, registrar tráfego e rastrear uso de dados
  • Requer Linux kernel 6.12 ou superior e suporte a kernel BTF
  • A UI web pode ser acessada em http://localhost:3031/ e pode ser instalada no formato PWA (Progressive Web App)

Monitoramento de conexões

  • Em Connections View, a atividade de rede atual e passada é exibida por aplicação
    • Mostra itens bloqueados por regras e blocklists, uso de dados e histórico de tráfego
    • Permite ordenar e filtrar por atividade recente, volume de dados e nome
    • É possível bloquear uma conexão com um único clique
  • O diagrama de tráfego na parte inferior visualiza o volume de dados ao longo do tempo
    • Ao arrastar para ampliar uma faixa específica, apenas a atividade daquele período é exibida com filtro

Gerenciamento de listas de bloqueio

  • O recurso Blocklists permite bloquear em lote categorias de tráfego indesejado
    • Faz download automático de fontes remotas e as mantém atualizadas
    • Formatos suportados: uma linha por domínio, uma linha por hostname, formato /etc/hosts (IP + hostname), faixa de rede CIDR
    • Wildcards, expressões regulares, glob e formatos baseados em URL não são compatíveis

      • Por eficiência, recomenda-se usar listas baseadas em domínio
      • Exemplos de listas: Hagezi, Peter Lowe, Steven Black, oisd.nl
      • O formato .lsrules do macOS não é compatível com a versão para Linux

Regras personalizadas

  • O recurso Rules oferece controle mais granular do que blocklists
    • Pode ser configurado por processo específico, porta e protocolo
    • A lista de regras pode ser ordenada e filtrada
  • As regras permitem compor políticas detalhadas de controle de rede

Segurança de acesso

  • Por padrão, a interface web pode ser acessada por todos os processos em execução localmente
    • Existe a possibilidade de um aplicativo malicioso alterar regras, modificar blocklists e desativar filtros
  • Para evitar isso, é possível exigir autenticação
    • A configuração detalhada é feita em configuração avançada (Advanced configuration)

Estrutura interna

  • Usa eBPF para fazer hook na stack de rede do Linux
    • O programa eBPF monitora conexões de saída e entrega os dados ao daemon
    • O daemon é responsável por rastrear estatísticas, processar regras e fornecer a UI web
  • O código-fonte do programa eBPF e da UI web está disponível publicamente no GitHub

Configuração avançada

  • A UI padrão expõe apenas as configurações principais, e as opções avançadas são configuradas por arquivo de texto
    • Após alterações, é necessário reiniciar o daemon littlesnitch
  • Caminho de configuração padrão: /var/lib/littlesnitch/config/
    • Não edite diretamente; copie o arquivo a ser modificado para /var/lib/littlesnitch/overrides/config/ e então faça a edição
    • As configurações no diretório override sempre têm prioridade
  • Principais arquivos de configuração
    • web_ui.toml: configurações de endereço de rede, porta, TLS e autenticação
      • Se vários usuários puderem acessar, é necessário ativar autenticação
      • Se for exposto além do loopback, também é necessário adicionar TLS
    • main.toml: define o comportamento padrão para conexões que não correspondem a regras
      • O padrão é permitir, mas pode ser alterado para negar se necessário
      • Uma configuração incorreta pode causar risco de perda de acesso ao sistema
    • executables.toml: regras de agrupamento de executáveis
      • Remove números de versão para exibir várias versões do mesmo app como um só
      • Define relações de parentalidade de shells e processos gerenciadores de apps
      • É continuamente aprimorado com feedback da comunidade
  • O programa eBPF e a UI web podem ser substituídos por versões compiladas pelo usuário
    • A versão no diretório override sempre tem prioridade

Limitações

  • Foi projetado como uma ferramenta de privacidade, não de segurança
    • É mais simples que a versão para macOS e possui limitações funcionais devido às restrições do eBPF
  • O eBPF tem limitações de espaço de armazenamento e complexidade do programa, então
    • Em caso de tráfego intenso, a tabela de cache pode estourar, tornando incompleto o mapeamento entre pacotes, processos e nomes DNS
    • Usa heurísticas ao restaurar, a partir de endereços IP, o hostname originalmente consultado
    • A versão para macOS realiza um mapeamento mais preciso com inspeção profunda de pacotes (DPI)
  • É adequado para monitorar e bloquear comunicações externas de softwares comuns, mas não é apropriado para defender o sistema contra atacantes avançados

Licença

  • É composto por 3 componentes
    • O programa de kernel eBPF e a UI web são disponibilizados sob GNU GPL v2 e podem ser obtidos no GitHub
    • O daemon (littlesnitch --daemon) é proprietário (proprietary), mas pode ser usado e redistribuído gratuitamente

1 comentários

 
GN⁺ 20 일 전
Comentários do Hacker News
  • Eu não uso Little Snitch nem Open Snitch, mas fiquei curioso se eles também conseguem bloquear requisições que abusam de programas permitidos
    Por exemplo, se suspicious.py chamar o Firefox para enviar dados, queria saber se o firewall conseguiria impedir isso

    • O Little Snitch for Linux avalia as regras considerando juntos os namespaces do processo e do processo pai
      Se o script for executado com #!/bin/interpreter, a regra é aplicada ao caminho do script, mas se for executado no formato interpreter script, o comportamento é diferente
    • Com regras simples, isso não é bloqueado
      No Open Snitch, é possível fazer correspondências detalhadas com base em critérios como a presença de um processo python na árvore de processos
    • Se considerar carregamento de bibliotecas ou manipulação de memória entre processos (ex.: OpenProcess, WriteProcessMemory, CreateRemoteThread), a coisa fica muito mais complexa
      Firewalls antigos do Windows, como Outpost e Zone Alarm, ofereciam um recurso de Leak Control para detectar esse tipo de comportamento
    • Usando as políticas MAC do SELinux, dá para limitar os arquivos e portas aos quais cada processo pode acessar
      A maioria das distribuições inclui esse recurso, mas usuários comuns raramente aprendem ou configuram essas regras
  • Testei no Fedora 43, ele ocupou todos os núcleos da CPU e falhou deixando um log de 50 mil linhas
    O erro exibido foi BPF_PROG_LOAD syscall returned Argument list too long

    • O desenvolvedor afirmou que não testou no Fedora
      Em uma VM ARM64 ele carrega, mas não consegue identificar os processos
      Disseram que estão investigando problemas de compatibilidade com eBPF e que, como os recursos são limitados, isso vai levar tempo
    • Já existe uma issue no GitHub
    • Segundo a página oficial de download, ele não funciona com o sistema de arquivos Btrfs
      Como o sistema de arquivos padrão do Fedora é Btrfs, a identificação de processos fica impossível, e a correção está prevista para a versão 1.0.1
    • Tive o mesmo problema. Ele usa só metade da CPU, mas a interface web não funciona
    • Isso sim é uma experiência Linux comum. Falar que 2026 será o ano do desktop Linux soa como piada
  • Como usuário de Linux, valorizo a abertura do código
    Estou bem satisfeito com a combinação OpenSnitch + OpenSnitch-UI

  • Fiquei curioso sobre o quão viável é o modelo de ferramenta paga no Linux
    A maioria segue o modelo gratuito, baseado em doações ou open core
    Queria saber se o motivo de o Little Snitch ter lançado a versão para Linux gratuitamente foi a percepção de que “não dá para ganhar dinheiro com Linux” ou se houve outra razão

    • A comunidade Linux tem uma forte desconfiança de software fechado
      Eu também fico desconfortável com programas fechados que lidam com tráfego de rede
      Em vez disso, doo milhares de dólares por ano para projetos FOSS
      Mas usuários assim são minoria, então é difícil gerar receita com software totalmente open source
    • Como o OpenSnitch já existe e é gratuito, uma alternativa paga perde força
      Principalmente no caso de código com alto nível de privilégio, como um firewall, é difícil confiar se não for open source
    • O desenvolvedor do Little Snitch for Linux disse que “somos uma pequena equipe independente, não investidores, e essa decisão foi uma escolha pessoal”
      Também comentou que está curioso para ver no que isso vai dar
    • A motivação do desenvolvedor está bem explicada no post oficial do blog
  • Post de blog relacionado: Apresentando o Little Snitch for Linux

  • Antigamente existia o ZoneAlarm para Windows
    Sempre me perguntei por que não havia algo assim no Linux

    • No passado, eu mesmo criei para AmigaOS um programa parecido com o ZoneAlarm
      Procurando o código do Direwall, vi que o estilo antigo de C continua todo lá
      Ele funcionava por meio de um patch na biblioteca de sockets, e fiquei curioso se ainda compila hoje
    • A força do ZoneAlarm não era só técnica, mas também de educação do usuário e design de UX
      No começo ele perguntava muito, mas explicava claramente que ficaria silencioso depois de aprender
      Por isso ganhou a confiança dos usuários, e eu o recomendava justamente por esse motivo
    • Na época, quase tudo era software GNU, então quase não existia spyware
      Quando softwares comerciais passaram a chegar ao Linux, surgiu a vontade de monitorar a rede
    • Ainda lembro de ter usado o ZoneAlarm no começo dos anos 2000
    • Também lembro do Kerio Personal Firewall. Depois fui para o ZA ou para o Comodo, e o recurso de execução isolada era marcante
      Era bom porque permitia limitar a execução desenfreada no Windows
  • Uso o Little Snitch há muito tempo e aprovo manualmente todas as requisições de rede
    Mas fico pensando até que ponto dá para confiar em um programa com privilégios no nível de extensão de kernel
    Como quase não há informação sobre a empresa ou os desenvolvedores, isso me desperta curiosidade

    • Um desenvolvedor do Little Snitch for Linux respondeu diretamente
      O componente eBPF foi publicado como open source sob GPLv2, e o código no GitHub pode ser consultado
      Porém o daemon precisa rodar com privilégios de root, então seria necessário restringi-lo com controle de acesso como o SELinux
      Como é a primeira versão, eles estão lidando com relatórios de bugs e disseram ter se surpreendido com a diversidade dos ambientes Linux
    • A empresa é uma desenvolvedora independente para Mac ativa há mais de 20 anos, e o Little Snitch é um produto querido há bastante tempo
    • Estou cocriando um firewall FOSS para Android inspirado em Little Snitch/OpenSnitch
      No macOS, em vez de extensões de kernel, usa-se a API Network Extension
      Se o objetivo for observar a rede, também existem sniffers com GUI como o Sniffnet
  • Parabéns pelo lançamento da porta para Linux
    Como alternativa totalmente open source e baseada em terminal, apresento o RustNet, que eu mantenho
    É uma ferramenta de monitoramento de pacotes em tempo real via TUI; não é um firewall, mas usa Landlock para fazer sandboxing de si própria

    • Parece interessante, vou testar depois
  • Fiquei curioso com a comparação com o OpenSnitch
    OpenSnitch GitHub

    • Testei o Little Snitch, mas ele quase não faz resolução de IP para domínio, e também falha na identificação de processos
      Isso ocorre por causa das limitações técnicas da versão para Linux
      Como é baseado em eBPF, quando ocorre overflow de cache ele não consegue mapear processos, e não pode usar inspeção profunda de pacotes como no macOS
      Isso está explicado em detalhes na documentação oficial
    • Também instalei o OpenSnitch, mas hoje o deixo desativado. Provavelmente por fadiga
    • Segundo o blog do desenvolvedor, eles decidiram criar o produto porque as ferramentas existentes não ofereciam a função de “ver conexões por processo de relance e bloqueá-las com um clique”
      Texto relacionado
    • O OpenSnitch é totalmente open source e não tem assinatura. Software deveria ser assim
  • Estou usando o OpenSnitch com satisfação
    Ainda assim, seria ótimo se surgisse um sistema de plugins para analisar junto o comportamento do usuário e as conexões de rede, mostrando alertas apenas para conexões inesperadas
    Em vez de pop-ups, também seria útil existir um wrapper de autoaprovação baseado em CLI