Pesquisa de site

Comandos comuns do firewall UFW com exemplos


Um firewall é uma rede de controles de segurança que dita e filtra o tráfego dependendo das regras definidas. Em palavras simples, protege o sistema contra tráfego externo indesejado. Dependendo das regras de firewall definidas, o tráfego pode ser bloqueado ou permitido.

O kernel Linux fornece um subsistema conhecido como Netfilter. É responsável por decidir e manipular o tráfego de rede que entra e sai do servidor. Todas as soluções modernas de firewall Linux utilizam este sistema para filtragem de pacotes. Este sistema de filtragem de pacotes pode ser de pouca utilidade se nenhum usuário o gerenciar. É aqui que entra o Iptables. Quando um pacote chega ao sistema, ele é tratado pelo subsistema Netfilter, que decide se o aceita, manipula ou rejeita com base nas regras fornecidas pelo usuário através do iptables. Portanto, administradores de sistema e profissionais de Linux precisam do iptables para gerenciar seus firewalls. Para facilitar, existem muitas ferramentas front-end que podem ser usadas para simplificar essa tarefa. Algumas dessas ferramentas incluem Shorewall, Firewalld, ufw, nftables, gufw etc.

Firewall Descomplicado abreviado como ufw é a ferramenta de configuração de firewall padrão para sistemas baseados em Debian. Esta ferramenta é executada em cima do iptables para simplificar a configuração do firewall. Ele fornece uma maneira simples e fácil de criar regras de firewall baseadas em host IPv4 e IPv6. Embora o UFW não forneça funcionalidade completa de firewall por meio de sua CLI, ele ainda pode ser usado para adicionar e remover regras simples baseadas em host.

Abaixo está uma folha de dicas que captura todos os comandos comuns do Firewall UFW com exemplos. Isso pode servir como material de referência rápida para administradores de sistema que desejam configurar rapidamente regras de firewall em seus sistemas.

Instale o UFW em seu sistema Linux

UFW é comum em sistemas baseados em Debian. No entanto, esta ferramenta ainda pode ser instalada e usada em qualquer outro sistema Linux. Os comandos abaixo podem ser usados para instalar o UFW no Linux.

##On debian-based Systems
sudo apt update
sudo apt install ufw

##On RHEL-based Systems
sudo yum install epel-release
sudo yum install ufw

##On Fedora
sudo dnf install ufw

##On OpenSuse
sudo zypper install ufw

##On Arch Linux
sudo pacman -S ufw

##On Alpine Linux
sudo apk add ufw

Verifique a instalação usando:

$ ufw version
ufw 0.35
Copyright 2008-2015 Canonical Ltd.

1.1. Iniciar, ativar/desativar UFW

Depois de instalado, certifique-se de que o serviço esteja iniciado e habilitado:

sudo systemctl enable --now ufw

Verifique o status do serviço:

$ systemctl status ufw
● ufw.service - Uncomplicated firewall
     Loaded: loaded (/usr/lib/systemd/system/ufw.service; enabled; vendor preset: disabled)
     Active: active (exited) since Sun 2023-09-17 11:20:36 CEST; 4s ago
       Docs: man:ufw(8)
             man:ufw-framework(8)
             file://usr/share/doc/ufw/README
    Process: 72156 ExecStart=/usr/libexec/ufw/ufw-init start (code=exited, status=0/SUCCESS)
   Main PID: 72156 (code=exited, status=0/SUCCESS)
        CPU: 80ms

Você também pode verificar o status com o comando:

$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
SSH                        ALLOW       Anywhere                  
224.0.0.251 mDNS           ALLOW       Anywhere                  
SSH (v6)                   ALLOW       Anywhere (v6)             
ff02::fb mDNS              ALLOW       Anywhere (v6) 

Se não estiver ativo, habilite-o com:

$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

Para desativá-lo, use:

sudo ufw disable

Comandos comuns do firewall UFW com exemplos

Depois de instalado e ativado, você pode usar o UFW para definir as regras de firewall desejadas em seu sistema. Abaixo estão os comandos comuns incluídos.

2.1. Bloquear endereços IP

O UFW permite aos usuários criar uma regra que bloqueia todas as conexões provenientes de um endereço IP específico. Para negar o tráfego de um endereço específico, use o comando com a sintaxe abaixo:

sudo ufw deny from <IP_Address>

No comando, você precisa substituir seu endereço IP corretamente. Por exemplo:

$ sudo ufw deny from 192.168.200.51
Rule added

No comando acima, configuramos o sistema para eliminar todas as conexões da fonte 192.168.200.51. Para verificar a regra adicionada, execute:

$ sudo ufw status

To                         Action      From
--                         ------      ----
224.0.0.251 mDNS           ALLOW       Anywhere                  
Anywhere                   DENY        192.168.200.51            

2.2. Bloquear uma sub-rede

Além de bloquear um único endereço IP, você também pode bloquear uma sub-rede inteira. Para conseguir isso, você usa o comando com a sintaxe:

sudo ufw deny from <subnet>

Por exemplo:

$ sudo ufw deny from 192.168.200.0/24
Rule added

2.3. Bloquear uma interface de rede

Você pode bloquear conexões de entrada de um endereço IP ou sub-rede para uma interface de rede específica. Para conseguir isso, use o comando:

sudo ufw deny in on <interface_name> from  <IP_Address>

Por exemplo:

$ sudo ufw deny in on eth0 from 192.168.200.51
Rule added

2.4. Permitir endereço IP/interface de rede

Para permitir o tráfego de um endereço específico, você pode usar o comando abaixo, substituindo os valores quando necessário.

sudo ufw allow from <IP_Address>

Por exemplo:

sudo ufw allow from 192.168.200.59

Veja a regra:

$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
224.0.0.251 mDNS           ALLOW       Anywhere                  
Anywhere                   DENY        192.168.200.51            
Anywhere on eth0           DENY        192.168.200.51            
Anywhere on ens18          DENY        192.168.200.51            
22                         ALLOW       Anywhere                  
Anywhere                   ALLOW       192.168.200.59            
SSH (v6)                   ALLOW       Anywhere (v6)             
ff02::fb mDNS              ALLOW       Anywhere (v6)             
22 (v6)                    ALLOW       Anywhere (v6)  

Para permitir o tráfego de entrada de um IP em uma interface específica, use:

sudo ufw allow in on <interface_name> from <IP_Address>

Por exemplo:

$ sudo ufw allow in on eth0 from 192.168.200.51
Rule updated

2.5. Ativar/desativar perfil de aplicativo

O UFW permite que os usuários bloqueiem ou permitam o tráfego de um aplicativo. Para visualizar a lista de perfis de aplicativos disponíveis, use:

$ sudo ufw app list
Available applications:
  AIM
  Bonjour
  CIFS
  DNS
  Deluge
  IMAP
  IMAPS
  IPP
  Icecream
  KDE Connect
  KTorrent
  Kerberos Admin
  Kerberos Full
  Kerberos KDC
  Kerberos Password
  LDAP
  LDAPS
  LPD
  MSN
  MSN SSL
  Mail submission
  NFS
  POP3
  POP3S
  PeopleNearby
  SMTP
  SSH
......

Você também pode filtrar um determinado aplicativo, por exemplo, Nginx:

$ sudo ufw app list | grep Nginx
  Nginx Full
  Nginx HTTP
  Nginx HTTPS

Para ativar os pforiles de um aplicativo, você precisa fornecer o nome do perfil do aplicativo no comando:

sudo ufw allow “<application_profile>”

Por exemplo:

$ sudo ufw allow "OpenSSH"
ufw allow "OpenSSH"
Rules updated
Rules updated (v6)

Para visualizar os perfis habilitados, execute:

$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
5432/tcp                   ALLOW       Anywhere                  
OpenSSH                    ALLOW       Anywhere                  
5432/tcp (v6)              ALLOW       Anywhere (v6)             
OpenSSH (v6)               ALLOW       Anywhere (v6)    

Para desativar um perfil de aplicativo, use o comando abaixo, substituindo variáveis quando necessário:

sudo ufw delete allow "<application_profile>”

Por exemplo, o Nginx tem dois perfis, Nginx Full que permite conexões HTTP e HTTPS e Nginx HTTPS que permite apenas conexões HTTPS. Podemos desabilitar o perfil Nginx Full habilitado e habilitar o perfil HTTPS apenas com os comandos:

##Disable the Nginx Full profile
sudo ufw delete allow "Nginx Full"

##Enable Nginx HTTPs
sudo ufw allow "Nginx HTTPS"

2.6. Permitir/bloquear tráfego em uma porta

Além de ativar/desativar o perfil do aplicativo, o UFW permite bloquear/permitir tráfego para uma porta específica. O comando usado para isso possui a sintaxe abaixo:

sudo ufw allow <port_number>

Por exemplo:

sudo ufw allow 80

Você também pode o nome do serviço. Por exemplo:

##For HTTP
sudo ufw allow http

##For HTTPS
sudo ufw allow https

Para negar qualquer tráfego de saída em uma porta, use:

sudo ufw deny out <port_number>

Por exemplo, descartando todo o tráfego de saída na porta 25 para SMTP, use:

sudo ufw deny out 25

Você pode negar o tráfego de um endereço específico em uma determinada porta usando:

sudo ufw deny from <ip address> to <protocol> port <port number>

Por exemplo:

sudo ufw deny from 192.168.20.51 to any port 3306

2.7. Permitir tráfego na porta de endereços específicos

Também é possível permitir o tráfego em uma porta de um endereço específico. Para esse caso, você terá o comando como:

##From IP address
sudo ufw allow from <IP_Address> proto tcp to any port <port_number>

##Form subnet
sudo ufw allow from <subnet> proto tcp to any port <port_number>

Por exemplo, permitindo SSH de um endereço específico, você terá o comando como:

sudo ufw allow from 192.168.200.51 proto tcp to any port 22

Para permitir a conexão MySQL de uma sub-rede específica:

sudo ufw allow from 192.168.200.0/24 proto tcp to any port 3306

2.8. Como excluir uma regra

Existem cenários em que você precisa excluir uma regra set fireall no UFW. Para conseguir isso, comece listando as regras disponíveis:

$ sudo ufw status numbered
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 5432/tcp                   ALLOW IN    Anywhere                  
[ 2] OpenSSH                    ALLOW IN    Anywhere                  
[ 3] Nginx HTTPS                ALLOW IN    Anywhere                  
[ 4] 80                         ALLOW IN    Anywhere                  
[ 5] 80/tcp                     ALLOW IN    Anywhere                  
[ 6] 25                         DENY OUT    Anywhere                   (out)
[ 7] 3306                       DENY IN     192.168.20.51             
[ 8] 3306/tcp                   ALLOW IN    192.168.200.0/24          
[ 9] Anywhere                   ALLOW IN    192.168.200.51            
[10] 5432/tcp (v6)              ALLOW IN    Anywhere (v6)             
[11] OpenSSH (v6)               ALLOW IN    Anywhere (v6)             
[12] Nginx HTTPS (v6)           ALLOW IN    Anywhere (v6)             
[13] 80 (v6)                    ALLOW IN    Anywhere (v6)             
[14] 80/tcp (v6)                ALLOW IN    Anywhere (v6)             
[15] 25 (v6)                    DENY OUT    Anywhere (v6)              (out)

Para excluir uma regra desejada, use o comando com a sintaxe abaixo

##Using the target specification
sudo ufw delete <action> from <target>

##Using the Rule number
sudo ufw delete <rule_number>

Por exemplo, excluindo a regra permitir entrada de 192.168.200.51, o comando será:

sudo ufw delete allow from 192.168.200.51

Você também pode excluir a regra fornecendo seu número. Por exemplo:

sudo ufw delete 9

Verifique as alterações:

$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
5432/tcp                   ALLOW       Anywhere                  
OpenSSH                    ALLOW       Anywhere                  
Nginx HTTPS                ALLOW       Anywhere                  
80                         ALLOW       Anywhere                  
80/tcp                     ALLOW       Anywhere                  
3306                       DENY        192.168.20.51             
3306/tcp                   ALLOW       192.168.200.0/24          
5432/tcp (v6)              ALLOW       Anywhere (v6)             
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Nginx HTTPS (v6)           ALLOW       Anywhere (v6)             
80 (v6)                    ALLOW       Anywhere (v6)             
80/tcp (v6)                ALLOW       Anywhere (v6)             

25                         DENY OUT    Anywhere                  
25 (v6)                    DENY OUT    Anywhere (v6)

Conclusão

Isso marca o fim deste guia sobre como instalar e usar o UFW para configurar as regras de firewall baseadas em host. Este guia fornece apenas os comandos básicos e comuns usados. Para explorar mais, visite a página de documentação do UFW.

Ver mais:

  • Como abrir uma porta no Firewall do Windows Server
  • Instale e configure o Firewalld no Debian
  • Instale e use o Firewall CSF no RHEL/CentOS

Artigos relacionados: