Certamente, você chegou até este post depois de conferir as publicações sobre as principais soluções de firewall para Linux e a abordagem mais detalhada que fiz sobre o Uncomplicated Firewall (UFW). Desta vez o foco é o Firewalld, uma notável ferramenta disponível para a plataforma.
Ao longo do conteúdo, perceberemos semelhanças entre o Firewalld e o UFW, e de antemão destaco uma delas: a facilidade de uso. Embora eu esteja falando de um firewall repleto de recursos avançados — atrativos a experts do ramo —, a sua sintaxe é acessível até mesmo ao público menos esclarecido.
Fora a sintaxe simplificada, fator relevante a adeptos das linhas de comando, outro detalhe que colabora para os iniciantes é o modo front-end. Ou seja, podemos optar por usufruir dos recursos do Firewalld a partir de uma interface gráfica, o que torna a aplicação mais “democrática”.
Quer saber outros detalhes sobre o Firewalld e os procedimentos para instalação e configuração dele? Abaixo, uma breve apresentação do programa (e seu modus operandi), um passo a passo para instalá-lo e três exemplos de configurações. Acompanhe!
O que você precisa saber sobre o Firewalld
Recapitulando alguns fatos que explorei no primeiro artigo: parte dos programas de firewall disponíveis para Linux está correlacionada a determinadas distribuições. O UFW, por exemplo, acompanha as distros baseadas no Debian (Ubuntu, Mint etc.). Nesse sentido, o Firewalld é padrão nos sistemas Red Hat, como CentOS e Fedora.
Se você ainda não compreende muito bem a atuação da Red Hat Enterprise Linux (RHEL), cabe esclarecer que as soluções desenvolvidas pela equipe RHEL são voltadas às empresas. Basicamente, são distribuídas (gratuitamente) versões corporativas do Linux de modo que a Red Hat vende o serviço de suporte técnico.
Isso significa que o Firewalld é mantido de acordo com base nas necessidades das empresas? Sim, esta é uma das características dele. Além disso, a estrutura do Firewalld em si é diferente do iptables (e do UFW, naturalmente), sobretudo no que envolve o armazenamento de informações.
Como assim? Vou explicar: enquanto o iptables guarda as regras em arquivo de texto simples, o Firewalld utiliza o formato XML, o qual favorece a organização do conteúdo. Inclusive, esse é um ponto que nos impede de usar o Firewalld e o iptables simultaneamente, pois as configurações são ajustadas em formatos completamente distintos.
O conceito de zonas do Firewalld
Aproveitando que estamos falando da parte estrutural do programa, convém abordar um conceito inserido no Firewalld, o qual chamamos “zonas”. Mas o que são zonas? Vamos a uma breve explicação.
Podemos entender as zonas como seções únicas, representadas por arquivos XML que salvam especificações de portas a serem abertas e bloqueadas. De acordo com a documentação do Firewalld, as zonas servem para definir o nível de confiança das conexões da rede. Com isso, podemos:
- predefinir serviços;
- definir portas e protocolos;
- bloquear mensagens de protocolo ICMP (Internet Control Message Protocol);
- mascarar endereços de rede;
- redirecionar portas para outro (ou mesmo) host; e
- acrescentar regras e condições ricas em detalhes.
Entendido! Agora, quais são as zonas disponíveis no Firewalld? Vamos à lista:
- drop
- faz com que apenas conexões de saída sejam permitidas;
- block
- tem a mesma função da zona drop, porém ela encaminha uma mensagem de erro;
- public
- permite aplicação de regras a computadores “públicos” para proteger a rede interna;
- external
- usada na aplicação de serviços a redes externas, contanto que a opção “masquerading” esteja habilitada;
- dmz
- configuram-se os computadores que tenham acesso limitado à rede interna;
- work
- especifica regras e condições para computadores inseridos no ambiente de trabalho;
- home
- função semelhante à zona work, porém voltada a redes domésticas;
- internal
- a “internal zone” permite a configuração de regras e execução de serviços para redes internas;
- trusted
- quando habilitada libera o acesso a toda e qualquer conexão de rede.
Percebe-se que cada uma das zonas do Firewalld nos possibilita criar políticas e regras altamente específicas. O mais legal é que tamanha complexidade não implica dificuldades no processo, conforme veremos no próximo exemplo.
Exemplo prático: bloquear o uso de HTTP numa rede corporativa
Se o administrador da rede quer manter a porta 88 (HTTP) habilitada apenas aos usuários sudo, deixando-a bloqueada aos demais colaboradores da empresa por razões de política de segurança, ele deve acessar a zona “work” e adicionar a regra. Exemplo:
$ firewalld-cmd --zone=work –remove-port=88/tcp
Acima, utilizei o comando do Firewalld para escolher a zona e, em seguida, aplicar a ação que restringe determinados usuários a navegarem somente por sites que adotam HTTPS.
Instalação do Firewalld no CentOS
Se você chegou até aqui, aposto que está gostando dos recursos presentes no Firewalld e considera testá-lo em sua máquina. Acertei? Então chegamos a um momento oportuno: faremos a instalação do firewall em um sistema CentOS ou RHEL.
Caso nenhum desses sistemas operacionais esteja instalado no seu computador, considere:
- montar uma máquina virtual usando o VirtualBox (ou similares); ou
- criar uma partição no HD e instalar a distro usando o pendrive.
Sem mais delongas, iniciemos o processo verificando se o iptables está instalado / habilitado no sistema. Digite:
# systemctl status iptables # systemctl stop iptables # systemctl mask iptables
Com o iptables desativado — ou constatada inexistência —, faça a instalação do Firewalld digitando a seguinte linha de comando:
# yum install firewalld -y
Sim, isso é tudo a se fazer por enquanto. Aplicando um só comando o Firewalld foi instalado, ativado e está rodando no modo padrão.
Três exemplos de configuração do Firewalld
Como falei, o programa está rodando sem quaisquer especificações do usuário. Que tal ajustarmos as configurações do Firewalld simulando uma rotina de trabalho? Abaixo, alguns exemplos.
Adicionar serviços a uma zona
Quando falamos em Firewalld, não podemos deixar de fora a lista de serviços disponíveis. Exemplos de serviços existentes no Firewalld:
Para consultar os demais serviços, digite a linha de comando:
$ firewall-cmd –get-services
Como podemos adicionar um serviço a uma zona? Quanto a isso não há segredo, basta usar o parâmetro –add-service= após selecionar a zona. Exemplo:
$ sudo firewall-cmd --zone=home --add-service=https
Contudo, se a sua ideia é tornar a configuração permanente, digite:
$ sudo firealld-cmd --zone=public --permanent --add-service=https
Criar uma zona própria
Por mais avançados que sejam os recursos do Firewalld, o profissional de redes está sujeito a implantar um serviço que fuja do convencional.
Logo, ainda que os serviços e as zonas padrões entreguem o suficiente na maioria dos casos, é possível criar tais elementos do seu próprio jeito — se preferir, conforme as necessidades da rede.
Resumindo, as instruções deste tópico servem para criação de uma zona customizada, cujas regras e serviços são adicionados pelo próprio usuário.
Para começar, vamos criar uma zona para o servidor de e-mail, a qual chamaremos “mailserver”. Digite:
$ sudo firewall-cmd --permanent --new-zone=mailserver
$ sudo firewall-cmd --permanent --get-zones
Use esta linha de comando para verificar se as zonas foram adicionadas com sucesso
$ sudo firewall-cmd --reload
Utilize caso a zona não esteja listada no firewall e, então, repita o comando anterior
Com a zona “mailserver” gerada, você pode começar a configurá-la adicionando serviços. Exemplo:
$ sudo firewalld-cmd --zone=mailserver --add-service=smtp $ sudo firewalld-cmd --zone=mailserver --add-service=smtps $ sudo firewalld-cmd --zone=mailserver --add-service=pop3 zone=mailserver --add-service=pop3s zone=mailserver --add-service=imap zone=mailserver --add-service=imaps
Definir uma zona padrão
Tornar uma zona padrão é um meio eficiente de economizar tempo quando as interfaces de rede podem ser configuradas em uma única zona. Supondo que a zona “home” tenha de funcionar como padrão:
$ firewall-cmd --set-default-zone=home
Esses foram três exemplos básicos que abrangem a maioria dos processos de gerenciamento do firewall. Aliás, ao ler este artigo, você percebeu que em termos de possibilidades o Firewalld é um prato cheio, não é mesmo?
Como ele consegue unir as funcionalidades avançadas à facilidade de uso, encare o aprendizado que obteve até aqui para aprofundar-se nos estudos dessa incrível ferramenta.
Não sabe o que fazer para construir uma sólida base de conhecimento avançado? Eu tenho a solução: visite agora a página dos Profissionais Linux.