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