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.
root@server:~# apt install ufw
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!
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.
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
.
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).
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 |
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)
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
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)