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
Postar um comentário