OpenSnitch, firewall interativo de aplicações para GNU/Linux
(github.com/evilsocket)- OpenSnitch é um firewall de aplicações para GNU/Linux, com foco em filtrar de forma interativa as conexões externas das aplicações
- Permite bloquear domínios de anúncios, rastreadores e malware em todo o sistema, e também configurar no GUI o firewall do sistema baseado em nftables
- O GUI oferece suporte à configuração de regras do sistema, como definir políticas de entrada e permitir serviços inbound, além de gerenciar vários nós de forma centralizada
- A instalação é feita baixando pacotes deb/rpm, instalando-os com
aptoudnfe então executandoopensnitch-uiou abrindo o GUI pelo menu de aplicações - Oferece um espaço de discussão Show and tell para compartilhar casos de interceptação de conexões inesperadas, além de integração com SIEM para uso no monitoramento de conexões em ambientes operacionais
O que o OpenSnitch faz
- OpenSnitch é um firewall de aplicações para GNU/Linux
- Seu recurso principal é filtrar de forma interativa as conexões outbound das aplicações
- Oferece suporte ao bloqueio de domínios de anúncios, rastreadores e malware em todo o sistema
Recursos de firewall e gerenciamento de nós
- É possível configurar as definições do firewall do sistema no GUI
- Abrange configurações baseadas em nftables
- Permite configurar políticas de entrada, permitir serviços inbound, entre outros
- É possível gerenciar vários nós a partir de um GUI central
- Oferece suporte à integração com SIEM
Download e instalação
- Os pacotes deb/rpm podem ser baixados em GitHub Releases
- Instalação do pacote deb:
sudo apt install ./opensnitch*.deb ./python3-opensnitch-ui*.deb
- Instalação do pacote rpm:
sudo dnf install opensnitch*.rpm
- Após a instalação, execute
opensnitch-uiou inicie o GUI pelo menu de aplicações - Para informações detalhadas de instalação, consulte a documentação
Casos de uso e participação
- Exemplos de conexões inesperadas interceptadas pelo OpenSnitch estão reunidos nas discussões Show and tell
- Ao descobrir uma conexão inesperada, você pode enviá-la como uma nova discussão
Informações do projeto
- OpenSnitch usa a licença GPL3
- O apoio financeiro pode ser feito na seção Sponsor this project à direita do repositório no GitHub
- Os mantenedores atuais podem ser verificados no histórico de commits da branch master
- A lista de contribuidores pode ser vista no gráfico de contributors
- A tradução é feita no Weblate
1 comentários
Comentários no Hacker News
Tentei muito usar o OpenSnitch como firewall interativo, mas existe um problema que não é exatamente culpa do OpenSnitch, e nem sei se dá para resolver
Por exemplo, se você executa
curlno terminal, precisa decidir toda vez se permite ou então colocá-lo permanentemente na lista de permissõesMas se você permitir ferramentas genéricas como
curlouwget, até malware em uma máquina comprometida pode usar essas ferramentas para acessar a internet sem alertas do firewall, ou seja, a porta fica escancaradaA tranquilidade de saber que qualquer novo acesso vai pedir permissão faz valer a pena o incômodo inicial, e depois que vira hábito a administração fica bem fácil
Também uso bastante regras com expiração. Por exemplo, se eu confio num instalador e quero deixá-lo mais livre por um tempo, abro uma regra para o executável que expira em breve. As opções são permanente, até reiniciar, pelos próximos 30 segundos, pelos próximos 5 minutos etc., e isso simplifica muito tarefas com muitos endpoints sem deixar brechas permanentes
curl/wgetpara o usuáriodev, e continuar detectando no usuárionormalO trabalho de desenvolvimento seria executado como
su -c curl … devSe um programa malicioso estiver rodando no espaço do usuário comum, o firewall de aplicação pode capturar adequadamente o uso de
curlewgetDigitar senha toda vez é chato, então você pode configurar o PAM com YubiKey ou autenticação biométrica, e esse usuário não deve poder fazer login nem ter senha
curlouwgetEu uso firewall em nível de aplicação no celular, mas em vez de colocar o nome do programa na lista de permissões, permito que um programa específico acesse um domínio/endereço IP específico
Pela minha experiência, a forma mais fácil de bloquear comunicação externa de programas ou malware é bloquear acesso a DNS. Faço isso há décadas e ainda funciona perfeitamente. “99%” dos programas/malwares que fazem comunicação externa dependem de DNS, não de IPs codificados diretamente
Os raros programas/malwares que não precisam de DNS também são fáceis de detectar, e no DNS eu permito apenas domínios específicos. Hoje em dia eu nem uso mais arquivos de zona locais com os IPs necessários; um proxy de encaminhamento faz o mapeamento domínio→IP. A lista de permissões lida pelo proxy é parecida com um arquivo de zona, mas é um arquivo de texto mais simples
bash/zshpertencente ao usuário, deixa ocurlpassar; caso contrário, bloqueia. Mas parece bem trabalhosoPor exemplo, se
curlfor executado e, ao subir pela lista de processos pais, encontrar um processo/usr/bin/trusted, deveria ser possível declarar que essa chamada decurlé permitida. Assim, desde que o script bash tenha/usr/bin/trustedcomo processo pai, você pode permitir a execução decurla partir desse scriptFoi isso que acabou me levando para o NixOS
Quando eu usava firewall de aplicação antigamente, havia muita configuração, tudo quebrava com frequência quando atualizações mudavam caminhos, e ao migrar para um computador novo eu tinha que refazer tudo do zero, o que gerava muita rotatividade e desperdício
Integrando com o gerenciador de pacotes, esse problema sumiu. Depois de concluir a configuração inicial da lista de permissões, basta fazer um pequeno ajuste quando você adiciona um pacote novo na configuração do nix
Se der preguiça de adicionar a permissão na configuração do nix, você pode criar uma lista de permissões temporária que dura só até o próximo reboot. A curva de aprendizado foi íngreme e exigiu trabalho, mas agora a manutenção é muito fácil
É ótimo para detectar apps malfeitos que criam conexões demais. Estou olhando para você, Thunderbird
Gosto dele, mas tem um pequeno incômodo. Regras temporárias expiradas não são removidas nem exibidas na interface, então às vezes é preciso reiniciar a GUI para limpá-las
No Fedora, eu recomendaria isso em vez de ficar mexendo com firewalld/firewall-config
dnfvasculhando vários continentes cada vez que atualiza?https://news.ycombinator.com/item?id=41124755
Eu poderia simplesmente permitir, mas não quero
Eu gostaria de algo assim ao rodar APIs ou serviços web em contêineres Docker
containerA: permitir todo o tráfego de saídacontainerB: bloquear tráfego de saída, exceto ao responder clientescontainerC: só pode acessarupdates.example.comIsso seria só iptables por contêiner? Até daria para enfiar iptables na imagem existente, mas parece dar muito trabalho. Ou seria algo feito com iptables no host?
Existe algo assim para celulares Android? Gostaria de boas recomendações
https://netguard.me
Usei o AFWall+ por muito tempo, e os controles para permitir ou bloquear Wi‑Fi, celular e LAN por app são bem elegantes. Como é um frontend para iptables/nftables, você pode personalizar as regras o quanto quiser: https://github.com/ukanth/afwall
Funciona desde o Android 2+
Sem root, só restam soluções no estilo VPN, como o Adguard
Se você quiser estatísticas, também existe a versão Android do GlassWire. Só usei a beta, então não sei como está hoje, mas vale conferir
"Rethink: DNS + Firewall + VPN"tem recursos parecidosMigrei para ele a partir do NetGuard citado acima
Seria bom ter pacotes para Arch e OpenSUSE também
opensnitch, e no AUR temopensnitch-ebpf-moduleComo ele se compara a algo como o UFW? Imagino que o principal seja a interface para ver a atividade em andamento
Se algum app qualquer fizer uma chamada de telemetria ou algo do tipo, você pode definir listas branca/cinza bem granulares, como permitir apenas conexões desse executável para este endereço, ou sempre permitir este endereço, com opções de duração como uma vez só, por 15 segundos, até reiniciar etc.
Depois que você supera a barreira inicial de colocar na lista de permissões os apps que usa e em que confia, ele é muito bom e mostra bem coisas que apps ou jogos estão fazendo sem você saber
Será que existe algum plano de portar isso para macOS? Usei o Little Snitch por um tempo, mas por motivos alheios a pagamento prefiro mais software livre
Já tentei usar de forma intermitente várias vezes, mas havia crashes aleatórios demais, então era bem difícil de usar