Existe algum firewall no nível de aplicativo para Ubuntu 16.04? (com GUI)

20

Devo confessar que sou muito novo no mundo Linux e há conceitos que me parecem muito desconhecidos.

Uma coisa que mais sinto falta é um firewall bom, porém simples, no nível do aplicativo. A partir de agora, com toda essa conectividade invasiva e permanente invasiva à Internet, é necessário saber o que exatamente o seu computador está fazendo, por que e com quem. Um analisador de protocolo é bom, mas muito hostil e demorado para "analisar", praticamente inútil para usuários domésticos.

Descobri muitos programas em ambientes Windows que não deveriam se conectar à Internet, mas sim (e com meu firewall gratuito do ZoneAlarm, posso impedi-los).

Com o Gufw (e vários outros), você precisa saber quais aplicativos você já instalou (e sabemos que isso é quase impossível com os sistemas operacionais modernos com bilhões de linhas de código).

O que estou procurando é um firewall que monitore a conexão NIC / WAN e detecte qualquer programa / aplicativo ou qualquer tentativa de "falar" através dela de maneira proativa, independentemente da porta que estiver tentando usar (a necessidade dos aplicativos que eu mencionei anteriormente tentar se conectar usando portas TCP bem conhecidas: 80, 443, 8080). Isso existe? (Caso contrário, como sei com certeza o que está fazendo meu computador?)

jonabrv1965
fonte
11
Apenas curioso: esse óleo de cobra evitou problemas sérios (como canil) ultimamente?
Reponha Monica - M. Schröder
Possível duplicata: como um não-nerd pode configurar um firewall adequado?
21416 Jon Bentley

Respostas:

12

Douane

Douane é um firewall pessoal que protege a privacidade de um usuário, permitindo que ele controle quais aplicativos podem se conectar à Internet a partir de seu computador GNU / Linux.


Instalação

Até agora (22/05/2017), não havia pacotes Ubuntu disponíveis. Você deve construí-lo a partir da fonte.

Essas instruções de instalação são baseadas em informações do Douane Wiki e testadas no Ubuntu 16.04.2 de 64 bits.

Abra um terminal ( Ctrl+ Alt+ T) para executar os comandos.

Preparação

Atualize seu sistema:

sudo apt update
sudo apt full-upgrade

Se você receber uma notificação pedindo para reiniciar o computador, reinicie-o.

Instale as dependências

sudo apt install git build-essential dkms libboost-filesystem-dev libboost-regex-dev libboost-signals-dev policykit-1 libdbus-c++-dev libdbus-1-dev liblog4cxx10-dev libssl-dev libgtkmm-3.0-dev python3 python3-gi python3-dbus

Crie um diretório para compilação

cd
mkdir Douane
cd Douane

Construa o módulo do kernel

git clone https://github.com/Douane/douane-dkms
cd douane-dkms
sudo make dkms

Verifique se o módulo foi construído e instalado corretamente:

lsmod | grep douane

Você deve ver algo como:

douane                 20480  0

Construa o daemon

cd ~/Douane
git clone --recursive https://github.com/Douane/douane-daemon
cd douane-daemon
make
sudo make install

Construa o processo de diálogo

cd ~/Douane
git clone --recursive https://github.com/Douane/douane-dialog
cd douane-dialog
make
sudo make install

Inicie o processo de diálogo:

/opt/douane/bin/douane-dialog &

Em seguida, verifique se está em execução:

pgrep -a douane-dialog

Você deve ver algo como:

21621 /opt/douane/bin/douane-dialog

Crie o configurador

cd ~/Douane
git clone https://github.com/Douane/douane-configurator
cd douane-configurator
sudo python3 setup.py install

Inicie o daemon e configure o início automático

Eu tive que inserir o seguinte texto no arquivo /etc/init.d/douanepara ativar o início automático do daemon:

### BEGIN INIT INFO
# Provides:          douane
# Required-Start:
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Douane firewall
### END INIT INFO

Abra o arquivo para edição:

sudo nano /etc/init.d/douane

Em seguida, cole o texto acima após a descrição do programa. Pressione Ctrl+ O, Enterpara salvar e, em seguida, Ctrl+ Xpara sair do editor.

Estas são as primeiras 21 linhas do arquivo depois que inseri o texto:

#!/bin/bash
#
# douane      This shell script takes care of starting and stopping
#             douane daemon (A modern firewall at application layer)
#
# Author: Guillaume Hain [email protected]
#
# description: douane is the daemon process of the Douane firewall application. \
# This firewall is limiting access to the internet on application bases.

### BEGIN INIT INFO
# Provides:          douane
# Required-Start:
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Douane firewall
### END INIT INFO

# Source function library.
. /lib/lsb/init-functions

Agora você pode configurar o início automático e iniciar o daemon:

sudo systemctl daemon-reload
sudo systemctl enable douane
sudo systemctl start douane

Ative o filtro e inicie automaticamente a caixa de diálogo

Inicie o configurador:

douane-configurator

Em seguida, verifique se os switches Use Douane para filtrar o tráfego da minha rede e o Auto start Douane na inicialização estão ambos ativados.

Você pode revisar as regras de filtragem na guia Regras . Clique com o botão direito do mouse em uma regra e você terá a opção de excluí-la.

Teste

Se tudo estiver bem, você verá a janela do Douane pedindo permissão ao abrir aplicativos que usam conexões de rede.

Eric Carvalho
fonte
11
Olá Eric, muito obrigado pela sua pronta resposta. Como mencionado, sou bastante iniciante no Linux. Eu encontrei essa coisa de Douane antes de postar minha pergunta, dei uma olhada no site da Douane e não há "pacote" para o Ubuntu, apenas para algo chamado "Archlinux" (acho que outra distro do linux) ... Eu também encontrei que alguém possa adaptar isso a qualquer distro que faça uma recompilação e instalação manualmente ... estou certo? ... ninguém já o compilou e empacotou para o ubuntu?
Jonabrv1965 #
11
Antes de tudo, obrigado novamente Eric pelo apoio ... Hum ... mais de 30 etapas para instalar e executar um aplicativo no Linux ... não é muito fácil de usar, não é? ... Estou começando a ver por que o Linux tem que fora recepção techie pessoas muito baixas ... vou dar-lhe uma tentativa (principalmente porque eu tenho que quebrar além da M $ Windoze a qualquer custo)
jonabrv1965
Não existe um PPA para fornecer binários? O Google encontrou o launchpad.net/~zedtux/+archive/ubuntu/douane (mas ainda não testei).
Melebius 13/09/17
4

Há um novo projeto chamado OpenSnitch descrito em

https://www.cyberciti.biz/python-tutorials/opensnitch-the-little-snitch-application-like-firewall-tool-for-linux/

A página do projeto é https://www.opensnitch.io/

Nesse ponto, ele é considerado um software alfa e, estranhamente, está escrito em Python, mas pelo menos é uma nova tentativa, enquanto Douane é um programa muito antigo que (eu acho) é muito mais difícil de instalar.

Isenção de responsabilidade: Eu não testei pessoalmente nenhum dos programas, estava apenas tentando descobrir se há outras opções e percebi que ninguém havia mencionado o OpenSnitch aqui ainda.

user736189
fonte
> "estranhamente está escrito em Python" - não, não é estranhamente, é realmente uma boa idéia usar uma linguagem de alto nível para tudo, exceto as partes "quentes", para economizar tempo e cometer menos erros.
precisa saber é o seguinte
3

Essa é uma pergunta muito boa, mas eu odeio perguntas como essa porque são realmente difíceis de responder sem parecer que a segurança não é importante.

Então, primeiro, deixe-me dizer que a segurança é importante, mas o Linux lida com isso de maneira muito diferente do Windows.

Então, vamos abordar sua pergunta.

Primeiro, não haverá um firewall de saída que funcione da mesma maneira que o alarme de zona. O Linux simplesmente não tem uma grande necessidade de um. Muitos aplicativos funcionam em uma arquitetura cliente / servidor, mesmo que você os esteja usando na mesma máquina. Xorg é um ótimo exemplo. Primeiro você tem um servidor (neste caso, a parte que desenha na tela) e um cliente (gedit) gedit conversa com o servidor sobre desenhar botões, colocar texto e assim por diante. Mesmo algo tão simples quanto um mouse tem a mesma arquitetura (ou poderia ter). Um programa atua como um servidor que escuta informações e envia dados quando as obtém, e um cliente "se conecta" a esse "servidor de mouse" e aguarda informações.

Isso é tão prevalente no Linux que, se você criar um "firewall" que solicite permissão para todas as conexões de rede, provavelmente não poderá configurá-lo porque ele não poderá se conectar ao seu próprio servidor.

Tudo isso é um exemplo muito rudimentar, algumas delas enganosas porque são de alto nível. Mas ainda é muito verdade.

Para proteger os usuários do Linux contra isso, temos um conjunto de duas regras muito básicas que fazem um trabalho "básico" muito bom.

Primeiro, nenhum usuário, exceto o root, pode abrir qualquer porta abaixo de 1024. (novamente, nível muito alto). Isso significa que, mesmo para executar um servidor FTP (em uma porta padrão), você precisa ter acesso root. Você como usuário geralmente pode abrir "portas altas" (acima de 1024). Mas veja a regra dois.

2nd. nenhum processo pode acessar qualquer arquivo que o usuário que iniciou o processo não pôde acessar. (novamente, nível muito alto) Portanto, se "coteyr" iniciar um servidor FTP, esse servidor FTP na pior das hipóteses (nível alto) terá apenas o mesmo acesso exato que o usuário coteyr que o iniciou.

Devido à combinação dessas duas regras, um "software" que pergunta sempre que algo tenta conectar o firewall fica no caminho e não há muita demanda por ele.

Dito isto, você sempre pode criar uma regra de firewall de saída e, em muitos casos, isso provavelmente não é uma má idéia. Muitos serviços podem ser (e são por padrão) configurados para usar soquetes baseados em arquivo (ou baseados em memória) e não soquetes baseados em rede.

Uma regra de firewall de entrada geralmente fecha as lacunas ímpares deixadas pela regra 1 ou 2.

Meu ponto é esse. A segurança é importante e não estou tentando dizer que não, é apenas aqui no Linux que temos ferramentas e objetivos diferentes. Eu recomendo que você analise as permissões de usuário e grupo do Linux e, em seguida, use uma ferramenta como gfw e IPTABLES para preencher quaisquer lacunas.

coteyr
fonte
3
> nenhum processo pode acessar qualquer arquivo que o usuário que iniciou o processo não pôde acessar - o que não é diferente do Windows, como você parece estar sugerindo. Isso não é uma diferença do sistema operacional. Honestamente, se você apenas permitisse todas as conexões de loopback, esse firewall não interferiria com nenhum aplicativo cliente / servidor TCP na mesma máquina - é perfeitamente possível configurar um que controle apenas o acesso à rede. (. Também A menos que você estiver executando o Windows 9x, o Windows ACLs são, no mínimo, mais poderoso do que as permissões tradicionais do Unix que novamente tem pouco a ver com a restrição de rede..)
Bob
11
Na verdade, lendo a resposta novamente ... Também não tenho certeza de como não é possível usar portas conhecidas - isso só é útil para impedir o mascaramento dos serviços do sistema (por exemplo, fingir estar sshdcom 22 anos), mas a pergunta parece estar perguntando mais sobre a exfiltração de dados. Quais são quase inteiramente as conexões de saída e têm pouco a ver com as portas às quais você pode se conectar.
22417 Bob
11
Primeiro, não haverá um firewall de saída que funcione da mesma maneira que o alarme de zona. O Linux simplesmente não tem uma grande necessidade de um - as tabelas IP controlarão as saídas da mesma forma que as próximas; por favor, não diga coisas que você realmente não conhece.
Djsmiley2k - CoW
Olá Honza, durante minha turnê de "lição de casa", eu vi várias vezes respostas como a sua. E eu entendo um pouco, mas ... e é um grande "mas" ... não é o que estou procurando ... Entendo a porta, a baixa exposição (devido à baixa difusão da plataforma) e todos os outros conceitos que você mencionou ... mas o que estou procurando é entender de maneira fácil (por exemplo, zonealarm) o que meu computador está fazendo fora do próprio computador .. (é Xorg / gedit, para seguir seu exemplo, em necessidade de ir para a internet para fazer qualquer coisa, se assim que eu quero / preciso saber por que / quando / onde ...?
jonabrv1965
Então você vai cavar um pouco mais fundo. No netstatmomento, minha caixa possui 1354 conexões abertas. 65 desses são conexões de rede. Esse é um número bastante baixo para mim (sem dizer que é para todos), mas você começaria a tentar descobrir o que cada uma dessas conexões faz. Como eu disse, não é que a segurança não seja importante, é apenas um ambiente muito diferente.
Coteyr