Tabela de Conteúdos
7.4.1 UFW
A instalação do 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-get install ufw
Configuraçã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!
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/tcp
É também conveniente ativar o registo de eventos:
root@server:~# ufw logging on
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.
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 Status: active Logging: on (low) Default: deny (incoming), allow (outgoing) New profiles: skip To Action From -- ------ ---- 22/tcp ALLOW IN Anywhere 22/tcp 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.
Exemplo 1: Serviços abertos a todas as redes (Internet e Intranet)
Estes serviços poderão aceitar ligações a partir de qualquer endereço.
Porta | Serviço / Descrição | Configuração ufw | Referência |
---|---|---|---|
22 | SSH / Secure Shell | ufw allow ssh/tcp | 2.3.2 Servidor Ssh |
25 | SMTP / Simple Mail Transfer Protocol | ufw allow smtp/tcp | 5.2.1 Servidor SMTP, 5.2.2 Servidor SMTP com autenticação SASL (apenas se configurado com suporte SASL) |
443 | HTTPS / Hypertext Transfer Protocol over TLS/SSL | ufw allow https/tcp | 2.3.2 Servidor Ssh |
993 | IMAPS / Internet Message Access Protocol over TLS/SSL | ufw allow imaps/tcp | 5.1.1 Servidor IMAP/IMAPS |
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 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 https 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)