# FirewallD - Gerenciamento de Firewall

O **FirewallD** é uma ferramenta de gerenciamento de firewall padrão para sistemas operacionais Linux em distribuições como Fedora, Red Hat e CentoOS. Ele atua como um *front-end* para o *framework* de filtragem de pacotes do kernel Linux, conhecido como **netfilter**.

#### <span style="color: #000080;">FirewallD - Conceito</span>

Esse firewall possui algumas regras padrão e trabalha com o conceito de zonas onde a liberação de serviços é feito dentro delas.

A tabela abaixo demonstra como está configurado o firewall da rede após a instalação do sistema operacional:

<table border="1" id="bkmrk-regra-comportamento-" style="border-collapse: collapse; width: 100%;"><tbody><tr><td style="width: 13.3333%;">**Regra** </td><td style="width: 86.6667%;">**Comportamento**</td></tr><tr><td style="width: 13.3333%;">INPUT</td><td style="width: 86.6667%;">Liberado o acesso conexões do tipo RELATED,ESTABLISHED.</td></tr><tr><td style="width: 13.3333%;">FORWARD</td><td style="width: 86.6667%;">Aceita apenas conexões do tipo RELATED,ESTABLISHED.</td></tr><tr><td style="width: 13.3333%;">OUTPUT</td><td style="width: 86.6667%;">Não possui restrições.</td></tr></tbody></table>

#### <span style="color: #000080;">Zonas</span>

O firewalld gerencia um grupo de regras conhecido como zonas. As zonas definem o tipo de tráfego que será permitido baseado no nível de confiança da rede onde o seu servidor está conectado. Cada zona está atrelada a uma interface de rede existente no servidor.

O comando abaixo lista as zonas existentes:

```shell
firewall-cmd --get-zones
```

Abaixo são mostradas as zonas existentes no firewalld em ordem de nível de confiança:

<table border="1" id="bkmrk-zona-descri%C3%A7%C3%A3o-drop-" style="border-collapse: collapse; width: 100%; height: 295px;"><tbody><tr style="height: 29px;"><td style="width: 16.5432%; height: 29px;">**Zona** </td><td style="width: 83.4568%; height: 29px;">**Descrição**</td></tr><tr style="height: 29px;"><td style="width: 16.5432%; height: 29px;">drop</td><td style="width: 83.4568%; height: 29px;">Todos os pacotes são descartados.</td></tr><tr style="height: 29px;"><td style="width: 16.5432%; height: 29px;">block</td><td style="width: 83.4568%; height: 29px;">Todos os pacotes são rejeitados.</td></tr><tr style="height: 29px;"><td style="width: 16.5432%; height: 29px;">public</td><td style="width: 83.4568%; height: 29px;">Rede que você não conhece, pública.</td></tr><tr style="height: 20px;"><td style="width: 16.5432%; height: 20px;">external</td><td style="width: 83.4568%; height: 20px;">Rede externa onde o servidor com o firewalld funciona como um</td></tr><tr style="height: 11px;"><td style="width: 16.5432%; height: 11px;">gateway</td><td style="width: 83.4568%; height: 11px;">para a rede interna. É configurada com mascaramento para manter a privacidade da rede interna.</td></tr><tr style="height: 17px;"><td style="width: 16.5432%; height: 17px;">internal</td><td style="width: 83.4568%; height: 17px;">É a parte interna da rede. Equipamentos nessa rede possuem um nível maior de confiança e serviços adicionais estão disponíveis.</td></tr><tr style="height: 10px;"><td style="width: 16.5432%; height: 10px;">dmz</td><td style="width: 83.4568%; height: 10px;">São equipamentos isolados, ou seja, que não devem possuir acesso a sua rede. Apenas algumas conexões de entrada para esses equipamentos são permitidas.</td></tr><tr style="height: 29px;"><td style="width: 16.5432%; height: 29px;">work</td><td style="width: 83.4568%; height: 29px;">Equipamentos de trabalho com liberação de serviços adicionais.</td></tr><tr style="height: 46px;"><td style="width: 16.5432%; height: 46px;">home</td><td style="width: 83.4568%; height: 46px;">Equipamentos de casa. São dispositivos mais conhecidos e  
confiáveis e que possuem liberação para um pouco mais de serviços que a zona work.</td></tr><tr style="height: 46px;"><td style="width: 16.5432%; height: 46px;">trusted</td><td style="width: 83.4568%; height: 46px;">Equipamentos de confiança. Praticamente todos os serviços estão disponíveis para os equipamentos nesta zona.</td></tr></tbody></table>

#### <span style="color: #000080;">Listar as regras existentes</span>

O comando abaixo lista todas as regras existentes no serviço firewalld:

```VBScript
firewall-cmd --list-all
```

Se desejar listar apenas as regras de uma determinada zona utilize a opção –zone:

```shell
firewall-cmd –zone=public --list-all
```

#### <span style="color: #000080;">Liberar portas de entrada</span>

Para modificar as regras de entrada do firewall do Fedora, utilizamos o comando firewall-cmd.

No exemplo abaixo é demonstrado como liberar as portas 80(TCP) e 443(TCP) para acesso da rede pública, de forma permanente, para um servidor HTTP através da linha de comando:

```shell
firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --set-default-zone=public
firewall-cmd --reload
```

onde:

<table border="1" id="bkmrk---permanent-adiciona" style="border-collapse: collapse; width: 100%;"><tbody><tr><td style="width: 18.0247%;">--permanent</td><td style="width: 81.9753%; text-align: justify;">Adiciona a regra de forma permanente, ou seja, após reiniciar o filtro as regras permanecerão. Se for omitida esta opção as regras são válidas até o firewalld ser reiniciado.</td></tr><tr><td style="width: 18.0247%;">--zone=public</td><td style="width: 81.9753%; text-align: justify;">É a zona pública não confiável. São endereços que você não conhece mas podem ser autorizados caso a caso.</td></tr><tr><td style="width: 18.0247%;">--add-port=80/tcp</td><td style="width: 81.9753%; text-align: justify;">Informação da porta e protocolo que serão adicionados na zona public.</td></tr><tr><td style="width: 18.0247%;">--reload</td><td style="width: 81.9753%; text-align: justify;">Recarrega as regras mantendo o estado das conexões.</td></tr><tr><td style="width: 18.0247%;">--set-default-zone=public</td><td style="width: 81.9753%; text-align: justify;">Define a zona public como a padrão a ser utilizada.</td></tr></tbody></table>

O exemplo abaixo demonstra como liberar a porta SSH para o servidor Linux:

```shell
firewall-cmd --permanent --zone=public --add-port=22/tcp
firewall-cmd --set-default-zone=public
firewall-cmd --reload
```

#### <span style="color: #000080;">Liberando um host ou uma rede</span>

Abaixo é demonstrado como liberar o acesso total ao servidor para a rede cuja origem é 192.168.1.0/24:

```VBScript
firewall-cmd --permanent --zone=public --add-source=127.0.0.1/8
firewall-cmd --reload
```

<table border="1" id="bkmrk---permanent-adiciona-0" style="border-collapse: collapse; width: 100%;"><tbody><tr><td style="width: 25.3086%;">--permanent</td><td style="width: 74.6914%;">Adiciona a regra de forma permanente, ou seja, após reiniciar o filtro as regras permanecerão. Se for omitida esta opção as regras são válidas até o firewalld ser reiniciado.</td></tr><tr><td style="width: 25.3086%;">--zone=public</td><td style="width: 74.6914%;">É a zona pública não confiável. São endereços que você não conhece mas podem ser autorizados caso a caso.</td></tr><tr><td style="width: 25.3086%;">--add-source=192.168.1.0/24</td><td style="width: 74.6914%;">Informação da rede ou host que serão adicionados na zona public.</td></tr><tr><td style="width: 25.3086%;">--reload</td><td style="width: 74.6914%;">Recarrega as regras mantendo o estado das conexões.</td></tr></tbody></table>

#### <span style="color: #000080;">Configurando o firewalld para agir como NAT</span>

Para essa função faz-se necessário ter pelo menos 2 interfaces de rede no servidor, uma que faça a conexão com a rede pública e outra a rede interna.

No exemplo abaixo, a interface eth0 está conectada na rede pública e a eth1 na rede interna:

```shell
firewall-cmd --permanent –zone=internal –add-interface=eth1
firewall-cmd –permanent –zone=public -add-masquerade
firewall-cmd --reload
```

<table border="1" id="bkmrk---permanent-adiciona-1" style="border-collapse: collapse; width: 100%;"><tbody><tr><td style="width: 19.5062%;">--permanent</td><td style="width: 80.4938%;">Adiciona a regra de forma permanente, ou seja, após reiniciar o filtro as regras permanecerão. Se for  
omitida esta opção as regras são válidas até o firewalld ser reiniciado.</td></tr><tr><td style="width: 19.5062%;">--zone=public  
--zone=internal</td><td style="width: 80.4938%;">Selecionamos a zona public para fazer o mascaramento e a internal para informar a rede interna.</td></tr><tr><td style="width: 19.5062%;">--add-masquerade</td><td style="width: 80.4938%;"> Adiciona o mascaramento na zona selecionada.</td></tr><tr><td style="width: 19.5062%;">--reload</td><td style="width: 80.4938%;">Recarrega as regras mantendo o estado das conexões.</td></tr></tbody></table>

#### <span style="color: #000080;">Configurando o firewalld para Port Forward</span>

Para redirecionar portas da rede externa para um endereço da rede interna, utilize os comandos abaixo:

```VBScript
firewall-cmd --permanent --zone=public –add-forward-port=port=443:proto=tcp:toport=443:toaddr=192.168.1.11
firewall-cmd --reload
```

<table border="1" id="bkmrk---permanent-adiciona-2" style="border-collapse: collapse; width: 100%; height: 199px;"><tbody><tr style="height: 80px;"><td style="width: 21.8519%; height: 15px;">--permanent</td><td style="width: 78.1481%; height: 15px;">Adiciona a regra de forma permanente, ou seja, após reiniciar o filtro as regras permanecerão. Se for omitida esta opção as regras são válidas até o firewalld ser reiniciado.</td></tr><tr style="height: 63px;"><td style="width: 21.8519%; height: 10px;">--zone=public</td><td style="width: 78.1481%; height: 10px;">É a zona pública não confiável. São endereços que você não conhece mas podem ser autorizados caso a caso.</td></tr><tr style="height: 29px;"><td style="width: 21.8519%; height: 29px;">--add-forward-port=</td><td style="width: 78.1481%; height: 29px;">Ativa a regra para o port forward.</td></tr><tr style="height: 29px;"><td style="width: 21.8519%; height: 29px;">port=443</td><td style="width: 78.1481%; height: 29px;">Porta de origem.</td></tr><tr style="height: 29px;"><td style="width: 21.8519%; height: 29px;">proto=tcp</td><td style="width: 78.1481%; height: 29px;">Protocolo de origem.</td></tr><tr style="height: 29px;"><td style="width: 21.8519%; height: 29px;">toport=443</td><td style="width: 78.1481%; height: 29px;">Porta de destino.</td></tr><tr style="height: 29px;"><td style="width: 21.8519%; height: 29px;">toaddr=192.168.1.11</td><td style="width: 78.1481%; height: 29px;">IP de destino na rede interna.</td></tr><tr style="height: 29px;"><td style="width: 21.8519%; height: 29px;">--reload</td><td style="width: 78.1481%; height: 29px;">Recarrega as regras mantendo o estado das conexões.</td></tr></tbody></table>

- - - - - -

#### <span style="color: #003366;">Contato</span>

<span style="color: #003366;">**Monsta Tecnologia Ltda**</span>  
Site: [http://www.monsta.com.br](http://www.monsta.com.br)  
Downloads: [http://www.monsta.com.br/download.html](http://www.monsta.com.br/download.html)  
E-mail: <contato@monsta.com.br>

- - - - - -

[![image-1645214142023.png](https://wiki.monsta.com.br/uploads/images/gallery/2022-02/scaled-1680-/image-1645214142023.png)](https://wiki.monsta.com.br/uploads/images/gallery/2022-02/image-1645214142023.png)