Tabela de Conteúdos

7.4.1 UFW

O UFW (sigla em inglês para “Uncomplicated Firewall” ou “firewall descomplicado”) permite definir políticas de segurança de rede criando limitações ou permissões para o acesso a diversos serviços ou aplicações.

Instalação

root@server:~# apt install ufw

Configuração

Atenção

A configuração incorreta do firewall pode bloquear completamente o acesso remoto a um servidor. Antes de inserir um comando verifique que o que escreveu é exatamente o que pretende e quais os possíveis “efeitos secundários” indesejados!

Sugestão O UFW mantém uma lista das aplicações mais usuais que podem facilitar a configuração do firewall. Esta lista pode ser consultada com o comando ufw app list.

A configuração do ufw é feita através da linha de comandos. A configuração por omissão do ufw autoriza o nosso servidor a iniciar comunicações com o exterior (DEFAULT_OUTPUT_POLICY=“ACCEPT”), mas ignora qualquer tentativa de acesso ao servidor a partir do exterior (DEFAULT_INPUT_POLICY=“DROP”). Esta configuração impossibilita, por exemplo, o acesso remoto a um servidor.

Em primeiro lugar deverá ser garantido o acesso remoto ao servidor via ssh:

root@server:~# ufw allow SSH
Rules updated
Rules updated (v6)

É também conveniente ativar o registo de eventos:

root@server:~# ufw logging on
Logging enabled

Finalmente deverá ser ativado o firewall:

root@server:~# ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

A partir deste momento só será possível aceder remotamente ao servidor usando o protocolo ssh, que usa a porta 22. Será negado a acesso remoto a qualquer outro serviço existente no servidor.

Sugestão

Pode a qualquer altura desativar o ufw com o comando ufw disable.
Pode também apagar todas as regras do ufw com o comando ufw reset.

Verificação

Em qualquer altura é possível verificar o estado do firewall:

root@server:~# ufw status verbose
SStatus: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22/tcp (SSH)               ALLOW IN    Anywhere
22/tcp (SSH (v6))          ALLOW IN    Anywhere (v6)

Neste caso o firewall apenas aceita ligações a partir do exterior pela porta 22 (protocolo ssh).

Exemplos de configuração

Apenas a título de exemplo são listadas algumas configurações possíveis para um servidor. Use-as por sua conta e risco: declino qualquer responsabilidade pela sua utilização! Fica o aviso!!!

Para mais detalhes da configuração sugerida, consulte 2.1.1 Diagrama da Rede.

Os serviços utilizados neste guia são os seguintes:

Porta Serviço / Descrição Configuração ufw Referência
22 SSH / Secure Shell ufw allow SSH 2.3.2 Servidor Ssh
25 SMTP / Simple Mail Transfer Protocol ufw allow SMTP 5.2 Protocolo SMTP
587 SMTP / Email Message Submission ufw allow “Mail submission” 5.2 Protocolo SMTP
80 HTTP / Hypertext Transfer Protocol ufw allow WWW 4.1 Servidor HTTP
443 HTTPS / Hypertext Transfer Protocol over TLS/SSL ufw allow “WWW Secure” 4.1 Servidor HTTP
993 IMAPS / Internet Message Access Protocol over TLS/SSL ufw allow IMAPS 5.1 Protocolo IMAP

Exemplo 1: Serviços abertos a todas as redes (Internet e Intranet)

Estes serviços ssh e https podem aceitar ligações a partir de qualquer endereço. Os comandos para ativar esta configuração são os seguintes:

root@server:~# ufw allow SSH
Rules updated
Rules updated (v6)
root@server:~# ufw allow "WWW Secure"
Rules updated
Rules updated (v6)
root@server:~# ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
root@server:~# ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22/tcp (SSH)               ALLOW IN    Anywhere
443/tcp (WWW Secure)       ALLOW IN    Anywhere
22/tcp (SSH (v6))          ALLOW IN    Anywhere (v6)
443/tcp (WWW Secure (v6))  ALLOW IN    Anywhere (v6)

Exemplo 2: Serviços abertos apenas para a rede interna (Intranet)

Esta configuração aceita todo o tipo de ligações mas unicamente a partir do mesmo segmento de rede do servidor (192.168.1.0/24), como por exemplo no caso de uma rede interna ou Intranet. A rede deverá estar protegida do exterior através de outro firewall.

root@server:~# ufw allow from 192.168.1.0/24
Rules updated

Exemplo 3: Configuração mista (Intranet e Internet)

Neste exemplo é possível aceder a todos os serviços a partir da rede interna (192.168.1.0/24), mas do exterior só é possível aceder aos serviços ssh , http e https:

root@server:~# ufw allow from 192.168.1.0/24
Rules updated
root@server:~# ufw allow SSH
Rules updated
Rules updated (v6)
root@server:~# ufw allow "WWW Full"
Rules updated
Rules updated (v6)

A listagem da configuração é a seguinte:

root@server:~# ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing)
New profiles: skip

To                         Action      From
--                         ------      ----
Anywhere                   ALLOW IN    192.168.1.0/24
22                         ALLOW IN    Anywhere
80                         ALLOW IN    Anywhere
443                        ALLOW IN    Anywhere
22                         ALLOW IN    Anywhere (v6)
80                         ALLOW IN    Anywhere (v6)
443                        ALLOW IN    Anywhere (v6)

Referências