Baby, Light my Firewall

Quando era usuário do SO da Microsoft, primeira coisa que eu fazia após formatar o HD e reinstalar o sistema – coisa que acontecia com bastante frequência – era instalar o firewall e o antivírus, trocar o Internet Explorer pelo Mozilla Firefox, e só depois conectar à Internet para navegar, fazer atualizações e downloads. Quando troquei pelo Linux, pude esquecer de tudo isso… até umas poucas semanas atrás. Resulta que alguns colegas começaram a brincar de hacker e então foi preciso tomar algumas precauciones. Se eu facilitava demais, eles não iriam aprender muita coisa, concorda?

O assunto hoje não vai ser antivírus, que tem pro Linux também, claro, mas sim firewalls. Existe iptables que permite programar as tabelas do firewall a nível do Kernel, extremamente potente e flexível mas nada fácil de se mexer com ele. Uma alternativa descomplicada é UFW (Uncomplicated Firewall).

To GUI or not to GUI

UFW é um frontend para configurar as iptables de forma simples, em línea de comandos; e GUFW é um frontend para fazer isso na interface gráfica. Questão de gosto. Nós preferimos fazer pelo terminal, essa telinha preta tem alguma coisa que seduz a gente.

Para instalar UFW no Debian, Mint, Ubuntu, etc, vamos executar o seguinte comando:

$ sudo apt install ufw

Agora precisamos definir o que pode entrar e o que pode sair. Em principio queremos impedir qualquer acesso ao nosso sistema, ao tempo que nós queremos poder acessar tudo lá fora:

$ sudo ufw default allow outgoing
$ sudo ufw default deny incoming

Paranormal Firewall: indo além do usuário “normal”

Para um computador e usuário “normais”, isso seria o suficiente. O nosso firewall estaria bloqueando qualquer acesso externo, enquanto nós poderíamos acessar Internet livremente.

Mas, se estivermos configurando o firewall de um servidor, ou precisarmos acessar a nossa máquina de forma remota, precisaremos abrir algumas portas pro exterior. Por exemplo:

$ sudo ufw allow ssh
$ sudo ufw allow 80/tcp

No primeiro exemplo, abrimos a porta 22 para poder acessar o nosso computador pelo protocolo Secure Shell; no segundo, se tivermos um servidor web Apache ou Nginx, ele ficará escutando na porta 80 por requisições web. Como vocês perceberam, podemos usar o nome do serviço (SSH) ou o número da porta (22).

Inclusive, poderíamos autorizar apenas uma IP específica para realizar o acesso, aumentando assim a segurança do sistema:

$ sudo ufw allow from 192.168.1.100 to any port 22

Se não lembrar do nome ou número da porta de um determinado serviço, pode listar eles:

$ less /etc/services

ou filtrar por nome ou número de porta, dependendo o que você já conhece e o que você quer saber:

$ cat /etc/services | grep mysql
$ cat /etc/services | grep 3306

Para remover uma regra:

$ sudo ufw delete allow 80

E para conhecer como está ficando a nossa configuração:

$ sudo ufw status verbose

Status: inactive
To Action From
-- ------ ----
22 ALLOW Anywhere
80/tcp ALLOW Anywhere
22 (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)

Finalmente, precisamos ativar o firewall para as regras serem aplicadas e garantir que o mesmo continuará ativo após cada reboot.

Aqui é importante levar em consideração que, se estivermos configurando um servidor via conexão ssh e ativarmos UFW antes de adicionar uma regra que habilite a porta 22, nós também seremos barrados, vamos perder a conexão e não vamos poder retomá-la (veja acima como habilitar o acesso)

$ sudo ufw enable

Se por algum motivo precisarmos desativá-lo:

$ sudo ufw disable

Deixa o gato cuidar dos logs

Se quisermos consultar os logs do UFW para ter uma ideia de como a nossa “parede de fogo” está trabalhando, é só mandar o “gato” dar uma olhada:

$ sudo cat /var/log/ufw.log

Vamos encontrar várias linhas nesse formato:

Oct 28 01:20:34 S400CA kernel: [ 5617.418803] [UFW BLOCK] IN=wlp2s0 OUT= MAC=dc:55:de:90:45:8f:20:1d:3f:fa:94:9c:08:00 SRC=95.240.248.4 DST=192.168.1.121 LEN=129 TOS=0x00 PREC=0x00 TTL=47 ID=0 DF PROTO=UDP SPT=6889 DPT=51413 LEN=109

Perceba os seguintes fragmentos:

O UFW tem realizado um bloqueio [UFW BLOCK], na interface WiFi IN=wlp2s0, os MACs combinados da origem e o destino MAC=dc:55:de:90:45:8f:20:1d:3f:fa:94:9c:08:00, a IP de origem SRC=95.240.248.4, e a IP destino DST=192.168.1.121.

Esse logging, é claro, pode ser configurado para ser mais ou menos “verbose” (detalhado).

$ sudo ufw logging low|medium|high

Se você tiver curiosidade de saber quanto trabalho você poupou, e que de outro modo devia ter sido feito na unha, veja a saída desse comando:

$ sudo ufw show raw

Ainda que, ativar o firewall não vai tornar o nosso sistema Linux invulnerável, é mais uma camada de segurança e não custa nada, a configuração básica são apenas dois comandos.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *