Firewall MikroTik - Parte Capítulo 4 (Entendendo Redes TCP/IP com MikroTik - Teoria e prática)

MikroTik (MIKROTIK.COM, 2017), destaca que o RouterOS tem recursos de filtragem e marcação de pacotes IP, que estão agrupados em seu firewall, podendo ser configurado o uso do terminal, ou do Winbox. Com ele é possível a implementação de firewalls e de gateways com suporte a NAT (Network Address Translation) (discutiremos mais adiante com detalhes).

De acordo com MikroTik (MIKROTIK.COM, 2017), suas principais características são:

·         Infraestrutura flexível e extensível;

·         Filtragem de pacotes e sem estado (IPv4 e IPv6);

·         Tradução de todos os tipos de endereço de rede e de porta (NAT IPv4);

·         Filtragem de protocolos peer-to-peer;

·         Classificação do tráfego por:

·         Endereço MAC de origem;

·         Endereços IP (rede ou lista) e tipos de endereço (broadcast, local, multicast e unicast) de alcance portuário;

·         Protocolos IP;

·         Opções de protocolo (tipo ICMP e campos de código, sinalizadores TCP, opções de IP e MSS);

·         Interface, o pacote chegou ou passou por margem interna e marcas de conexão;

·         Byte DSCP;

·         Conteúdo de pacotes;

·         Taxa a que os pacotes chegam e números de sequência;

·         Tamanho do pacote;

·         Hora de chegada do pacote.

·         Detecção de protocolo Layer-7

O firewall MikroTik pode ser usado, para filtragem de pacotes Stateful e sem estado, fazer um NAT para habilitar o compartilhamento de acesso à Internet, caso não exista endereços IP públicos suficientes, ou utilizar proxy transparentes. Também pode ser usado para construir políticas de QoS usando o HTB, e até mesmo fazer a manipulação de pacotes (alterar os bits/ECN TOS/DSCP do cabeçalho IP).

Anatomia Netfilter e o firewall RouterOS

O NetFilter Iptables (funcionamento conforme Figura 4.12) é formado por um conjunto cadeias/Chain (também chamados de ganchos). Todo pacote IP que entrar e sai de uma máquina, passa por eles. O firewall RouterOS assim como o Iptables funciona por meio de regras que estão associadas as estes ganchos, distribuídas/combinadas em suas tabelas, para fazer a proteção do sistema.

Figura 4.12 – Anatomia Netfilter.

Regras

Na Figura 4.13 demonstra uma linha de comando passados ao Iptables em um sistema Linux, para que ele realize uma determinada ação, como uma regra para bloquear um pacote que venha do endereço 123.123.123.1. As regras têm que estar de acordo com o endereço/porta de origem/destino, interface de origem/destino, por exemplo.

Figura 4.13 – Estrutura das regras Iptables.

No Linux as regras são armazenadas no Kernel a partir do momento que são criadas, devendo o uso de um recurso adicional para armazena-las e deixa-las prontas para o uso quando o sistema for reiniciado. Um exemplo de regra: iptables -a input -s 123.123.123.1 –j DROP; essa estrutura pode ser conferida na Figura 4.13.

As regras de filtragem do RouterOS ip/firewall também são agrupadas em chains. As regras são armazenadas dentro dos chains e processadas na ordem que são inseridas. Elas permitem que um pacote seja compatível com um critério comum em uma cadeia. Mas ao contrário do Linux, o RouterOS as mantem armazenadas e prontas assim que confirmadas sua existência no sistema, só são descartadas se forem removidas diretamente pela ação do usuário do sistema. Podem ser criadas com o uso do Terminal (SSH, TELNET ou New Terminal) ou da sua interface gráfica com o Winbox. Cada regra consiste em duas partes (Figura 4.14):

·         Match – que combina o fluxo de tráfego com as condições dadas;

·         Ação – que define o que fazer com o pacote correspondente.

Figura 4.14 – Estrutura da regra RouterOS IP firewall.

Utilizando praticamente a mesma estrutura do Iptables, criaremos uma regra como /ip firewall filter add chain=input src-address=123.123.123.1 action=drop, que tem o mesmo efeito da regra anteriormente exemplificada em Iptables. Fica bem claro na exposição da regra do firewall RouterOS, que basicamente a regra se divide em o que será usando como referência, o chamado “Match”(Figura 4.15), e o que será imposto sobre o Match, a Ação (Figura 4.16).

Figura 4.15 – Estrutura de regras RouterOS, Match ip/firewall/Filter, Winbox.

Figura 4.16 – Estrutura de regras RouterOS, Action Winbox.

Um pacote pode ser comparado com o endereço IP ou um par de porta. Mas é possível simplificar isso, adicionando uma regra que corresponda ao tráfego de um endereço IP específico, por exemplo: “/ip firewall filter add chain=input src-address=123.123.123.2/32 jump-target=”myChain”, e caso a regra corresponda com o pacote, ele será vinculado ao controle da chain – myChain, neste exemplo. Em seguida, as regras que executam correspondência contra várias portas separadas podem ser adicionadas à cadeia myChain sem especificar o endereço IP novamente.

As regras são armazenadas dentro dos chains e processadas na ordem que são inseridas. São divididas em duas partes o Match e a Ação.

Chains

As operações do firewall são realizadas a partir das regras que estão armazenadas nas chains. Elas podem ser as embutidas/padrões input, output e forward e as criadas pelo usuário.

Ligada aos pacotes que entram no host está a chain prerouting, a forward aos pacotes que não estão destinados ao host, mas que passaram por ele após a decisão de roteamento, e por último a postrouting que representarão os pacotes que saem da máquina. A chain input recebe os pacotes que chegam com destino à máquina local, já o output aos que saem do host/roteador. Também é possível usar o recurso jump (pular) para poder retornar de volta para chain criada em uma regra anterior.

Como num algoritmo a chain respeita sua ordem de criação para ser processada, de cima para baixo. Se um pacote corresponder aos critérios da regra, então a ação especificada é executada, e nenhuma regra a mais será processada nessa cadeia. Mas caso o pacote passante não tiver nenhuma correspondência com a regra dentro da chain, então é aceito.

Veremos mais adiante que com o uso das chains poderemos otimizar a estrutura do firewall, possibilitando que regras comuns não se repitam.

Tabelas

Sob uma ótica mais “prática”, vemos o RouterOS firewall como um grande banco de dados que contém em sua estrutura três tabelas padrões – Filter, NAT e Mangle. Cada uma delas tem regras de firewall direcionadas a atingir seus propósitos. A tabela Filter, guarda todas as regras aplicadas a um firewall de filtro de pacotes, já a tabela NAT tem regras direcionadas a um firewall NAT (veremos mais adiante), e pôr fim a tabela Mangle com suas funções mais complexas muito utilizadas para o tratamento de pacote muitas vezes direcionada ao campo ToS/Classes of Traffic do cabeçalho IPv4/IPv6.

É nas das tabelas que controlamos todas chains de um host/roteador (Figura 4.17). O RouterOS faz uso das tabelas para servirem de repositórios usados para armazenar os chains e conjunto de regras de um mesmo conjunto que cada um tem. Para que possamos vir a moldar o RouterOS IP firewall conforme nossas necessidades, o pacote Security deve estar habilitado. Estando habilitado, o ip/firewall do RouterOS é uma ferramenta que serve como um Front-End para essa tarefa.

Figura 4.17 – Tabelas do firewall RouterOS.

As tabelas podem ser referenciadas com o uso do Winbox acessando o menu /ip firewall (Figura 4.17). Existem três tabelas disponíveis, assim como no Iptables:

·         Filter – Esta é a tabela padrão, contém três chains padrões:

o    input – Consultado para dados que chegam a máquina;

o    output – Consultado para dados que saem da máquina;

o    forward – Consultado para dados que são redirecionados para outra interface de rede ou outra máquina.

·         Nat – Usada para dados que gera outra conexão (Masquerading, Source NAT, Destination NAT, port forwarding e proxy transparente). Tem três chains padrões:

o    dst-nat – É o chain ideal para realização de DNAT e redirecionamento de portas. Associado a actions dst-nat faz substituição do endereço de destino e/ou a porta de um pacote IP para valores especificados dos parâmetros to-addresses e to-ports;

o    src-nat – É o chain ideal para realização de SNAT e Masquerading. Ao se fazer uso em conjunto com as actions src-nat e marquerade, substitui o endereço de origem de um pacote IP por valores especificados com os parâmetros to-addresses e to-ports;

o    redirect – É a chain usada para fazer um proxy transparente por exemplo.

·         Mangle – Utilizada para alterações especiais de pacotes (como modificar o tipo de serviço (TOS) ou outros detalhes que serão explicados no decorrer do capítulo. Tem 2 chains principais:

o    prerouting – Consultado quando os pacotes precisam ser modificados logo que chegam, antes do roteamento;

o    postrouting – Consultado quando os pacotes precisam ser modificados após o tratamento de roteamento;

o    Também tem chains comuns como input, output e forward.

Os chains input e output somente são atravessados por conexões indo/se originando de Localhost. Para conexões locais, somente os chains input e output são consultados na tabela Filter.


 

Comentários