Firewall – Aula 01

Introdução

O firewall é uma função de extrema importância em uma rede, ele funciona como um muro de proteção. Geralmente dividindo sua Rede, que é um mundo pequeno e controlado, da Internet que é um universo em expansão sem controles e sem limites.

Algumas vezes divide sua Rede da sua própria DMZ, zona desmilitarizada onde geralmente ficam seus servidores que são protegidos da Internet e da sua Rede, e também da Internet.

O firewall pode ser um hardware específico, onde o programa de controle e análise está instalado diretamente em sua memória, ou pode ser uma aplicação em um sistema operacional.

Sua principal função é analisar os pacotes que passam por ele, assim sendo o firewall faz função de Gateway para seus clientes. Esta análise do pacote de dados é feita em seu cabeçalho e na área de dados, onde são analisado basicamente: os endereços de origem e destino, as portas de origem e destino, as flags TCP (SYN, ACK, URG, RST, FIN, PSH) e os dados transmitidos pelo pacote.

TCP_header

 

Conforme vemos na figura acima os dados do pacote são bem específicos e assim facilitam ao firewall analisar e comparar a informação com uma regra existente.

Os programas de firewall geralmente são criados para trabalhar da seguinte forma: Bloqueia TUDO e libera apenas o necessário. Isso porque é mais fácil, e mais lógico, bloquear tudo no universo de coisas existentes na internet e liberar apenas aquilo que sua Rede precisa fazer fora dela do que o inverso.

Iptables

O iptables é a aplicação de firewall do GNU/Linux desde o kernel 2.4. Mas na verdade a filtragem de pacotes já é nativa do kernel, todas as funções que precisamos para análise e comparação de dados são funções do kernel GNU/Linux na parte de Netfilter. O programa iptables na verdade permite que criemos e manipulemos regras que utilizam estas funções.

Tabelas

O iptables utiliza tabelas e cadeias para organizar suas regras. As tabelas são os locais onde as regras são criadas em razão do seu tipo.

Tabela filter
As regras criadas para tratar, liberar ou bloquear, portas e/ou endereços são criadas na tabela filter.

Tabela nat
As regras criadas para alterar portas e/ou endereços, sejam de origem ou de destino, são criadas na tabela nat.

Tabela mangle
As regras criadas para marcar pacotes, alterar cabeçalho e datagrama dos pacotes são criadas na tabela mangle.

Cadeias

As cadeias são locais onde as regras são colocadas de acordo com a direção e posição da comunicação.

INPUT

Cadeia das comunicações que são destinadas a máquina firewall.

OUTPUT

Cadeias das comunicações que são originadas na máquina firewall

FORWARD

Cadeia das comunicações que passam pelo firewall

PREROUTING

Cadeia que trata as comunicações antes de qualquer outra cadeia do firewall

POSTROUTING

Cadeia que trata das comunicações após passar pelas cadeias do firewall.

Tráfego de dados

Um importante conhecimento que precisamos ter ao criar um firewall é como os dados são trafegados entre firewall e seus extremos. Seja Rede e Internet, Rede e DMZ ou DMZ e Internet o firewall está no meio de uma comunicação e precisamos entender como ele vê cada pacote.

 

trafego-firewall

 

Como o tráfego é visto pelo firewall

Podemos ver pela figura acima que:

Comunicações destinadas a máquina Firewall são tratados por ele na Cadeia de INPUT. Estas comunicações podem ser:

  • Requisições feitas a serviços executados no firewall:
    • ssh para o firewall
    • browser acessando o firewall
    • ping para o firewall
  • Respostas de requisições que o firewall fez a outras máquinas:
    • resposta de ping feito do firewall para outra máquina
    • firewall recebendo uma página web que ele solicitou
    • download feito no firewall vindo de outra máquina

Comunicações originadas da máquina Firewall são tratadas por ele na Cadeia OUTPUT. Estas comunicações podem ser:

  • Requisições feitas pelo firewall a outras máquinas:
    • ping do firewall para outra máquina
    • ssh do firewall para outra máquina
    • firewall solicitando uma página web
  • Respostas do firewall a requisições feitas por outras máquinas:
    • resposta do ping feito por outra máquina
    • resposta do servidor web executado no firewall
    • resposta do servidor ssh executado no firewalll

Comunicações que passam pela máquina Firewall são tratadas por ele na Cadeia FORWARD. Estas comunicações podem ser:

  • Requisições feitas da Rede Interna para Internet
  • Respostas da Internet para Rede Interna
  • Requisições feitas pela Internet para Rede Interna
  • Respostas da Rede Interna para Internet

A localização de onde uma regra deve ser inserida é essencial para um firewall funcional.

Estado das Conexões

Além de verificar portas e endereços ao analisar uma regra o iptables também verifica o estado das conexões, sendo um statefull firewall ele fornece uma maior capacidade de análise e proteção de uma rede.

Veja no exemplo abaixo como funcionam as comunicações (sem som):

 

Como mostra no vídeo acima o cliente inicia uma comunicação com o servidor, essa comunicação é nova para os dois e seu estado é NEW.

Ao trocar dados com o servidor a conexão está estabelecida, ou seja, STABLISHED. Toda conexão que já passou da etapa de NEW é uma conexão STABLISHED até ser finalizada.

Toda conexão iniciada com uma porta que esteja relacionada com uma conexão já existente é um conexão relatada, ou seja, RELATED. O FTP é um serviço que abre duas conexões em cada host e muitas vezes a porta da segunda conexão é aleatória. Ele utiliza o módulo ip_conntrack_ftp para isso. Este tipo de conexão é muito difícil de acontecer, é um tipo de conexão que o administrador não vê muito.

Aula Vídeo:
https://player.vimeo.com/video/127675698