Carregando...
Sem categoria

Seja o lorde dos firewalls do Linux usando iptables

O firewall é a ferramenta PRINCIPAL de proteção de seu computador contra ataques via rede e internet.

O que é um firewall? É simplesmente um software! MAS… que consegue olhar TODOS os pacotes de rede que trafegam pelo computador, TODOS mesmo.

O firewall olha cada pacote, um por um, e decide:

  • Vou deixá-lo passar
  • Vou simplesmente jogá-lo fora
  • Vou jogar fora e enviar uma mensagem de “comunicação rejeitada” para o remetente

Mas com base em quê o firewall toma essa decisão?
É VOCÊ quem decide as regras! É você quem configura o que o firewall joga fora e aceita.
Você pode filtrar os pacotes com, basicamente, 6 coisas:

  1. ip de origem do pacote
  2. porta de origem do pacote
  3. ip de destino do pacote
  4. porta de destino do pacote
  5. interface física de onde o pacote está trafegando
  6. rastreamento de conexão: esse pacote é novo? ele está iniciando uma nova conexão? ou é apenas a continuação de uma conexão já estabelecida?

O item 6 é uma das coisas que diferencia o Firewall da ACL (Access Control List). A ACL é stateless – não tem noção do que veio antes daquele pacote. O Firewall é stateful – ele sabe o que veio antes daquele pacote, portanto consegue dizer se o pacote é de uma conexão nova ou se é a resposta de uma conexão já aberta. Referência.


E no Linux? Quais firewalls temos à nossa disposição?

O Linux tem o supremo iptables. Ele é a base de praticamente todos os firewalls do Linux. Pra você ter uma ideia, ele é a base do UFW (Uncomplicated Firewall) que vêm com o Ubuntu – o UFW é só uma interface que facilita e traduz as configurações que se faz nele pra linguagem e comandos do iptables.


O restante desse artigo está em construção!

Uma coisa muito importante sobre a configuração do iptables: todos os comandos dados são perdidos quando o computador for reiniciado.

Para manter as configurações de firewall para sempre você tem algumas opções:

  • Opção que já vem instalada: iptables-save
  • Opção que precisa instalar: iptables-persistent
  • Opção que usa o systemd: criar um serviço para iniciar as regras automaticamente antes das interfaces de rede serem iniciadas.

Referências

Tutorial básico:
https://www.digitalocean.com/community/tutorials/iptables-essentials-common-firewall-rules-and-commands#saving-rules

Tutorial sobre listar, apagar e deletar regras:
https://www.digitalocean.com/community/tutorials/iptables-essentials-common-firewall-rules-and-commands#saving-rules

Tutorial mais completo:
https://www.booleanworld.com/depth-guide-iptables-linux-firewall/

Modelo simples de firewall no iptables (EXEMPLO MUITO BOM!):
https://blog.remontti.com.br/2435
Fazendo o firewall iniciar automaticamente usando systemctl (EXEMPLO MUITO BOM!):
https://blog.remontti.com.br/2478

Sobre não perder as configurações do iptables ao reiniciar (reboot):
https://www.thomas-krenn.com/en/wiki/Saving_Iptables_Firewall_Rules_Permanently

Debian Firewall:
https://wiki.debian.org/DebianFirewall

Descrição dos comandos do iptables:
https://www.vivaolinux.com.br/artigo/Manual-do-IPtables-Comentarios-e-sugestoes-de-regras

Rejeitar (REJECT) ou Ignorar (DROP) pacotes no firewall?
http://www.chiark.greenend.org.uk/~peterb/network/drop-vs-reject

Um script de firewall completo para uma rede corporativa – praticamente uma obra de arte
https://sempreupdate.com.br/iptables-script-completo-para-rede-corporativa-incluindo-lan-dmz-e-filtro-de-ataques/

Em que ordem as regras são aplicadas?

O iptables lê as regras de cima para baixo. Caso a regra se encaixe para o pacote recebido, o destino do pacote é definido (rejeitado, bloqueado ou aceito).

Adicionando/Removendo

-A
-I

Connection State ~ ctstate

  • NEW
    Nova conexão, recém aberta. Com ela é possível saber se a conexão se iniciou fora do seu PC ou dentro do seu PC
  • ESTABLISHED
    Se a conexão já foi estabelecida e o pacote é a continuação de um fluxo
  • RELATED
  • INVALID

-m conntrack –ctstate NEW,ESTABLISHED
-m conntrack –ctstate INVALID
-m conntrack –ctstate NEW,ESTABLISHED,RELATED

Porta de destino

–dport 1234

Protocolo

-p tcp
-p udp

Interface de Entrada

-i lo
-i tun0
-i eth0

Interface de Saída

-o lo
-o tun0
-o eth0

Ação

-j REJECT
-j ACCEPT
-j DROP

Deixe um comentário

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