Se você está procurando um firewall moderno e poderoso para Linux que seja fácil de configurar na linha de comando ou com sua interface GUI, provavelmente firewalld
é o que você está procurando.
Índice
A necessidade de firewalls
As conexões de rede têm origem e destino. O software na origem solicita a conexão e o software no destino a aceita ou rejeita. Se for aceito, pacotes de dados – genericamente chamados de tráfego de rede – podem passar em ambas as direções pela conexão. Isso vale quer você esteja compartilhando pela sala em sua própria casa, conectando-se remotamente ao trabalho em seu escritório doméstico ou usando um recurso distante baseado em nuvem.
As boas práticas de segurança dizem que você deve limitar e controlar as conexões ao seu computador. Isto é o que os firewalls fazem . Eles filtram o tráfego de rede por endereço IP , porta ou protocolo e rejeitam conexões que não atendem a um conjunto predefinido de critérios – as regras de firewall – que você configurou. Eles são como seguranças em um evento exclusivo. Se o seu nome não estiver na lista, você não entrará.
É claro que você não quer que suas regras de firewall sejam tão restritivas que suas atividades normais sejam restringidas. Quanto mais simples for configurar seu firewall, menor será a chance de você configurar inadvertidamente regras conflitantes ou draconianas. Freqüentemente ouvimos usuários dizerem que não usam firewall porque é muito complicado de entender ou porque a sintaxe do comando é muito opaca.
O firewalld
firewall é poderoso, mas simples de configurar, tanto na linha de comando quanto por meio de seu aplicativo GUI dedicado. Nos bastidores, os firewalls do Linux dependem de
netfilter
, a estrutura de filtragem de rede do lado do kernel. Aqui na terra do usuário, temos uma variedade de ferramentas para interagir
netfilter
, como
iptables
,
ufw
o firewall descomplicado e firewalld
.
Em nossa opinião, firewalld
oferece o melhor equilíbrio entre funcionalidade, granularidade e simplicidade.
Instalando firewalld
Existem duas partes para firewalld
. Existe firewalld
o processo daemon que fornece a funcionalidade do firewall, e existe o firewall-config
. Esta é a GUI opcional para firewalld
. Observe que não há “d” em firewall-config
.
A instalação firewalld
no Ubuntu, Fedora e Manjaro é simples em todos os casos, embora cada um deles tenha sua própria opinião sobre o que está pré-instalado e o que vem no pacote.
Para instalar no Ubuntu , precisamos instalar firewalld
e firewall-config
.
sudo apt instalar firewalld
sudo apt instalar firewall-config
No Fedora , firewalld
já está instalado. Só precisamos adicionar firewall-config
.
sudo dnf install firewall-config
No Manjaro , nenhum dos componentes está pré-instalado, mas eles estão agrupados em um único pacote para que possamos instalar os dois com um único comando.
sudo pacman -Sy firewalld
Precisamos habilitar o firewalld
daemon para permitir que ele seja executado sempre que o computador for inicializado.
sudo systemctl ativar firewalld
E precisamos iniciar o daemon para que ele esteja rodando agora.
sudo systemctl iniciar firewalld
Podemos usar systemctl
para verificar se firewalld
foi iniciado e está funcionando sem problemas:
sudo systemctl status firewalld
Também podemos usar firewalld
para verificar se está em execução. Isso usa o firewall-cmd
comando com a --state
opção. Observe que não há “d” em firewall-cmd
:
sudo firewall-cmd --state
Agora que temos o firewall instalado e funcionando, podemos prosseguir com a configuração.
O conceito de zonas
O firewalld
firewall é baseado em zonas. As zonas são coleções de regras de firewall e uma conexão de rede associada. Isso permite que você personalize diferentes zonas – e um conjunto diferente de limitações de segurança – sob as quais você pode operar. Por exemplo, você pode ter uma zona definida para corrida diária regular, outra zona para corrida mais segura e uma zona de bloqueio completa “nada dentro, nada fora”.
Para passar de uma zona para outra, e efetivamente de um nível de segurança para outro, você move sua conexão de rede da zona em que está para a zona sob a qual deseja operar.
Isso torna muito rápido mover um conjunto definido de regras de firewall para outro. Outra maneira de usar zonas seria fazer com que seu laptop usasse uma zona quando você estiver em casa e outra quando estiver fora e usando uma rede Wi-Fi pública.
firewalld
vem com nove zonas pré-configuradas. Estas podem ser editadas e mais zonas adicionadas ou removidas.
- drop : Todos os pacotes recebidos são descartados. O tráfego de saída é permitido. Este é o cenário mais paranóico.
- bloco : Todos os pacotes recebidos são descartados e uma
icmp-host-prohibited
mensagem é enviada ao originador. O tráfego de saída é permitido. - confiável : todas as conexões de rede são aceitas e outros sistemas são confiáveis. Esta é a configuração mais confiável e deve ser restrita a ambientes muito seguros, como redes de teste cativas ou sua casa.
- public : Esta zona é para uso em redes públicas ou outras redes onde nenhum dos outros computadores é confiável. Uma pequena seleção de solicitações de conexão comuns e geralmente seguras é aceita.
- externo : Esta zona é para uso em redes externas com mascaramento NAT ( encaminhamento de porta ) habilitado. Seu firewall atua como um roteador que encaminha o tráfego para sua rede privada, que permanece acessível, mas ainda privada.
- interno : Esta zona destina-se a ser usada em redes internas quando o seu sistema atua como gateway ou roteador. Outros sistemas nesta rede são geralmente confiáveis.
- dmz : Esta zona é para computadores localizados na “zona desmilitarizada” fora das defesas do seu perímetro e com acesso limitado à sua rede.
- trabalho : Esta zona é para máquinas de trabalho. Outros computadores nesta rede são geralmente confiáveis.
- home : Esta zona é para máquinas domésticas. Outros computadores nesta rede são geralmente confiáveis.
As zonas residencial, de trabalho e interna têm funções muito semelhantes, mas separá-las em zonas diferentes permite ajustar uma zona de acordo com sua preferência, encapsulando um conjunto de regras para um cenário específico.
Um bom ponto de partida é descobrir qual é a zona padrão. Esta é a zona à qual suas interfaces de rede são adicionadas quando firewalld
instaladas.
sudo firewall-cmd --get-default-zone
Nossa zona padrão é a zona pública. Para ver os detalhes de configuração de uma zona, use a --list-all
opção. Isso lista tudo o que foi adicionado ou habilitado para uma zona.
sudo firewall-cmd --zone=public --list-all
Podemos ver que esta zona está associada à conexão de rede enp0s3 e permite tráfego relacionado a DHCP , mDNS e SSH . Como pelo menos uma interface foi adicionada a esta zona, esta zona está ativa.
firewalld
permite adicionar serviços dos quais você gostaria de aceitar tráfego a uma zona. Essa zona permite a passagem desse tipo de tráfego. Isso é mais fácil do que lembrar que o mDNS, por exemplo, usa a porta 5353 e o protocolo UDP e adicionar manualmente esses detalhes à zona. Embora você também possa fazer isso.
Se executarmos o comando anterior em um laptop com conexão Ethernet e placa Wi-Fi, veremos algo semelhante, mas com duas interfaces.
sudo firewall-cmd --zone=public --list-all
Ambas as nossas interfaces de rede foram adicionadas à zona padrão. A zona possui regras para os mesmos três serviços do primeiro exemplo, mas DHCP e SSH foram adicionados como serviços nomeados, enquanto o mDNS foi adicionado como um emparelhamento de porta e protocolo.
Para listar todas as zonas use a --get-zones
opção.
sudo firewall-cmd --get-zones
Para ver a configuração de todas as zonas de uma vez, use a --list-all-zones
opção. Você vai querer canalizar isso paraless
.
sudo firewall-cmd --list-all-zones | menos
Isso é útil porque você pode percorrer a listagem ou usar o recurso de pesquisa para procurar números de porta, protocolos e serviços.
Em nosso laptop, moveremos nossa conexão Ethernet da zona pública para a zona inicial. Podemos fazer isso com as opções --zone
e --change-interface
.
sudo firewall-cmd --zone=home --change-interface=enp3s0
Vamos dar uma olhada na zona local e ver se nossa alteração foi feita.
sudo firewall-cmd --zone=home --list-all
E tem. Nossa conexão Ethernet é adicionada à zona inicial.
No entanto, esta não é uma mudança permanente. Alteramos a configuração de execução do firewall, não a configuração armazenada. Se reiniciarmos ou usarmos a --reload
opção, reverteremos às configurações anteriores.
Para tornar uma alteração permanente, precisamos usar a --permanent
opção apropriadamente nomeada.
Isso significa que podemos alterar o firewall para requisitos únicos sem alterar a configuração armazenada do firewall. Também podemos testar as alterações antes de enviá-las para a configuração. Para tornar nossa mudança permanente, o formato que devemos usar é:
sudo firewall-cmd --zone=home --change-interface=enp3s0 --permanent
Se você fizer algumas alterações, mas esquecer de usar --permanent
algumas delas, poderá gravar as configurações da sessão atual do firewall na configuração usando a --runtime-to-permanent
opção.
sudo firewall-cmd --runtime-to-permanent
Adicionando e removendo serviços
firewalld
conhece muitos serviços. Você pode listá-los usando a --get-services
opção.
sudo firewall-cmd --get-services
Nossa versão dos firewalld
192 serviços listados. Para habilitar um serviço em uma zona, use a --add-service
opção.
Podemos adicionar um serviço a uma zona usando a --add-service
opção.
sudo firewall-cmd --zone=public --add-service=http
O nome do serviço deve corresponder à sua entrada na lista de serviços de firewalld
.
Para remover um serviço, substitua --add-service
por--remove-service
Adicionando e removendo portas e protocolos
Se preferir escolher quais portas e protocolos serão adicionados, você também pode fazer isso. Você precisará saber o número da porta e o protocolo para o tipo de tráfego que está adicionando.
Vamos adicionar tráfego HTTPS à zona pública. Isso usa a porta 443 e é uma forma de tráfego TCP.
sudo firewall-cmd --zone=public --add-port=443/tcp
Você pode fornecer um intervalo de portas fornecendo a primeira e a última portas com um hífen ” -
” entre elas, como “400-450”.
Para remover uma porta substitua --add-port
por --remove-port
.
Usando a GUI
Pressione a tecla “Super” e comece a digitar “firewall”. Você verá o ícone da parede de tijolos do firewall-config
aplicativo.
Clique nesse ícone para iniciar o aplicativo.
Adicionar um serviço firewalld
usando a GUI é tão fácil quanto selecionar uma zona na lista de zonas e selecionar o serviço na lista de serviços.
Você pode optar por modificar a sessão em execução ou a configuração permanente selecionando “Tempo de execução” ou “Permanente” no menu suspenso “Configuração”.
Para fazer alterações na sessão em execução e somente confirmá-las depois de testá-las, defina o menu “Configuração” como “Tempo de execução”. Faça suas alterações. Quando estiver satisfeito com o que eles estão fazendo, use a opção de menu Opções > Tempo de execução para permanente.
Para adicionar uma entrada de porta e protocolo a uma zona, selecione a zona na lista de zonas e clique em “Portas”. Clicar no botão adicionar permite fornecer o número da porta e escolher o protocolo em um menu.
Para adicionar um protocolo, clique em “Protocolos”, clique no botão “Adicionar” e selecione o protocolo no menu pop-up.
Para mover uma interface de uma zona para outra, clique duas vezes na interface na lista “Conexões” e selecione a zona no menu pop-up.
A ponta do iceberg
Há muito mais que você pode fazer firewalld
, mas isso é suficiente para você começar a trabalhar. Com as informações que fornecemos, você poderá criar regras significativas em suas zonas.