Você está na página 1de 235

MikroTik Certified Traffic Control Engineer

_____________________________________________________________

_____________________________________________________________

Certified Trainer: João Krieger


______________________________________________________________
© MikroTik, www.mikrotik.com. All rights reserved. Reprinted with permission.
MikroTik, NSTREME, RouterOS and RouterBOARD are registred trademarks of company MikroTik SIA.
João Krieger
Treinamentos

Curso
Introdutório
Roteamento
Avançado
OSPF e Túneis

Controle de Firewall IPv6 Controle de Wireless do


Tráfego, QoS Ataques Usuários, Radius RouterOS
Proxy e Firewall IPsec HotSpot e IPsec

Redes BGP, MPLS


http://www.mikrotik.com/training/ Engenharia Tráfego
Importante!
____________________________________________________________

o Curso Oficial: Não filmar, gravar e repassar

o Localização: Banheiro e água

o Celular e Notebook: Em modo silencioso

o Aprendizado: Faça anotações! Conceitos!

o Perguntas: SEMPRE BEM VINDAS!

o Localização na sala: Grave seu número XY (30)


Nosso Cenário

wlan1
Internet
ether2
.1
192.168.XX.0/24
wlan2 wlan1
.1 wlan1

ether2
ether1 .1

.1 ether3 192.168.XX.0/24

wlan1
192.168.255.0/24
172.30.1.0/24 ether2
.1
192.168.XX.0/24
Acesse e Baixe a Apostila

1. Conecte seu PC ao Wi-Fi


SSID: ACADEMIA MT
Senha: MikroTik

2. Baixe a Apostila do MTCTCE


http://local.academiamt.com.br
O Treinamento
______________________________________________________________

● Objetivos

1. Entender o Fluxo dos Pacotes

2. Implementar
1. Segurança
2. Controle de Tráfego
3. Performance

3. Preparar para o Exame MTCTCE


Conteúdo
______________________________________________________________

6 Módulos

1. DHCP Client / Relay / Server


2. DNS Client / Server Cache
3. Packet Flow Diagram
4. Firewall Filter / NAT / Mangle / Raw
5. Web Proxy
6. Quality of Service
http://www.mikrotik.com/download/pdf/MTCTCE_Outline.pdf
Resetar - Default Configuration

LAB

Segurar por 5 seg


ou até a primeira
alteração do
estado dos leds
Conectar a RB no Note

LAB

1 Desabilite
O antivírus
O firewall do Windows
As interfaces wireless e virtuais

2 Conecte na ether2
Acessar por MAC
LAB
Remover a Configuração

LAB
/user LAB

______________________________________________________________

Apagar Arquivos em Files LAB


Renomear as Interfaces
LAB

______________________________________________________________

Adicionar a Bridge_LAN1 e suas portas


LAB
/interface DICA
/interface list

1
5 2
3

LAB
/interface list - Usos
/ip service LAB

/system package LAB


+ Segurança DICA

Ações
• Colocar o router em local seguro
• Desabilitar a porta serial
• Desabilitar LCD
• Protejer o botão de Reset

Comandos

/system console disable [find where port=serial0]

/lcd set enabled=no


/lcd set touch-screen=disabled

# https://wiki.mikrotik.com/wiki/Manual:RouterBOARD_settings#Protected_bootloader
/system routerboard settings set protectedrouterboot=enabled \
reformat-hold-button=30s
DHCP - Client / Relay / Server

● Conteúdo
1. DHCP communication analysis
2. DHCP Client identification/configuration
3. DHCP Server configuration:
1. DHCP networks
2. DHCP options (build-in and custom)
3. IP Pool
4. Advanced DHCP

4. DHCP Relay configuration


DHCP

Porta: 68 Porta: 67

1. O Servidor sempre escuta na porta UDP 67

2. O Cliente sempre escuta na porta UDP 68

3. Toda negociação inicial é feita através de


broadcast

4. Os endereço IP de origem e destinos


usados são 0.0.0.0 e 255.255.255.255
respectivamente
DHCP - Comunicação (DORA)
DHCP - Comunicação (DORA)

00:50:00:00:02:00
192.168.1.1
Discovery 50:00:00:01:00:00
1 SRC DST
Offer
Port 68 67
IP 0.0.0.0 255.255.255.255 2 SRC DST
MAC 00:50:00:00:02:00 FF:FF:FF:FF:FF:FF Port 67 68
IP 192.168.1.1 192.168.1.254
Request MAC 50:00:00:01:00:00 00:50:00:00:02:00

3 SRC DST
Acknowledgement
Port 68 67
IP 0.0.0.0 255.255.255.255 4 SRC DST
MAC 00:50:00:00:02:00 FF:FF:FF:FF:FF:FF Port 67 68
IP 192.168.1.1 192.168.1.254
MAC 50:00:00:01:00:00 00:50:00:00:02:00
Conectar na RB do Instrutor

LAB

Wi-Fi

Station
Estudante
AP Bridge
Instrutor

Conectar a wlan1 no Wi-Fi


SSID: ACADEMIA MT
Senha: MikroTik
DHCP Client
LAB
DHCP Client - Detalhes
LAB
DHCP Client Advanced

https://wiki.mikrotik.com/wiki/Manual:IP/DHCP_Client#Lease_script_example
(Adiciona automaticamente uma Default Route com a Marca = WAN1 e a
remove quando a concessão expira ou é removida)
DHCP Client Options

https://wiki.mikrotik.com/wiki/Manual:IP/DHCP_Client
Habilitar Acesso Por RoMON

LAB
Identificar a RB
LAB
Fazer Update (Current Stable)

LAB
DHCP Server adicionar na bridge_LAN1 (1-2)

1. Adicionar IP LAB

192.168.XX.1/24

bridge_LAN1
DHCP Server adicionar na bridge_LAN1 (2-2)
2. Adicionar DHCP Server LAB

bridge_LAN1

192.168.XX.0/24

192.168.XX.1

192.168.XX.101-
192.168.XX.199

172.30.1.1
Acesso à Internet

Wi-Fi

Station
Estudante
AP Bridge
Instrutor
Adicione a Regra de NAT
LAB

Teste a navegação!

Faça Backup!

wlan1_WAN
DHCP Server (1-3)

Interface: Só é
permitido 1 servidor

Lease Time: Tempo


de concessão

Src. Address: IP, se a


interface tiver mais de um

Bootp Support: suporte


para clientes BOOTP

Use RADIUS: distribui


leases desse pool
DHCP Server (2-3)

Authoritative: responde aos


clientes desconhecidos, com um
reconhecimento negativo
(DHCPNAK). Isto, faz o cliente pedir
um novo endereço IP
imediatamente.
No, se tiver outro DHCP.
Yes, after 2s delay e after 10s delay,
são usados para:
1. Prevenir contra um DHCP
Server Rogue (intruso/ilegal)
2. Tornar a configuração da rede
DHCP mais rápida
DHCP Server (3-3)

Delay Threshold (Limite de Atraso):


tempo pra responder aos clientes,
quando for o DHCP Server de
Backup. Responde imediantamente
se não definirmos um tempo.

Usar com Authoritative: no

Conflict Detection: ao tentar


atribuir uma concessão, ele enviará
mensagens ICMP e ARP para
detectar se o endereço já existe na
rede. Se receber o endereço de
resposta, considera já usado.
DHCP Server - Always Broadcast

00:50:00:00:02:00
192.168.1.1
50:00:00:01:00:00

Ajuda na comunicação com clientes fora do padrão,


como no wireless Modo: station pseudobridge
DHCP Server - Lease Script LAB

:local queueName "Client- $leaseActMAC";

:if ($leaseBound = "1") do={


/queue simple add name=$queueName
target=$leaseActIP max-limit=1M/5M
comment=[/ip dhcp-server lease get [find Lease Script: de e-mail,
where active-mac-address=$leaseActMAC &&
active-address=$leaseActIP] host-name];} Simple Queue, Log, etc.
else={/queue simple remove $queueName}
DHCP Server - Config

DHCP Config: tempo para


armazenar concessões no disco
DHCP Server - Networks
Distribui Opções aos Clientes

3 = Router

1 = Subnet Mask

6 = Domain Name Server

15 = Domain Name

44 = NETBIOS Name Server

42 = NTP Servers

Dynamic Host Configuration Protocol (DHCP) and Bootstrap Protocol (BOOTP) Parameters
http://www.iana.org/assignments/bootp-dhcp-parameters
DHCP Server - Lease LAB

Monitora e gerencia as concessões

rx-rate[/tx-rate] [rx-burst-rate[/tx-burst-rate] [rx-burst-threshold[/tx-burst-threshold] [rx-burst-time[/tx-burst-time]]]]


DHCP Server - Alerts
Identifica DHCP Rogue (Intruso)

Valid Servers (MAC):


Servidores confiáveis

On-Alert: executa
script (de log, envio
de e-mail ou outro)

Envia Discovery 1x por minuto. Age como se fosse um DHCP Client.


DHCP Server - Alerts
DICA

Objetivo
• Enviar e-mail alertando sobre um Rouge DHCP Server

Comandos

/ip dhcp-server alert


add disabled=no interface=bridge_LAN1 on-alert=":local sysname [/system identity get name];\
/tool e-mail send to=usuario@dominio.com.br subject=\"Rouge DHCP Server detectado\" bod\
y=\"Um servidor DHCP desconhecido foi detectado na Interface \$interface da RB \$sysnam\
e com o IP \$address\""
DHCP Relay

• É um proxy capaz de receber requisições


“DHCP Discovery” e “DHCP Request” e
reenviar estas requisições a um DHCP
Server

• Só pode haver 1 DHCP Relay entre o DHCP


Server e o Cliente DHCP

• A configuração do “Local Address" no DHCP


Relay deve ser a mesma que o "Relay" no
DHCP Server
Cenário DHCP Relay LAB

192.168.XX.0/24
Internet
ether2
ISP/WISP ether1

wlan2 wlan1 DHCP Server


.1 do Relay

ether1 172.30.1.0/24

.1 ether3
DHCP Relay
192.168.255.0/24 192.168.XX.0/24
ether1

ether3
10.2.2.1/24
DHCP Server do DHCP Relay
LAB

1 3

2
DHCP Relay - ether3 (1-3)
LAB

1. Adicionar

2. Adicionar
DHCP Relay - ether3 (2-3)
LAB

3. Adicionar o
DHCP Relay

Ether3_LAN
DHCP Relay - ether3 (3-3)
LAB

4. Alterar Out. Inferface


5. Teste a navegação
6. Pinga de PC para PC
nos 2 sentidos?

Ether1_WAN
DHCP Server - Options (1-3)

121 = Classless Static Route Option

192.168.1.1
192.168.1.254

192.168.1.0/24 10.2.2.0/24
DHCP Server - Options (2-3)
121 = Classless Static Route Option
LAB
/ip dhcp-server option add
/ip route add distance=1 dst-address= \
10.2.2.0/24 gateway=192.168.1.254

Dst. Address: Gateway:


10.2.2.0/24 192.168.1.254

Sequência
[Máscara de sub-rede (CIDR)] [End. de rede] [Gateway]

Conversão

Decimal Hexadecimal
24 10 2 2 192 168 1 254 18 0A 02 02 C0 A8 01 FE
DHCP Server - Options (3-3)
121 = Classless Static Route Option

Distribuir para 1 PC
1. Configurar a Lease
para Make Static
2. Atribuir a Option
DHCP Server - Options Sets
121 = Classless Static Route Option

LAB

Distribuir pra LAN1


1. Adicionar Option Set
2. Atribuir a Option Set
DHCP Relay
LAB

COM CLASSLESS !
yes: só option 121
special classless:
option 3 + option 121
DHCP Server - Options
LAB

Testar a configuração
1. Renovar o IP no PC
2. Verificar a rota
3. Pinga de PC para PC
nos 2 sentidos?
4. Desfazer o LAB
5. Voltar o Backup

https://ip-pro.eu/en/mikrotik_dhcp_option_121_generator
IP > Pool

1) Define o intervalo de Endereços IP para


emprestar automaticamente

2) Não deve conter os


endereços fixos de
servidores e outros
equipamentos

3) Usado por Clientes:


1. DHCP
2. PPP
3. HotSpot
IP > Pool: Used Addresses

*
DHCP - Client / Relay / Server

RESUMO e P & R

● Conteúdo
1. DHCP communication analysis
2. DHCP Client identification/configuration
3. DHCP Server configuration:
1. DHCP networks
2. DHCP options (build-in and custom)
3. IP Pool
4. Advanced DHCP

4. DHCP Relay configuration


SNTP, NTP Client e NTP Server
LAB

Comandos
/system ntp client
set enabled=yes primary-ntp=2001:12ff::8 secondary-ntp=200.189.40.8
/system clock LAB

Comandos
/system clock
set time-zone-autodetect=no
/system clock manual
set dst-delta=+01:00 dst-end="feb/17/2019 00:00:00" dst-start="nov/04/2018 00:00:00" \
time-zone=-03:00
/ip cloud
LAB
DNS - Client / Server

● Conteúdo
1. Basic configuration
2. Static DNS Entry
DNS - Resolução de Nome

Domain Name System


(Sistema de Nomes de Domínio)
DNS - Resolução de Nome

www.mikrotik.com
Host.Sub-Domain.Top-Level-Domain.

http://www.root-servers.org/
DNS Client
LAB
/ip dns

Quando o roteador precisa resolver nomes

IPv4 e IPv6
• Ping
• Traceroute
• Web Proxy
• Hotspot
DNS Server

/ip dns

Quando clientes precisam resolver nomes


1. Habilitamos em Allow Remote Requests
(Permite Requisições Remotas)
2. Pode ser o Cache de DNS da LAN, o que
minimiza o tempo de resolução
3. Resolvemos nomes Locais em Static
4. Responde na porta 53 TCP e UDP
5. Escuta em todas as interfaces
DNS Server (Cache)

LAB
/ip dns

Habilitamos aqui

Entradas Estáticas,
primeira pesquisa

Entradas Dinâmicas,
segunda pesquisa

Tamanho do Cache
(512..10240 KiB)

Tempo de vida, respeita


tempos menores
DNS Server - Static

/ip dns cache

Limpa o Cache
PTR = Reverso
/ip dns static
DNS Server - Static
LAB

IPv4, IPv6 e Regexp

As Expressões Regulares são analisadas primeiro! E consomem bastante CPU.


Regex Resumo e Exemplos

Serviços que usam: Metacaracteres:


• Firewall L7 matchers . = casa com qualquer caracter
• BGP filters * = subistitui vários caracteres
• CAPSMAN provisioning : = tudo que contiver (Web Proxy)
• TFTP
? = subistitui um único carater
• Web Proxy
• Hotspot Walled Garden + = há uma ou mais ocorrências
• DNS | = separa alternativas (ou)
• Console with '~' operator \ = escape para um caracter literal

http://aurelio.net/regex/guia/
DNS Server - Redirect
DICA
DNS - Client / Cache

RESUMO - P & R

● Conteúdo
1. Basic configuration
2. Static DNS Entry
Packet Flow (Fluxo de Pacotes)

● Programa
1. Why this diagram is necessary?

2. Full overview of all things covered by diagram

3. Simple examples how packet travels through


the diagram (routing, bridging, connection to
router etc.)

4. More complex examples of diagram usage


Diagrama do Fluxo de Pacotes

● Porque é necessário?
Para sabermos quando, porque e
onde passam os pacotes, e assim
resolver tarefas mais complicadas
como bloqueios, redirecionamentos,
marcações, classificações,
priorizações, políticas e outras
Fluxo de Pacotes v6

https://wiki.mikrotik.com/wiki/Manual:Packet_Flow
Fluxo de Pacotes v6

https://wiki.mikrotik.com/wiki/Manual:Packet_Flow_v6
Fluxo de Pacotes v6

https://wiki.mikrotik.com/wiki/Manual:Packet_Flow_v6
Fluxo de Pacotes Completo
FORWARD

ROUTING MANGLE FILTER


DECISION
TTL-1 ACCOUNTING
FORWARD FORWARD

PRE POST
ROUTING INPUT OUTPUT ROUTING
ROUTING
MANGLE MANGLE
DST-NAT ADJUSTA-
INPUT MENT POSTROUTING

MANGLE FILTER FILTER


SRC-NAT
PREROUTING INPUT OUTPUT

CONNECTION QUEUE TREE MANGLE HOTSPOT


TRACKING “HTB GLOBAL” OUTPUT OUT

RAW SIMPLE CONNECTION QUEUE TREE


PREROUTING QUEUE TRACKING “HTB GLOBAL”

HOTSPOT RAW SIMPLE


IN OUTPUT QUEUE

TO IN LOCAL ROUTING
QUEUE TREE
PROCESS TO OUT DECISION INTERFACE HTB

INPUT OUTPUT
INTERFACE INTERFACE
Fluxo de Pacotes Completo
FORWARD

ROUTING MANGLE FILTER


DECISION
TTL-1 ACCOUNTING
FORWARD FORWARD

PRE POST
ROUTING INPUT OUTPUT ROUTING
ROUTING
MANGLE MANGLE
DST-NAT ADJUSTA-
INPUT MENT POSTROUTING

MANGLE FILTER FILTER


SRC-NAT
PREROUTING INPUT OUTPUT

CONNECTION QUEUE TREE MANGLE HOTSPOT


TRACKING “HTB GLOBAL” OUTPUT OUT

RAW SIMPLE CONNECTION QUEUE TREE


PREROUTING QUEUE TRACKING “HTB GLOBAL”

HOTSPOT RAW SIMPLE


IN OUTPUT QUEUE

TO IN LOCAL ROUTING
QUEUE TREE
PROCESS TO OUT DECISION INTERFACE HTB

INPUT OUTPUT
INTERFACE INTERFACE
Diagrama de Fluxo de Pacotes

RESUMO e P & R

● Programa
1. Why this diagram is necessary?

2. Full overview of all things covered by diagram

3. Simple examples how packet travels through


the diagram (routing, bridging, connection to
router etc.)

4. More complex examples of diagram usage


Firewall - filter / nat / mangle / raw

● Programa
1. Connection tracking
2. Filter
1. chains (default/custom)
2. all rule "actions" covered
3. most common rule "conditions" covered
3. NAT
1. chains (default/custom)
2. all rule "actions" covered
3. most common rule "conditions" covered
4. NAT helpers
4. Mangle
1. chains (default/custom)
2. all rule "actions" covered
3. most common rule "conditions" covered
5. Some complicated rule "conditions" covered ("advanced",
"extra" tab)
*
6. uPNP
Firewall

 É um filtro de pacotes que protege uma rede de outra

 São regras sequenciais até uma coincidência (match)

 São gerenciadas nas tabelas Filter, NAT, Mangle e Raw

 É ordenada em Chains pré-definidas ou criadas

 O padrão é Accept
Tabelas (/ip firewall)

1. Filter Rules: Filtra de pacotes

2. NAT: Traduz endereços e portas

3. Mangle: Marca conexões, pacotes e roteamento,


também pode alterar campos no header

4. Raw: Salta a Conntrack, protege e agiliza

5. Service Ports: NAT Helpers

6. Connections: Tabela de conexões (Conntrack)

7. Address Lists: Inseridos dinâmica ou estáticamente

8. Layer 7 Protocols: Filtros de Camada 7


Estrutura do Firewall Chains
/ip firewall filter /ip firewall nat

/ip firewall mangle /ip firewall raw


Estrutura do Firewall Actions

/ip firewall filter add action= /ip firewall nat add action=
Estrutura do Firewall Actions
/ip firewall mangle add action= /ip firewall raw add action=
Processamento das Regras (1-2)

São expressões condicionais simples

“SE <condição>” “ENTÃO <ação>”


Processamento das Regras (2-2)

É sequencial

Coincide com a Regra 0?


Coincide
SIM com a aRegra
- Executa ação 1?
e ignore as regras abaixo
SIM - Executa
Coincide
NÃO a
com apra
Segue ação
Regra e ignore
2?
próxima regraas regras abaixo
NÃO
SIM
Se -- Executa
não Segue pra
acom
coincidiu próxima
ação regraRegra,
e ignore
nenhuma as regras abaixo
então
NÃO - Segue pra próxima regra
executa o pacote pois é Default Accept
Mostragem das Chains

all: Todas
dynamic: Dinâmicas
financeiro: Criada
forward: Padrão
input: Padrão
output: Padrão
static: Estáticas
/ip firewall filter

TCP
ICMP

UDP

DNS

DMZ
Rede
local
/ip firewall filter add chain=
/ip firewall filter add chain=
FORWARD

ROUTING MANGLE FILTER


DECISION
TTL-1 ACCOUNTING
FORWARD FORWARD

PRE POST
ROUTING INPUT OUTPUT ROUTING
ROUTING
MANGLE MANGLE
DST-NAT ADJUSTA-
INPUT MENT POSTROUTING

MANGLE FILTER FILTER


SRC-NAT
PREROUTING INPUT OUTPUT

CONNECTION QUEUE TREE MANGLE HOTSPOT


TRACKING “GLOBAL” OUTPUT OUT

RAW SIMPLE CONNECTION QUEUE TREE


PREROUTING QUEUE TRACKING “GLOBAL”

HOTSPOT RAW SIMPLE


IN OUTPUT QUEUE

TO IN LOCAL ROUTING
QUEUE TREE
PROCESS TO OUT DECISION INTERFACE HTB

INPUT OUTPUT
INTERFACE INTERFACE
/ip firewall filter add chain=

FORWARD

INPUT OUTPUT

OUTPUT INPUT

FORWARD
Protege o Router

INPUT

INPUT
Protege as Redes Locais

FORWARD

FORWARD
/ip firewall filter add action=

1. accept: Aceita o pacote


2. add dst to address list: Adiciona o Dst IP para
uma lista de endereços
3. add src to address list: Adiciona o Src IP para
uma lista de endereços
4. drop: Descarta o pacote silenciosamente
5. reject: Descarta o pacote e responde com uma
mensagem de icmp ou tcp reset *
6. fastrack connection: Coloca uma conexão num
“caminho rápido”
7. jump: Faz um pacote ser desviado para outra chain
8. log: Gera um log para cada pacote que combinar
com a regra
9. passthrough: Contabiliza o pacote
10. return: Volta o pacote desviado por uma ação jump Legenda
11. tarpit: Responde mensagens TCP de SYN/ACK Match e não segue
sem alocar recursos no roteador * Match e segue
Default Drop x Default Accept
/ip firewall address-list

IPs podem ser adicionados: A lista pode conter:


1. Automaticamente 1. Um (1) endereço IP
2. Permanentemente 2. Intervalos de IPs
3. Por um período de 3. Sub-rede inteira
tempo 4. URL
Address List - Locais

*
Adicionar Address List

LAB

Objetivo
• Facilitar a configuração do Firewall
• Adicionar IPs e Redes usadas nos Labs

Comandos
/ip firewall address-list
add address=192.168.30.0/24 list=REDE_LOCAL
add address=192.168.30.254 list=IP-REDE_SUPORTE
add address=8.8.4.4 list=DNS_SERVER
add address=8.8.8.8 list=DNS_SERVER
add address=www.facebook.com list=FACEBOOK
add address=facebook.com list=FACEBOOK
add address=www.facebook.com.br list=FACEBOOK
add address=facebook.com.br list=FACEBOOK
/ip firewall address-list
LAB
IP > Firewall > Filter Rules: (+) Advanced

IP > Firewall > Filter Rules: (+) Action


Em Default Accept

Default Accept
IP Suporte
Ping Flood
Port Scanner
Brute Force Login
DoS e DDoS
DNS Amplification
Anti-Spoofing
Tráfego Específico *
IP de Suporte
LAB

Objetivo

• Permitir acesso vindo da Address List IP-REDE_SUPORTE


• (Podemos restringir em /ip service) *

Comandos

/ip firewall filter


add action=accept chain=input comment= "Libera acesso para o SUPORTE" src-address-
list=IP-REDE_SUPORTE
Ping Flood (inundação)

LAB

Objetivo

• Não bloquear todo o tráfego ICMP, pois podemos ter problemas com
outras aplicações
• Limitar a inundação em 30 mensagens ICMPs e dropar o resto

Comandos

/ip firewall filter


add chain=input comment="Aceita 30 mensagens ICMP por segundo" limit=30,5 protocol=icmp
add action=drop chain=input comment="Dropa todo ICMP" protocol=icmp
Port Scanner Detection (PSD)

Weight Threshold - peso total dos últimos


pacotes TCP / UDP com diferentes portas de
destino provenientes do mesmo host

Delay Threshold - atraso para os pacotes


com diferentes portas de destino
provenientes do mesmo host

Low Port Weight - peso dos pacotes com


porta de destino privilegiada (0-1023)

High Port Weight - peso do pacote com porta


de destino não privilegiada (1024-65535)
Port Scanner Detection (PSD)

LAB

Objetivo
• Detectar varreduras de portas TCP e UDP
• Bloquear o IP atacante vindo pela WAN e LAN por 100 dias

Comandos
/ip firewall filter
add action=drop chain=input comment="Dropa ATACANTE_PS " src-address-list=\
ATACANTE_PS
add action=add-src-to-address-list address-list=ATACANTE_PS address-list-timeout=14w2d \
chain=input comment="Detecta ATACANTE_PS TCP" protocol=tcp \
psd=21,3s,3,1 src-address-list=!DNS_SERVER
add action=add-src-to-address-list address-list=ATACANTE_PS address-list-timeout=14w2d \
chain=input comment="Detecta ATACANTE_PS UDP" protocol=udp \
psd=21,3s,3,1 src-address-list=!DNS_SERVER
Brute Force Login
LAB

Objetivo
• Detectar tentativas de login de Brute Force às portas 22 do SSH e 8291 do
Winbox
• Bloquear o IP atacante

Comandos
/ip firewall filter
add action=drop chain=input comment="Dropa IPs da lista BRUTE_FORCE_SSH+WINBOX" src-address-list=\
BRUTE_FORCE_SSH+WINBOX
add action=add-src-to-address-list address-list=BRUTE_FORCE_SSH+WINBOX address-list-timeout=1w \
chain=input comment="Adiciona IP de origem na lista BRUTE_FORCE_SSH+WINBOX, por 7 dias" \
connection-state=new dst-port=22,8291 protocol=tcp src-address-list=BRUTE_FORCE_SSH+WINBOX_3
add action=add-src-to-address-list address-list=BRUTE_FORCE_SSH+WINBOX_3 address-list-timeout=3m \
chain=input comment="Adiciona IP de origem na lista BRUTE_FORCE_SSH+WINBOX_3, por 3 minutos" \
connection-state=new dst-port=22,8291 protocol=tcp src-address-list=BRUTE_FORCE_SSH+WINBOX_2
add action=add-src-to-address-list address-list=BRUTE_FORCE_SSH+WINBOX_2 address-list-timeout=3m \
chain=input comment="Adiciona IP de origem na lista BRUTE_FORCE_SSH+WINBOX_2, por 3 minutos" \
connection-state=new dst-port=22,8291 protocol=tcp src-address-list=BRUTE_FORCE_SSH+WINBOX_1
add action=add-src-to-address-list address-list=BRUTE_FORCE_SSH+WINBOX_1 address-list-timeout=3m \
chain=input comment="Adiciona IP de origem na lista BRUTE_FORCE_SSH+WINBOX_1, por 3 minutos" \
connection-state=new dst-port=22,8291 protocol=tcp
Conexão TCP - Three-way HandShake

RAM
Ataque DoS - SYN Flood (1-2)

RAM
Ataque DoS - SYN Flood (2-2)

LAB

Objetivo
• 1) Detectar atacante DoS e criar Address List com o IP de origem
• 2) Suprimir atacante com 15 conexões abertas do mesmo IP
• Usar o Tarpit, que responde com SYN-ACK sem alocar recursos do
roteador

Comandos

/ip firewall filter


add action=tarpit chain=input comment="Suprime ATACANTE_SYN-FLOOD" protocol=tcp \
src-address-list=ATACANTE_SYN-FLOOD
add action=add-src-to-address-list address-list=ATACANTE_SYN-FLOOD address-list-timeout=1h \
chain=input comment="Detecta ATACANTE_SYN-FLOOD" connection-limit=15,32 protocol=tcp \
tcp-flags=syn
Ataque DDoS - SYN Flood
LAB

São parecidos com os


ataques DoS, mas se
diferenciam pois partem
de um grande número
de hosts infectados

A única medida que


podemos tomar é
habilitar a opção
TCP SynCookie em
/ip settings
DNS Amplification (DoS)
LAB

Objetivo
• Bloquear ataques de DoS aos servidores de DNS (TCP e UDP),
direcionados para o router (input) e para os clientes (forward)
• Obs.: Fator/Poder de Amplificação: DNS 54x, NTP 557x, SSDP(UPnP)
30x, SNMPv2 6x, LDAP/CLDAP 70X

Comandos
/ip firewall filter
add action=drop chain=input comment="Dropa acesso DNS UDP pela WAN" dst-port=53 \
in-interface-list=WAN protocol=udp
add action=drop chain=input comment="Dropa acesso DNS TCP pela WAN" dst-port=53 \
in-interface-list=WAN protocol=tcp
add action=drop chain=forward comment="Dropa acesso DNS UDP pela WAN" dst-port=53 \
in-interface-list=WAN protocol=udp
add action=drop chain=forward comment="Dropa acesso DNS TCP pela WAN" dst-port=53 \
in-interface-list=WAN protocol=tcp
IP Spoofing - Falsificação de IP (DoS)
com Amplificação / Reflexão

1Mbps 1Mbps 1Mbps 30Mbps 30Mbps 30Mbps

Atacante Vítima
1.1.1.1 3.3.3.3
Qual IP do site?
DNS Server O IP do site é ...
Link 1Mbps Link 50Mbps
2.2.2.2
Link 30Mbps

Src: 3.3.3.3 : 57147 Src: 2.2.2.2 : 53


Dst: 2.2.2.2 : 53 Dst: 3.3.3.3 : 57147
Anti-Spoofing (BCP 38)
LAB

Objetivo
• Filtrar ataques pra Internet à partir da Rede Local
• Obs.: Colocar no primeiro equipamento que o pacote do cliente passa

Comandos

/ip firewall filter


add action=drop chain=forward comment="Filtro Anti-Spoofing" \
src-address-list=!REDE_LOCAL in-interface-list=LAN
Tráfego Específico
LAB

Objetivo
• Bloquear o Facebook e logar

Comandos

/ip firewall filter


add action=drop chain=forward comment="Bloqueia o Facebook" dst-address-list=\
FACEBOOK log=yes log-prefix=FACEBOOK out-interface=ether1_WAN
Em Default Drop

Default Drop
Drop Geral
Tratando Conexões
VPNs
Ajustar Regras
Port Knocking
Jump
Drop Geral
LAB

Objetivo
• Bloquear conexões entrantes e passantes vindo da WAN
• Permitir DST-NAT

Comandos

/ip firewall filter


add action=drop chain=input comment="Dropa INPUT da WAN" in-interface-list=!LAN
add action=drop chain=forward comment="Dropa FORWARD da WAN, menos DST-NAT" \
connection-nat-state=!dstnat connection-state=new in-interface-list=WAN
Estado das Conexões

O firewall é capaz de analisar o pacote:

• new: que inicia uma nova conexão

• established: que pertence a uma conexão existente

• related: que inicia uma nova conexão, porém está


associada a uma conexão estabelecida

• invalid: que não pertence a nenhuma conexão

• untracked: que foi setado na tabela RAW para fazer


um bypass da Connection Tracking

Connection State ≠ TCP State


Tratando Conexões
LAB

Objetivo
• Aceitar conexões entrantes e passantes Established, Related e Untracked
• Descartar conexões entrantes e passantes Invalid
• Dar mais performance, pois somente o estado das novas (New) conexões
serão analizadas

Comandos
/ip firewall filter
add action=accept chain=input comment="Aceita Established, Related, Untracked - Input" \
connection-state=established,related,untracked
add action=drop chain=input comment="Descarta Invalid" connection-state=invalid
add action=accept chain=forward comment="Aceita Established, Related, Untracked - Forward" \
connection-state=established,related,untracked
add action=drop chain=forward comment="Descarta Invalid" connection-state=invalid
Liberar Portas Baixas e Altas Necessárias

DICA

Objetivo
• Liberar portas para navegação e outros serviços, TCP e UDP
• Baixas = 0-1023 e Altas = 1024-65535

Comandos

add action=accept chain=forward comment="PORTAS TCP - MAIS USADAS ATE 1023" \


disabled=yes dst-port=21,20,22,23,25,80,110,123,143,443,465,587,993,995 \
protocol=tcp src-address-list=REDE_LOCAL
add action=accept chain=forward comment=\
"PORTAS TCP - MAIS USADAS ACIMA DE 1023 - 1" disabled=yes dst-port="1863,\
2967,3389,3456,5060,5061,6891-6901,5600,5800,5900,5931-5932,31077" \
protocol=tcp src-address-list=REDE_LOCAL
add action=accept chain=forward comment=\
"PORTAS TCP - MAIS USADAS ACIMA DE 1023 - 2" disabled=yes dst-port=\
7080,7072,3443,3456,1900 protocol=tcp src-address-list=REDE_LOCAL
VPNs L2TP, PPTP, EoIP, OpenVPN e IPsec

DICA

Objetivo
• Liberar portas para VPNs

Comandos
/ip firewall filter
add action=accept chain=input comment=PPTP dst-port=1723 in-interface-list=WAN protocol=tcp
add action=accept chain=input comment=SSTP dst-port=443 in-interface-list=WAN protocol=tcp
add action=accept chain=input comment=PPTP e EoIP dst-port=47 in-interface-list=WAN protocol=udp
add action=accept chain=input comment=OVPN dst-port=1194 in-interface-list=WAN protocol=udp
add action=accept chain=input comment=L2TP dst-port=1701 in-interface-list=WAN protocol=udp
add action=accept chain=input comment=IPsec dst-port=500 in-interface-list=WAN protocol=udp
add action=accept chain=input comment=IPsec dst-port=4500 in-interface-list=WAN protocol=udp
Port Knocking
LAB

Objetivo
• Permitir acesso ao SSH e Winbox, batendo na porta 55555,
depois na porta 11111
• Deixar mais seguro o acesso via WAN e LAN
• Liberar acesso ao SSH e Winbox, por 5 horas e também logar

Comandos
/ip firewall filter
add action=accept chain=input comment="PortKnock - Libera Address List SUPORTE" \
dst-port=22,8291 log-prefix=SUPORTE protocol=tcp src-address-list=SUPORTE
add action=add-src-to-address-list address-list=SUPORTE address-list-timeout=5h \
chain=input comment="PortKnock_2 11111" connection-state=new dst-port=11111 \
protocol=tcp src-address-list=PRE_SUPORTE
add action=add-src-to-address-list address-list=PRE_SUPORTE \
address-list-timeout=30s chain=input comment="PortKnock_1 55555" \
connection-state=new dst-port=55555 protocol=tcp
Jump
ICMP
Regra Regra
Regra
Regra Regra
Regra
Regra
Jump canal ICMP
Regra

Regra

Regra
BlockSites
Jump canal
Regra
BlockSites
Regra
Regra Regra
Regra
Regra Regra
Regra
Jump ICMP DICA

Objetivo
• Permitir algumas mensagens ICMP e dropar outras
• https://www.iana.org/assignments/icmp-parameters/icmp-parameters.xhtml
/ip firewall filter
add action=jump chain=input comment="Jump para a Chain = icmp" jump-target=icmp \
protocol=icmp
add action=accept chain=icmp comment="echo reply, 30 por seg" icmp-options=0:0 limit=\
30,5:packet protocol=icmp
add action=accept chain=icmp comment="echo request, 30 por seg" icmp-options=\
8:0 limit=30,5:packet protocol=icmp
add action=accept chain=icmp comment="net unreachable" icmp-options=3:0 protocol=icmp
add action=accept chain=icmp comment="host unreachable" icmp-options=3:1 \
protocol=icmp
add action=accept chain=icmp comment="protocol unreachable" icmp-options=3:2 \
protocol=icmp
add action=accept chain=icmp comment="port unreachable" icmp-options=3:3 \
protocol=icmp
add action=accept chain=icmp comment="fragmentation needed" icmp-options=3:4 \
protocol=icmp
add action=accept chain=icmp comment="time exceeded" icmp-options=11:0-255 \
protocol=icmp
add action=drop chain=icmp comment="Dropa outros pacotes de ICMP" protocol=icmp
NAT - Network Address Translation
Tradução de Endereço de Rede
NAT é um método que modifica o cabeçalho (header)
dos pacotes. O primeiro pacote (new) é registrado na
ConnTrack

Pode alterar o Endereço IP e/ou Porta de:


1. Origem (Source = Src.)
2. Destino (Destination = Dst.)

Há 2 tipos de NAT:
1. Source NAT (src-nat), para WAN
2. Destination NAT (dst-nat), para LAN ou
Router

Podemos definir novas Chains

Aceitar ou bloquear tráfego é feito na Filter


Fluxo de Pacotes src-nat e dst-nat
FORWARD

ROUTING MANGLE FILTER


DECISION
TTL-1 ACCOUNTING
FORWARD FORWARD

PRE POST
ROUTING INPUT OUTPUT ROUTING
ROUTING
MANGLE MANGLE
DST-NAT ADJUSTA-
INPUT MENT POSTROUTING

MANGLE FILTER FILTER


SRC-NAT
PREROUTING INPUT OUTPUT

CONNECTION QUEUE TREE MANGLE HOTSPOT


TRACKING “GLOBAL” OUTPUT OUT

RAW SIMPLE CONNECTION QUEUE TREE


PREROUTING QUEUE TRACKING “GLOBAL”

HOTSPOT RAW SIMPLE


IN OUTPUT QUEUE

TO IN LOCAL ROUTING
QUEUE TREE
PROCESS TO OUT DECISION INTERFACE HTB

INPUT OUTPUT
INTERFACE INTERFACE
*
src-nat e dst-nat

Source NAT processa o tráfego A PARTIR do roteador e ATRAVÉS


do roteador, DEPOIS que sai do OUTPUT ou FORWARD

SRC DST SRC DST


Porta Porta src-nat Nova porta Porta
IP IP Novo IP IP

Destination NAT processa o tráfego PARA o roteador e ATRAVÉS do


roteador, ANTES de ser encaminhado para INPUT ou FORWARD

SRC DST SRC DST


Porta Porta dst-nat Porta Nova porta
IP IP IP Novo IP
Connections Tracking - Rastreia as Conexões

Stateless Statefull

https://wiki.mikrotik.com/wiki/Manual:IP/Firewall/Connection_tracking *
Fluxo de Pacotes Connections Tracking
FORWARD

ROUTING MANGLE FILTER


DECISION
TTL-1 ACCOUNTING
FORWARD FORWARD

PRE POST
ROUTING INPUT OUTPUT ROUTING
ROUTING
MANGLE MANGLE
DST-NAT ADJUSTA-
INPUT MENT POSTROUTING

MANGLE FILTER FILTER


SRC-NAT
PREROUTING INPUT OUTPUT

CONNECTION QUEUE TREE MANGLE HOTSPOT


TRACKING “GLOBAL” OUTPUT OUT

RAW SIMPLE CONNECTION QUEUE TREE


PREROUTING QUEUE TRACKING “GLOBAL”

HOTSPOT RAW SIMPLE


IN OUTPUT QUEUE

TO IN LOCAL ROUTING
QUEUE TREE
PROCESS TO OUT DECISION INTERFACE HTB

INPUT OUTPUT
INTERFACE INTERFACE
*
Connections Tracking

Quando preciso do rastramento?

 NAT *
 Firewall
 connection-bytes
 connection-mark
 connection-type
 connection-state
 connection-limit
 connection-rate
 layer7-protocol
 new-connection-mark *
 tarpit
FastTrack (NATeia mais rápido)

É ativado se:
• não configurar Mesh e
Metarouter Interface
• não usar Sniffer, Torch e
Traffic Generator
• não usar /tool mac-scan
• não usar /tool ip-scan
• habilitar Fast Path e Route
Cache em IP/Settings

Comandos
/ip firewall filter
add action=fasttrack-connection chain=forward comment="Marca conexoes pra FastTrack" \
connection-state=established,related
add action=accept chain=forward comment=\
"Aceita conexoes Estabelecidas e Relacionadas" connection-state=established,related
FastTrack (IPv4, TCP, UDP e NAT)

*
https://wiki.mikrotik.com/wiki/Manual:IP/Fasttrack
FastTrack Resumo
Bypass
 hotspot universal client
 connection tracking
 firewall
 simple queues
 queue tree with parent=global
 IP accounting
 IPSec
 VRF

Não funciona
 Controle de Banda
 Filtros no Firewall

Cenários
 Borda com NAT e sem controles
 Borda com NAT e No-Track
Fluxo de Pacotes com FastTrack
FORWARD

ROUTING MANGLE FILTER


DECISION
TTL-1 ACCOUNTING
FORWARD FORWARD

PRE POST
ROUTING INPUT OUTPUT ROUTING
ROUTING
MANGLE MANGLE
DST-NAT ADJUSTA-
INPUT MENT POSTROUTING

MANGLE FILTER FILTER


SRC-NAT
PREROUTING INPUT OUTPUT

CONNECTION QUEUE TREE MANGLE HOTSPOT


TRACKING “GLOBAL” OUTPUT OUT

RAW SIMPLE CONNECTION QUEUE TREE


PREROUTING QUEUE TRACKING “GLOBAL”

HOTSPOT RAW SIMPLE


IN OUTPUT QUEUE

TO IN LOCAL ROUTING
QUEUE TREE
PROCESS TO OUT DECISION INTERFACE HTB

INPUT OUTPUT
INTERFACE INTERFACE
*
/ip firewall nat add chain=srcnat

Src: 192.168.1.2 Src: 192.168.1.2


Dst: 8.8.8.8 Dst: 8.8.8.8

Sem NAT

192.168.1.2/24 200.1.1.1 8.8.8.8

Src: 8.8.8.8
Dst: 192.168.1.2
/ip firewall nat add chain=srcnat

Src: 192.168.1.2 Src: 200.1.1.1


Dst: 8.8.8.8 Dst: 8.8.8.8

Com
SRC-NAT

192.168.1.2/24 200.1.1.1 8.8.8.8

Src: 8.8.8.8 Src: 8.8.8.8


Dst: 192.168.1.2 Dst: 200.1.1.1
srcnat - Action: masquerade

Src: 192.168.1.2 Src: 200.1.1.1


Dst: 8.8.8.8 Dst: 8.8.8.8

masquerade

192.168.1.2/24 ether1=200.1.1.1 8.8.8.8


DHCP ou PPPoE
srcnat - Action: src-nat

Src: 192.168.1.2 Src: 200.1.1.2


Dst: 8.8.8.8 Dst: 8.8.8.8

src-nat

192.168.1.2/24 ether1=200.1.1.1/29 8.8.8.8


ether1=200.1.1.2/29
Fixos
srcnat - Action: src-nat

Src: 192.168.1.2 Src: 200.1.1.1


Dst: 8.8.8.8 Dst: 8.8.8.8

192.168.1.2/24 src-nat

Src: 192.168.2.2 ether1=200.1.1.1/29 Src: 200.1.1.2


8.8.8.8
Dst: 8.8.8.8 ether1=200.1.1.2/29 Dst: 8.8.8.8
192.168.2.2/24

Comandos
/ip firewall nat
add action=src-nat chain=srcnat comment=\
"Mascara a rede 192.168.1.0/24 para o IP 200.1.1.1" dst-address-list=!REDE_LOCAL \
dst-address-type=!multicast src-address=192.168.1.0/24 to-addresses=200.1.1.1
add action=src-nat chain=srcnat comment=\
"Mascara a rede 192.168.2.0/24 para o IP 200.1.1.2" dst-address-list=!REDE_LOCAL \
dst-address-type=!multicast src-address=192.168.2.0/24 to-addresses=200.1.1.2
srcnat - Action: netmap

Src: 192.168.1.1 Src: 200.1.1.1


Dst: 8.8.8.8 Dst: 8.8.8.8

192.168.1.1/24 netmap

Src: 192.168.1.2 ether1=200.1.1.1/24 Src: 200.1.1.2


8.8.8.8
Dst: 8.8.8.8 Dst: 8.8.8.8
192.168.1.2/24

Comandos

/ip firewall nat


add action=netmap chain=srcnat comment="Mapeia enderecos 1:1" dst-address-list=!rede-local \
dst-address-type=!multicast src-address=192.168.1.0/24 to-addresses=200.1.1.0/24
srcnat - Action: netmap

Src: 192.168.1.1 Src: 200.1.1.1


Dst: 8.8.8.8 Dst: 8.8.8.8

192.168.1.1/24 netmap

Src: 192.168.1.2 ether1=200.1.1.1/29 Src: 200.1.1.2


8.8.8.8
Dst: 8.8.8.8 Dst: 8.8.8.8
192.168.1.2/24

Comandos

/ip firewall nat


add action=netmap chain=srcnat comment="Mapeia rede /24 para rede /29" dst-address-list=\
!rede-local dst-address-type=!multicast src-address=192.168.1.0/24 to-addresses=200.1.1.0/29
srcnat - Action: same

Src: 192.168.1.1 Src: 200.1.1.1


Dst: 8.8.8.8 Dst: 8.8.8.8

192.168.1.1/24 same

Src: 192.168.1.2 ether1=200.1.1.1/24 Src: 200.1.1.2


8.8.8.8
Dst: 8.8.8.8 Dst: 8.8.8.8
192.168.1.2/24

Comandos

/ip firewall nat


add action=same chain=srcnat comment="Usa o mesmo IP para um servidor especifico" \
dst-address-list=!rede-local dst-address-type=!multicast src-address=192.168.1.0/24 \
to-addresses=200.1.1.0/24
/ip firewall nat add chain=dstnat (DMZ)

Src: 177.1.1.1 Src: 177.1.1.1


Dst: 192.168.1.2 Dst: 200.1.1.1
Com
DST-NAT

192.168.1.1/24

192.168.1.2 177.1.1.1
200.1.1.1

Comandos
/ip firewall nat
add action=dst-nat chain=dstnat comment="Redireciona TUDO do IP 200.1.1.1 para o 192.168.1.2" \
dst-address=200.1.1.1 dst-address-type=local to-addresses=192.168.1.2

Dica: colocar como exceção os serviços do MikroTik, tais como 21, 22, 80, 2000, 8291 ...
/ip firewall nat add chain=dstnat (Port)

Src: 177.1.1.1:5781 Src: 177.1.1.1:5781


Dst: 192.168.1.2:80 Dst: 200.1.1.1:80
Com
DST-NAT

192.168.1.1/24

192.168.1.2:80 177.1.1.1:5781
200.1.1.1:80

Comandos
/ip firewall nat
add action=dst-nat chain=dstnat comment="Redireciona Só a Porta 80 (HTTP)" dst-address=\
200.1.1.1 dst-address-type=local dst-port=80 protocol=tcp to-addresses=192.168.1.2 \
to-ports=80 *
/ip firewall nat add chain=dstnat (+log)
Comandos
/ip firewall nat
add action=dst-nat chain=dstnat comment="Loga (debuga) tudo que entra com destino ao IP 200.\
1.1.1, que seja TCP na porta 80 (HTTP)" dst-address=200.1.1.1 dst-port=80 log=yes \
log-prefix="200.1.1.1:80 - " protocol=tcp to-addresses=192.168.1.2 to-ports=80

dstnat - Action: redirect


Comandos
/ip firewall nat
add action=redirect chain=dstnat comment="Redireciona ICMP para este router" \
protocol=icmp
add action=redirect chain=dstnat comment="Redireciona consultas DNS UDP para este Router" \
dst-port=53 protocol=udp
add action=redirect chain=dstnat comment="Redireciona consultas DNS TCP para este Router" \
dst-port=53 protocol=tcp
add action=redirect chain=dstnat comment="Redireciona HTTP pra o Web Proxy local" dst-port=\
80 protocol=tcp *
Hairpin NAT
DICA

Objetivo
• Acessar recurso na Rede Local, através do IP público
• https://wiki.mikrotik.com/wiki/Hairpin_NAT

Comandos

/ip firewall nat


add chain=dstnat dst-address=200.1.1.1 protocol=tcp dst-port=80 \
action=dst-nat to-address=192.168.1.2
add chain=srcnat out-interface=WAN action=masquerade
add chain=srcnat src-address=192.168.1.0/24 dst-address=192.168.1.2 \
protocol=tcp dst-port=80 out-interface=LAN action=masquerade
Exercício de NAT
Pingue ao PC do Vizinho

1) Pergunte ao vizinho:
1. O IP da interface WAN (172.30.1.ABC)
2. O IP do PC (192.168.XY.?/24)

2) Teste: O PC deve pingar a WAN do vizinho


3) Bloqueie o ping do vizinho na WAN e teste
4) Nateie o ping para o seu PC
5) Teste: O vizinho deve pingar a sua WAN
6) Bloqueie o ping do vizinho ao PC
7) Volte o backup
Controle de Banda e Firewall na Bridge

1. O tráfego que passa de uma porta para outra na


Bridge, pode ser processado pelo Firewall na
CPU, nas chains: prerouting, forward, postrouting
2. Assim podemos criar regras para usar, por
exemplo, em Queues
3. Habilitamos via Terminal com a regra:
/interface bridge settings set use-ip-firewall=yes
4. E via Winbox:
/ip firewall raw

Filtra ataques
• Flood
• DoS e DDOS
• Anti Spoofing

Ações mais comuns


• drop: Dropa pacotes antes de
chegarem na ConnTracking
reduzindo a sobrecarga da CPU
• no track: Bypass a ConnTracking
redes que não necessitam NAT

Cenários
• Grande parte do tráfego usa IPs públicos e pequena parte usa IPs
privados. Ex.: Problema ao cair vários usuários com túneis PPPoE
• Precisa ativar NAT nos roteadores internos para fazer algum tipo de
redirecionamento. Ex: Página de bloqueio
Fluxo de Pacotes Raw
FORWARD

ROUTING MANGLE FILTER


DECISION
TTL-1 ACCOUNTING
FORWARD FORWARD

PRE POST
ROUTING INPUT OUTPUT ROUTING
ROUTING
MANGLE MANGLE
DST-NAT ADJUSTA-
INPUT MENT POSTROUTING

MANGLE FILTER FILTER


SRC-NAT
PREROUTING INPUT OUTPUT

CONNECTION QUEUE TREE MANGLE HOTSPOT


TRACKING “GLOBAL” OUTPUT OUT

RAW SIMPLE CONNECTION QUEUE TREE


PREROUTING QUEUE TRACKING “GLOBAL”

HOTSPOT RAW SIMPLE


IN OUTPUT QUEUE

TO IN LOCAL ROUTING
QUEUE TREE
PROCESS TO OUT DECISION INTERFACE HTB

INPUT OUTPUT
INTERFACE INTERFACE
Raw - Actions: drop
LAB

Objetivo
• Aceitar 30 pings e dropar o resto
• Bloquear Spoofing da Rede Local
• Consumir pouco a CPU

Comandos

/ip firewall raw


add action=drop chain=prerouting comment="Anti Spoofing" \
in-interface-list=LAN src-address-list=!REDE_LOCAL

add action=accept chain=prerouting comment="Aceita 30 pings por segundo" limit=\


30,5:packet protocol=icmp
add action=drop chain=prerouting comment="Dropa pings" protocol=icmp
Raw - Actions: drop
LAB
Objetivo
• Bloquear IPs que não são usados publicamente (BOGONS), e por isto não
devem ser alcançados / roteados

/ip firewall address-list


add address=0.0.0.0/8 comment="Auto Identificacao" list=BOGONS
add address=10.0.0.0/8 comment="Privada - Verifique se voce necessita" \
disabled=yes list=BOGONS
add address=127.0.0.0/8 comment=Loopback list=BOGONS
add address=169.254.0.0/16 comment="Link Local - APIPA" list=BOGONS
add address=172.16.0.0/12 comment="Privada - Verifique se voce necessita" \
disabled=yes list=BOGONS
add address=192.168.0.0/16 comment="Privada - Verifique se voce necessita" \
disabled=yes list=BOGONS
add address=192.0.2.0/24 comment="Reservada - TestNet1" list=BOGONS
add address=192.88.99.0/24 comment="6to4 Relay Anycast" list=BOGONS
add address=198.18.0.0/15 comment="Teste NIDB" list=BOGONS
add address=198.51.100.0/24 comment="Reservada - TestNet2" list=BOGONS
add address=203.0.113.0/24 comment="Reservada - TestNet3" list=BOGONS
add address=224.0.0.0/4 comment="Multicast - Verifique se voce necessita" \
disabled=yes list=BOGONS
/ip firewall raw
add action=drop chain=prerouting comment="dst BOGONS" dst-address-list=BOGONS
*
DICA
Raw - Actions: no track

Objetivo

• Não natear a minha Rede Local com IPs Públicos (Ex.: 177.1.1.0/24)
• Economizar processamento da CPU

Comandos

/ip firewall raw


add action=notrack chain=prerouting comment="Nao natea a REDE LOCAL 177.1.1.0/24" \
src-address=177.1.1.0/24
DICA
Raw - Actions: no track

Objetivo

• Natear só IPs Privados


• Economizar processamento da CPU

Comandos
/ip firewall raw
add action=accept chain=prerouting comment="Deixa pacotes destinados a execoes
passarem pela conntrack" dst-address-list=passa-pela-contrack
add action=accept chain=prerouting comment="Deixa pacotes originados a execoes
passarem pela conntrack" src-address-list=passa-pela-contrack
add action=notrack chain=prerouting comment="Faz bypass de todo restante"
Portas e Protocolos do ROS
Port / Proto Descrição Port / Proto Descrição
20/tcp FTP data connection 1966/udp MME originator message traffic
21/tcp FTP control connection 1966/tcp MME gateway protocol
22/tcp Secure Shell (SSH) remote Login protocol 2000/tcp Bandwidth test server
23/tcp Telnet protocol
5246,5247/udp CAPsMAN
53/tcp
DNS 5678/udp Mikrotik Neighbor Discovery Protocol
53/udp
67/udp Bootstrap protocol or DHCP Server 6343/tcp Default OpenFlow port

68/udp Bootstrap protocol or DHCP Client 8080/tcp HTTP Web Proxy


80/tcp World Wide Web HTTP 8291/tcp Winbox
123/udp Network Time Protocol ( NTP) 8728/tcp API
161/udp Simple Network Management Protocol (SNMP)
8729/tcp API-SSL
179/tcp Border Gateway Protocol ( BGP)
20561/udp MAC winbox
443/tcp Secure Socket Layer (SSL) encrypted HTTP
/1 ICMP
500/udp Internet Key Exchange (IKE) protocol
/2 Multicast | IGMP
520/udp
RIP routing protocol
521/udp /4 IPIP encapsulation
546/udp DHCPv6 Client message /41 IPv6 (encapsulation)
547/udp DHCPv6 Server message
/46 RSVP TE tunnels
646/tcp LDP transport session
General Routing Encapsulation (GRE) - used
/47
646/udp LDP hello protocol for PPTP and EoIP tunnels

1080/tcp SOCKS proxy protocol /50 Encapsulating Security Payload for IPv4 (ESP)

1698/udp /51 Authentication Header for IPv4 (AH)


RSVP TE Tunnels
1699/udp
/89 OSPF routing protocol
1701/udp Layer 2 Tunnel Protocol ( L2TP)
/103 Multicast | PIM
1723/tcp Point-To-Point Tunneling Protocol ( PPTP)
1900/udp /112 VRRP
Universal Plug and Play ( uPnP)
2828/tcp

https://wiki.mikrotik.com/wiki/Manual:IP/Services#Protocols_and_ports
/ip firewall mangle

1. Marcações de pacotes para: 2. Alterações em alguns


• Separar serviços (QoS) campos do cabeçalho IP como:
• Traffic Limit • DSCP (ToS)
• Policy Routing • TTL
• Load Balancing • MSS
Fluxo de Pacotes Mangle
FORWARD

ROUTING MANGLE FILTER


DECISION
TTL-1 ACCOUNTING
FORWARD FORWARD

PRE POST
ROUTING INPUT OUTPUT ROUTING
ROUTING
MANGLE MANGLE
DST-NAT ADJUSTA-
INPUT MENT POSTROUTING

MANGLE FILTER FILTER


SRC-NAT
PREROUTING INPUT OUTPUT

CONNECTION QUEUE TREE MANGLE HOTSPOT


TRACKING “GLOBAL” OUTPUT OUT

RAW SIMPLE CONNECTION QUEUE TREE


PREROUTING QUEUE TRACKING “GLOBAL”

HOTSPOT RAW SIMPLE


IN OUTPUT QUEUE

TO IN LOCAL ROUTING
QUEUE TREE
PROCESS TO OUT DECISION INTERFACE HTB

INPUT OUTPUT
INTERFACE INTERFACE
Mangle - Actions

change DSCP (TOS): troca o


valor dos 3 bits altos do campo
Differentiated Services Code
Point (DSCP) change TTL: troca o valor
do campo Time to Live *

change MSS (TCP): troca o valor do


campo Maximum Segment Size*
clear DF: limpa a flag
'Do Not Fragment'
sniff TZSP: envia pacotes para
um sistema Tazmen Sniffer
Protocol remoto (Wireshark,
prefirir a porta 37008) route: força os pacotes
seguirem por um Gateway
especificado (Prerouting)
set priority: nos pacotes enviados
por meio de um link que é capaz
de transportar prioridade (WMM
https://wiki.mikrotik.com/wiki/Manual:IP/Firewall/Mangle
habilitado na interface wireless ou
VLAN)
Mangle - Actions: change MSS

DICA

Objetivo
• Fragmentar pacotes de links de VPN devido à sobrecarga do
encapsulamento (overhead), antes de enviá-lo pelo link

Comandos

/ip firewall mangle


add action=change-mss chain=forward comment=\
"Fragmenta pacote com MSS grande para ajustar ao MSS da VPN" new-mss=\
1300 out-interface=pppoe-out passthrough=yes protocol=tcp tcp-flags=syn \
tcp-mss=1301-65535
Mangle - Actions: mark …

1. mark connection
Marca o primeiro pacote (new)
Salva informações na ConnTrack
(solicitação e resposta)

2. mark packet
Todo o fluxo (QoS/Limitar)

3. mark routing
Para políticas de roteamento
estático

Só existem dentro do roteador!


Mangle - Actions: mark …
O pacote só pode ter: mark connection
• 1 mark connection • evita abrir todos pacotes
• 1 mark packet • economiza o uso da CPU
• 1 mark routing
Mangle Otimizando o uso da CPU

As Queues só tem a opção “Packet Marks”, então:

1. Marcamos as novas conexões com mark-connection *


2. Adicionamos mark-packet para cada mark-connection

**
Mangle - Actions: mark … (1-2)
LAB em
Queue
Tree
Objetivo
• Marcar serviços para fazer QoS na Queue Tree

Comandos
/ip firewall mangle
add action=mark-connection chain=prerouting comment=DNS connection-state=new \
dst-port=53 new-connection-mark=conexao-dns passthrough=yes protocol=udp
add action=mark-packet chain=prerouting connection-mark=conexao-dns new-packet-mark=\
pacotes-dns passthrough=no
add action=mark-connection chain=prerouting comment="HTTP e HTTPS" connection-state=\
new dst-port=80,443 new-connection-mark=conexao-http passthrough=yes protocol=tcp
add action=mark-connection chain=prerouting connection-state=new dst-port=80,443 \
new-connection-mark=conexao-http passthrough=yes protocol=udp
add action=mark-packet chain=prerouting connection-mark=conexao-http new-packet-mark=\
pacotes-http passthrough=no
add action=mark-connection chain=prerouting comment=ICMP connection-state=new \
new-connection-mark=conexao-icmp passthrough=yes protocol=icmp
add action=mark-packet chain=prerouting connection-mark=conexao-icmp new-packet-mark=\
pacotes-icmp passthrough=no
/queue tree
add max-limit=256k name=Download_Total parent=bridge_LAN
add limit-at=100k max-limit=256k name="HTTP e HTTPS" packet-mark=pacotes-http parent=\
Download_Total
add limit-at=100k max-limit=256k name=DNS packet-mark=pacotes-dns parent=\
Download_Total
add limit-at=56k max-limit=256k name=ICMP packet-mark=pacotes-icmp parent=\
Download_Total
Mangle - Actions: mark … (2-2) LAB em
Queue
Tree
Mangle - Advanced: PCC

Ex.:

Objetivo
• Todo pacote que entra por uma Interface WAN, volta pela mesma WAN
• Balancear com PCC, 2 WAN’s, uma com 100M e outra com 35M
• Rotear proporcionalmente para cada WAN

https://conversor-de-medidas.com/matematica/mdc-maximo-divisor-comum/ *
Layer7
• Faz uma analise mais avançada dos pacotes, busca
parâmetros nas streams ICMP, TCP e UDP

• Lê dados diretamente da camada de aplicação, os


primeiros 10 pacotes de cada conexão ou os
primeiros 2KB, e tenta achar um padrão

• Podemos bloquear/liberar aplicações e sites que não


puderam ser detectados com outros métodos, por
exemplo nas camadas L3 e L4

• Aplica alta sobrecarga na CPU (/tool profile), por isso


usar poucas regras e mais específicas

http://wiki.mikrotik.com/wiki/Manual:IP/Firewall/L7

http://l7-filter.sourceforge.net/protocols *
Layer7
LAB

Objetivo
• Bloquear Facebook
(Obs.: Quando o usuário estiver logado, o Facebook usará o HTTPS,
assim o L7 não poderá identificar esse tráfego.) *

Comandos
/ip firewall layer7-protocol
add name=facebook regexp="^.+(facebook.com|facebook.com.br).*\$"

/ip firewall mangle


add action=mark-connection chain=prerouting comment=\
"MARCA CONEXAO NOVA, IDENTIFICADA COM A LAYER7 ‘facebook’." \
connection-state=new dst-port=53 layer7-protocol=facebook \
new-connection-mark=conexao-facebook passthrough=no protocol=udp

/ip firewall filter


add action=drop chain=input comment="NAO RESOLVE FACEBOOK" connection-mark=\
conexao-facebook protocol=udp
add action=drop chain=forward connection-mark=conexao-facebook protocol=udp
NAT Helpers (Service Ports)

Alguns protocolos exigem chamadas auxiliares de NAT


para funcionar corretamente em uma rede Nateada

IP > Firewall: Service Ports


UPnP - Universal Plug-and-Play
• Implementa, dinamicamente, rede peer-to-peer bidirecional por trás do NAT
• DHCP e DNS serão usados ​se disponíveis
• Usado pra jogos DirectX e recursos do Windows Messenger (assistante
remoto, compartilhamento de aplicativos, transferência de arquivos, voz, vídeo)
• Existem dois tipos de interface:
• interna (LAN, podem ser várias)
• externa (WAN, somente uma)

/ip upnp

https://wiki.mikrotik.com/wiki/Manual:IP/UPnP *
Firewall - filter / nat / mangle / raw
RESUMO e P & R

● Programa
1. Connection tracking
2. Filter
1. chains (default/custom)
2. all rule "actions" covered
3. most common rule "conditions" covered
3. NAT
1. chains (default/custom)
2. all rule "actions" covered
3. most common rule "conditions" covered
4. NAT helpers
4. Mangle
1. chains (default/custom)
2. all rule "actions" covered
3. most common rule "conditions" covered
5. Some complicated rule "conditions"
covered ("advanced", "extra" tab)
6. uPNP
Web Proxy

● Programa
1. Basic configuration
2. Proxy rule lists
1. Access list
2. Direct Access list
3. Cache list
3. Regular expression
Web Proxy
Web Proxy

1. Faz cache de “objetos” da


Internet, via protocolos
HTTP e FTP, para
aumentar de acesso

2. Faz filtro de conteúdo


(nome DNS) ou firewall, de
saída, com e sem cache

3. Redireciona um nome DNS


Web Proxy - Habilitar
LAB
Web Proxy - Como usar?
LAB

1. Não transparente ou regular: É


necessário configurar o endereço e
porta do proxy nos computadores

2. Transparente: Não é necessário


alterar nenhuma configuração nos
computadores (não trata conexões
HTTPS)
Web Proxy - Não Transparente
Web Proxy - Não Transparente
Web Proxy - Não Transparente
Web Proxy - Transparente (Local)

/ip firewall nat


add chain=dstnat protocol=tcp dst-port=80
action=redirect to-ports=8080
Web Proxy - Transparente (Paralelo)

/ip firewall nat


add chain=dstnat protocol=tcp dst-port=80 action=dst-nat
to-addresses=10.10.10.254 to-ports=8080
Web Proxy - Settings (/ip proxy)

Src. Address: IP do proxy

Parente Proxy: IP do Proxy


Pai, caso haja hierarquia

Cache Administrator: nome


ou e-mail mostrado na
página de erro

Cache On Disk: no HD ou
na RAM?

Cache Hit DSCP (TOS):


identifica tráfego do Cache
Web Proxy - Settings (/ip proxy)
Max. Server Connections: Max. Client Connections:
dinâmica, depende dos dinâmica, depende dos
recursos, acima esperam recursos disponívieis

Max. Fresh Time: tempo


máximo que os objetos são
considerados atuais

Serialize Connections: FIFO,


uma conexões por servidor

Cache Path: Nome do Always From Cache: ignore


arquivo e caminho solicitações de atualizações
dos clientes

!
Web Cache - Gerência
Web Cache - Gerência

CACHE SEM RAM HD


max-cache-size: none unlimited unlimited

max-cache-object-size: - 50000KiB 500000KiB

cache-on-disk: - no yes

cache-path: - - disk1/CACHE
Web Proxy - Arquivo de Erro

LAB
Web Proxy - 3 Filtros HTTP

1. Access: Lista de acesso por IP (src e


dst), porta (src e dst), URL, caminho e
método de solicitação. Por padrão
aceita

2. Cache: Lista quais objetos vão ou não


pro cache. Por padrão aceita

3. Direct: Lista de regras que ignoram


(bypass) o Parent e buscam direto na
Web. Por padrão rejeitam
Web Proxy - Access (/ip proxy access)

src-address: IP4/0..32 | IP6/0..128

dst-address: IP4/0..32 | IP6/0..128

method: any | connect | delete | get


| head | options | post | put | trace,
usado pelas requisições HTTP

action: allow | deny

redirect-to: se action=deny,
pode especificar uma URL
Web Proxy - Access (/ip proxy access)

dst-host: IP ou
nome DNS

path: caminho
dentro do site

wiki.mikrotik.com/wiki/Manual:IP/Proxy
www.mikrotik.com/thedude
Web Proxy - Firewall de Conteúdo

LAB

*
Web Proxy/Cache - Segurança

• Quando habilitamos um servidor Proxy,


ele pode ser usado por qualquer usuário,
da rede LAN ou da WAN

• Precisamos garantir que somente os


usuários da LAN tenham acesso ao Proxy
/ip firewall filter
add action=drop chain=input dst-port=8080 in-interface-list=WAN protocol=tcp

• Também devemos bloquear sites de


Proxy como:
• http://kproxy.com/
• https://www.proxysite.com/
Web Proxy

RESUMO e P & R

● Programa
1. Basic configuration
2. Proxy rule lists
1. Access list
2. Direct Access list
3. Cache list
3. Regular expression
QoS (Quality of Service)

● Programa
1. HTB
1. HTB general information
2. HTB implementation (queue tree)
3. HTB structure
4. HTB Dual Limitation
5. HTB priority
2. Burst
3. Queue types
1. FIFO
2. SFQ
3. RED
4. PCQ
5. queue size
4. Simple queues
5. Simple queue and queue tree interaction
Quality of Service - QoS

A Qualidade de Serviço é a
garantia de largura de banda,
quando temos poucos
recursos ou necessidade de
controle do tráfego
Sem QoS

• Os usuários acessam a Internet


de acordo com a disponibilidade
• Um usuário pode consumir toda
a banda
Com QoS

Dependendo do tráfego podemos aplicar


políticas na largura de banda para:

1. Limitar
2. Garantir
3. Priorizar

A implementação é baseada em HTB, que


cria uma estrutura hierárquica de queues
Sobre os Pacotes com Dados

Eles podem ser atrasados (filas) ou


descartados

• Na entrada: Os pacotes são policiados


• Na saída: Os pacotes são enfileirados

O descarte é feito quando deixam o router


• Pacotes TCP serão reenviados
• Pacotes UDP serão descartados
Queue Size
Define se o pacote é descartado, agendado ou os dois

https://wiki.mikrotik.com/wiki/Manual:Queue_Size
Rate (Taxa)

1. Shapers: Limitam (dropam)

2. Schedulers: Equalizam e agendam,


se a fila não estiver cheia
HTB Hierarchical Token Bucket

https://wiki.mikrotik.com/wiki/Manual:HTB-Token_Bucket_Algorithm
HTB Hierarchical Token Bucket

Gerencia a Qualidade de Serviços

• Criando uma estrutura de filas hierárquicas


• Definindo relações entre diferentes tipos de
tráfego, com filas "pai-filha" ou "filha-filha".

A estrutura deve:
1. Classificar e marcar tráfego em Mangle
2. Criar queues (simple/tree) pro tráfego marcado
3. Anexar em Parent (interface ou queue)

https://wiki.mikrotik.com/wiki/Manual:HTB
HTB - Estrutura das Queues

Relações entre as queues


1. Pai-Filha
2. Filha-Filha

Na opção Parent (Pai) escolhemos uma queue-Pai e


assim criamos uma queue-Filha

1. inner-queue (queue-interna) = tem Filha(s)


• distribuem o tráfego
• tem Limit-At
• não tem Priority
2. leaf-queue (queue-folha) = é Filha
• consomem o tráfego (CIR e MIR)
• todas são tratadas da mesma forma no Limit-AT
• tem Priority
HTB - Parent

O RouterOS v6 usa interfaces locais virtuais:

1. GLOBAL = representa todas as


interfaces de entrada e saída juntas,
para clientes que tem limite único de
upload e download
2. INTERFACE HTB = representa a
interface de saída do tráfego
3. PARENT QUEUE = fila criada
HTB - Dupla Limitação (Rate)

1. Limit At (CIR = Commited Information Rate)


• Banda mínima comprometida, no pior cenário
• Não pode ser maior que a MIR
• A soma das Filhas não deve ultrapassar a Banda Total

2. Max Limit (MIR = Maximal Information Rate)


• Banda máxima, no melhor cenário
HTB - Priority

1. O CIR (limit-at) já foi distribuído (os


pacotes não serão reorganizados)
2. A fila com Maior Prioridade receberá
a banda/taxa/rate restante do MIR
• 1 = maior prioridade
• 8 = menor prioridade

3. Só funciona:
• para queue-Filha
• se especificarmos CIR e MIR
HTB 1 - Limit At

https://wiki.mikrotik.com/wiki/Manual:HTB
HTB 1 - Limit At

Todas queue-Filhas querem 10Mbps

Queue01 limit-at=0Mbps max-limit=10Mbps


Queue02 limit-at=4Mbps max-limit=10Mbps
Queue03 limit-at=6Mbps max-limit=10Mbps priority=1
Queue04 limit-at=2Mbps max-limit=10Mbps priority=3
Queue05 limit-at=2Mbps max-limit=10Mbps priority=5

Queue03 irá receber 6Mbps


Queue04 irá receber 2Mbps
Queue05 irá receber 2Mbps

Resultado: Foram satisfeitas todas as garantias (limit-at),


atingindo a capacidade total (max-limit).
HTB 2 - Max Limit
HTB 2 - Max Limit

Todas queue-Filhas querem 10Mbps

Queue01 limit-at=0Mbps max-limit=10Mbps


Queue02 limit-at=4Mbps max-limit=10Mbps
Queue03 limit-at=2Mbps max-limit=10Mbps priority=3
Queue04 limit-at=2Mbps max-limit=10Mbps priority=1
Queue05 limit-at=2Mbps max-limit=10Mbps priority=5

Queue03 irá receber 2Mbps


Queue04 irá receber 6Mbps
Queue05 irá receber 2Mbps

Resultado: Primeiro todas garantias (limit-at) foram


satisfeitas, o HTB fornece a banda restante pra queue-Filha
que tiver maior prioridade.
HTB 3 - Limit At da queue-Interna
HTB 3 - Limit At da queue-Interna

Todas queue-Filhas querem 10Mbps

Queue01 limit-at=0Mbps max-limit=10Mbps


Queue02 limit-at=8Mbps max-limit=10Mbps
Queue03 limit-at=2Mbps max-limit=10Mbps priority=1
Queue04 limit-at=2Mbps max-limit=10Mbps priority=3
Queue05 limit-at=2Mbps max-limit=10Mbps priority=5

Queue03 irá receber 2Mbps


Queue04 irá receber 6Mbps
Queue05 irá receber 2Mbps

Resultado: Primeiro todas garantias (limit-at) das queue-Filhas


foram garantidas. Ainda tem limit-at sobrando na queue-Interna,
que deve ser satisfeita para a Queue04 e Queue05. O HTB
fornece a banda restante pra queue-Filha que tiver maior
prioridade que é a Queue04.
HTB 4 - Limit At da queue-Folha
HTB 4 - Limit At da queue-Folha

Todas queue-Filhas querem 10Mbps

Queue01 limit-at=0Mbps max-limit=10Mbps


Queue02 limit-at=4Mbps max-limit=10Mbps
Queue03 limit-at=6Mbps max-limit=10Mbps priority=1
Queue04 limit-at=2Mbps max-limit=10Mbps priority=3
Queue05 limit-at=12Mbps max-limit=10Mbps priority=5

Queue03 irá receber ~3Mbps


Queue04 irá receber ~1Mbps
Queue05 irá receber ~6Mbps

Resultado: Para satisfazer todas garantias (limit-at) das queue-Filhas o


HTB foi forçado a reserver 20Mbps, mas só tem um max-limit=10Mbps.
Como a interface de saída é normalmente FIFO, vai aloca a banda
mantendo a relação 6:2:12 ou seja mais ou menos 3:1:6, para satisfazer
o max-limit=10Mbps.
Filas

1. /queue simple - facilita o enfileiramento


de upload e download do cliente e limita
num tráfego específico

2. /queue tree - implementa tarefas


avançadas como política de priorização
global e limitações em grupos de
usuários ou serviços. Requer marcar
pacotes em /ip firewall mangle
/queue type e /queue interface

• Antes de enviar os pacotes por uma interface, eles


são processados pelas filas

• Quando um pacote não encontra qualquer fila, ele é


enviado através da interface com prioridade máxima
/queue type Propriedades

Consumo da CPU: Alto


Consumo da CPU: Baixo

Queue Disciplines
(qdisc)

Consumo da
CPU: Médio

PFIFO - Packets First-In First-Out SFQ - Stochastic Fairness Queuing


BFIFO - Bytes First-In First-Out PCQ - Per Connection Queue *
MQ PFIFO - Multi-Queue Packets FIFO RED - Random Early Detect
/queue
FORWARD

ROUTING MANGLE FILTER


DECISION
TTL-1 ACCOUNTING
FORWARD FORWARD

PRE POST
ROUTING INPUT OUTPUT ROUTING
ROUTING
MANGLE MANGLE
DST-NAT ADJUSTA-
INPUT MENT POSTROUTING

MANGLE FILTER FILTER


SRC-NAT
PREROUTING INPUT OUTPUT

CONNECTION QUEUE TREE MANGLE HOTSPOT


TRACKING “GLOBAL” OUTPUT OUT

RAW SIMPLE CONNECTION QUEUE TREE


PREROUTING QUEUE TRACKING “GLOBAL”

HOTSPOT RAW SIMPLE


IN OUTPUT QUEUE

TO IN LOCAL ROUTING
QUEUE TREE
PROCESS TO OUT DECISION INTERFACE HTB

INPUT OUTPUT
INTERFACE INTERFACE
/queue type PFIFO, BFIFO e MQ PFIFO

FIFO (First-In First-Out): o primeiro que entra é o primeiro que sai


• P= pacotes, B= bytes e MQ=Multi-Queue
• Queue Size: Quantos pacotes ou bytes

Todo pacote que não for enfileirado (se a fila estiver cheia) será descartado. Tamanhos
grandes de fila poderão aumentar a latência, mas provê melhor utilização do canal

https://wiki.mikrotik.com/wiki/Manual:Queue#PFIFO.2C_BFIFO_and_MQ_PFIFO
/queue type RED Random Early Detection

Detecção Aleatória Antecipada

É FIFO. Tenta evitar o


congestionamento, mesmo se não
estive cheia, controlando o tamanho
médio da fila

É indicada em links congestionados


com altas taxas de dados. Como é
muito rápida funciona bem com TCP
e não com UDP

https://wiki.mikrotik.com/wiki/Manual:Queue#RED
/queue type SFQ Stochastic Fairness Queuing

Fila de Justiça Estocástica (randômica), garantida por algoritmos de


hashing e round-roubin

• O tráfego identifica 4 opções (src-address, dst-address, src-port e dst-port)


• Dividide em 1024 sub-fluxos, com até 128 pacotes cada
• Não limita o tráfego e não aloca uma fila pra cada fluxo (queue lógica)
• O objetivo é equalizar (sessões TCP e streaming UDP) quando o fluxo do(s)
link(s) (interface(s)) está(ão) completamente cheio(s), para que não degradem
• É do tipo FIFO e usada em conexões wireless

https://wiki.mikrotik.com/wiki/Manual:Queue#SFQ
/queue type PCQ Per Connection Queuing

Enfileiramento por conexão é semelhante


ao SFQ, mas possui recursos adicionais

• Rate: limita a velocidade dos sub-fluxos (filas) *

• Classifier: identificadores de fluxo (dst-


address, dst-port, src-address, src-port)

• Ao classificar fluxos por Dst. Address na


interface local (interface com seus clientes),
cada sub-fluxo PCQ será o Download de um
cliente específico

https://wiki.mikrotik.com/wiki/Manual:Queue#PCQ
https://wiki.mikrotik.com/wiki/Manual:Queues_-_PCQ
/queue type PCQ Per Connection Queuing

• Divide a banda entre usuários de forma


equalizada, com pouca administração
• Usa o algorítimo Round-Robin
• Substitui várias queues FIFO por uma
• Limit: tamanho da fila de cada sub-fluxo
• Total Limit: tamanho máximo de dados
em fila de espera de todos os sub-fluxos
/queue type PCQ Rate

Limita a banda

Compartilha a banda
/queue simple

Fila Simples é usada para limitar facilmente


a velocidade dos clientes, quando faz

1. Download (↓)
2. Upload (↑)
3. Total (Up + Down) (↓ + ↑)

Podem ser criadas dinamicamente pelo


Hotspot, DHCP e PPP
/queue simple add

Total = Upload + Download = Agregado

IP, Rede ou Interface

* IP, Rede ou Interface


Guaranteed Bandwidth

Largura de banda total: 10Mbps


1. Garantido p/ Cliente1: 1Mbps
2. Garantido p/ Cliente2: 4Mbps
3. Garantido p/ Cliente3: 2Mbps
4. Todos Clientes dividem: 3Mbps

Priority
1 = Maior
Tráfego utilizado 8 = Menor

Verde = 0 - 50%
Amarelo = 51 - 75%
Vermelho = 76 - 100% garantido em uso
(ocorre descartes)
/queue simple add LAB

Criar limite de velocidade

1. Target: IP do PC
2. Max Limit:
a) Target Upload = 512k
b) Target Download = 1M
3. Faça download da Imagem_ISO do
endereço http://172.30.1.X
4. Observe o tráfego no Torch e na aba Traffic
da Queue
DICA
/ip kid-control
Burst (Rajada)

1. Permite taxas de
dados mais elevadas
que a MIR, durante
um curto período de
tempo

2. Útil para o tráfego


HTTP - páginas web
carregam mais rápido

Max Limit (MIR): taxa limite


Burst Limit: taxa máxima na rajada
Burst Threshold: limiar da rajada
Burst Time: cálculo da taxa média

https://wiki.mikrotik.com/wiki/Manual:Queues_-_Burst
https://www.youtube.com/watch?v=pQVs9qs3Qjk
Como funciona o Burst

É dado ao cliente:
. Max Limit = 256 kbps
. Burst Limit = 512 kbps
. Burst Threshold = 192 kbps
. Burst Time = 8 seg
. Limit-At = 128 kbps

https://ip-pro.eu/en/tools/mikrotik_burst_calculator
/queue tree add

Fila em Árvore é usada para QoS

1. Não é ordenada
2. Todo o tráfego passa junto
3. Podemos criar uma fila bidirecional na
HTB Global
4. Podemos criar uma fila unidirecional
numa Interface HTB
5. Cada queue-Filha deve ter pacote
marcado em /ip firewall mangle
Mangle - Actions: mark … (1-2) LAB
Objetivo
• Marcar serviços para fazer QoS na Queue Tree

Comandos
/ip firewall mangle
add action=mark-connection chain=prerouting comment=DNS connection-state=new \
dst-port=53 new-connection-mark=conexao-dns passthrough=yes protocol=udp
add action=mark-packet chain=prerouting connection-mark=conexao-dns new-packet-mark=\
pacotes-dns passthrough=no
add action=mark-connection chain=prerouting comment="HTTP e HTTPS" connection-state=\
new dst-port=80,443 new-connection-mark=conexao-http passthrough=yes protocol=tcp
add action=mark-connection chain=prerouting connection-state=new dst-port=80,443 \
new-connection-mark=conexao-http passthrough=yes protocol=udp
add action=mark-packet chain=prerouting connection-mark=conexao-http new-packet-mark=\
pacotes-http passthrough=no
add action=mark-connection chain=prerouting comment=ICMP connection-state=new \
new-connection-mark=conexao-icmp passthrough=yes protocol=icmp
add action=mark-packet chain=prerouting connection-mark=conexao-icmp new-packet-mark=\
pacotes-icmp passthrough=no
/queue tree
add max-limit=10M name=Download_Total parent=bridge_LAN1
add limit-at=9M max-limit=10M name="HTTP e HTTPS" packet-mark=pacotes-http parent=\
Download_Total
add limit-at=512k max-limit=10M name=DNS packet-mark=pacotes-dns parent=\
Download_Total
add limit-at=512k max-limit=10M name=ICMP packet-mark=pacotes-icmp parent=\
Download_Total
Mangle - Actions: mark … (2-2) LAB
QoS (Quality of Service)
RESUMO e P & R

● Programa
1. HTB
1. HTB general information
2. HTB implementation (queue tree)
3. HTB structure
4. HTB Dual Limitation
5. HTB priority
2. Burst
3. Queue types
1. FIFO
2. SFQ
3. RED
4. PCQ
5. queue size
4. Simple queues
5. Simple queue and queue tree interaction

Você também pode gostar