Little Snitch para Linux
(obdev.at)- 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
.lsrulesdo 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
- Após alterações, é necessário reiniciar o daemon
- 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
- Não edite diretamente; copie o arquivo a ser modificado para
- 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
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.pychamar o Firefox para enviar dados, queria saber se o firewall conseguiria impedir issoSe o script for executado com
#!/bin/interpreter, a regra é aplicada ao caminho do script, mas se for executado no formatointerpreter script, o comportamento é diferenteNo 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
Firewalls antigos do Windows, como Outpost e Zone Alarm, ofereciam um recurso de Leak Control para detectar esse tipo de comportamento
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 longEm 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
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
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
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
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
Também comentou que está curioso para ver no que isso vai dar
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
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
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
Quando softwares comerciais passaram a chegar ao Linux, surgiu a vontade de monitorar a rede
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
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
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
Fiquei curioso com a comparação com o OpenSnitch
OpenSnitch GitHub
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
Texto relacionado
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