MIKROTIK: Manipulando Address-List

O Roteadores Mikrotik permitem a criação de listas de endereços IP, que podem ser utilizados no modulo firewall de inúmeras formas, para bloqueio e/ou liberação e monitoramento de acessos de de determinados IP´s ou faixas de IP´s.

Características de uma entrada Address-list

Toda lista possui um ID, o nome da lista, endereço/faixa de IP´s, pode conter um tempo de expiração, e também um comentário.

ID

Quando uma entrada é adicionada a lista, recebe um identificador sequencial, chamado ID, que pode ser utilizado para manipulação da entrada. Este ID é somente leitura e não pode ser atualizado.

list

O Nome da lista, é utilizado para referencia-la nas regras de firewall, assim, uma lista de ip´s liberados poderia ter o nome de WHITELIST, ou em bom portugues LIBERADOS.

Importante, o nome da lista é case-sensitive, ou seja, WHITELIST e whitelist, são tratadas pelo MIKROTIK como listas distintas.

No exemplo abaixo, utilizando o comando print, são listadas duas regras, x1 e X1

address

O campo endereço, pode conter um IP individual, como 1.1.1.1, ou por exemplo uma faixa como 1.1.1.0/24, 1.1.0.0/16, ou, 1.0.0.0/8

Além de um endereço IP, o campo address, pode conter um endereço dns, nesse caso, o MIkrotik irá resolver o DNS informado e criará uma entrada dinâmica com o endereço IP referente ao DNS resolvido.

timeout

Cada entrada da lista, pode possuir um tempo de expiração, que após expirado faz com que a entrada seja removida do Mikrotik. O Tempo de expiração é definido utilizando o formato: Horas:Minutos:Segundos, ambos com 2 dígitos, assim uma entrada que deve permanecer por 1 hora e meia, possuirá o valor 01:30:00.

Em alguns casos é necessário manter a entrada por alguns dias, então deve-se informar o número de dias seguido da letra d, e então horas:minutos:segundos, como no exemplo abaixo, 30 dias, 10 horas, 30 minutos e 15 segundos:
30d10:30:15

Se o campo timeout, estiver ausente, a entrada permanecerá indefinidamente na lista.

comment

O campo comentário é opcional, pode servir para identificação da entrada/endereço, e ser utilizado em scripts para manipulação da lista.

Manipulando a address-list via terminal

Criando uma entrada na address -list

/ip firewall address-list add \
    list=whitelist address=1.1.1.1 comment="OpenDNS"

Listando as entradas da address-list

Utilizando o comando abaixo, é listado todos as as entradas da address-list, com seu ID, name, address, timeout e comment, estas propriedades podem ser utilizadas em filtros em manipulações em lote, como atualizações e remoções de entradas.

/ip firewall address-list print

Removendo entradas

Pelo ID: neste exemplo iremos remover a entrada com ID igual a 5000, para saber o ID da entrada utilize o comando print.

/ip firewall address-list remove number=5000

Usando consultas/filtros

Nestes exemplos, ao invés de utilizar o ID da entrada, iremos remover todas as entradas que possuem uma propriedade com um valor especifico, campos comment e list..

Remover as entradas que possuem um comentário OpenDNS

/ip firewall address-list remove \
    [/ip firewall address-list find comment="OpenDNS"]

Remover as entradas da lista whitelist

/ip firewall address-list remove \
    [/ip firewall address-list find list=whitelist]

SCRIPTs

Em algumas definições e ferramentas do MIKROTIK, é possível executar um script quando algum evento é disparado, como por exemplo no DHCP SERVER quando um endereço IP é atribuído, quando uma nova conexão VPN é iniciada ou finalizada (profile), nestes disparadores de evento, são passados variáveis ao script que podem ser usadas para automatizar certas situações.

O nome das variáveis podem ser encontradas na wiki do Mikrotik

Nas conexões VPN, o script é definido no Profile

https://wiki.mikrotik.com/wiki/Manual:PPP_AAA

Nessa opção são disponibilizados ao script as seguintes variáveis, que podem ser usadas em scripts ON-UP e ON-DOWN:

  • user
  • local-address
  • remote-address
  • caller-id
  • called-id
  • interface

Para utilizar uma variável preceda o o nome da mesma com $, colocando o nome da variável entre ” aspas duplas. Como no exemplo abaixo.

/ip firewall address-list add list=VPN \
    address=$"caller-id" comment=$user timeout=1d

Mais informações

https://wiki.mikrotik.com/wiki/Manual:IP/Firewall/Address_list