Controllr/Manual/Regras de Bloqueio e Pendencia

De BrByte Wiki
< Controllr‎ | Manual
Revisão de 02h06min de 5 de abril de 2021 por Softov (discussão | contribs)

Novas regras Build 100 2.0

{
######## Substituir os VALUE="XXXX" com as informacoes corretas, para a integracao do MK com o Controllr ########
:global name="IPCTLR" value="192.168.142.22";
:global name="IPCTLRPUBLIC" value="192.168.142.22";
:global name="RADIUSNAS" value="198.18.3.1";
:global name="PINCOMING" value="3799";
# Se tiver perfis notifica ira usar CHECK "sim"
:global name="CHECK" value="sim";
#################################################################################################################
:log warning "Iniciando configuracao do Controllr no MK";
:delay 5s; 
:log warning "Criando o Radius do Controllr";
:if ([/radius find comment~"####CONTROLLR####"] !="") do={:log warning "ja existe um Radius cadastrado";} else={:log warning "Nao existe nenhum Radius cadastrado"; /radius add address=$IPCTLR comment="####CONTROLLR####" secret=brbyte service=ppp src-address=$RADIUSNAS timeout=3s disabled=no};
:delay 5s;
:log warning "Habilitando o Incoming";
/radius incoming set accept=yes port=$PINCOMING;
:delay 5s;
:log warning "Setando as regras do Filter rules";
:log warning "Removendo regras antigas";
/ip firewall filter {
remove [find comment="CONTROLLR"]
remove [find comment~"CTLR-MSG"]
remove [find comment="Controllr"]}; 
:log warning "Recriando os filter rules";
/ip firewall filter {
add action=accept chain=forward  comment="CONTROLLR" dst-port=7840 protocol=tcp
add action=drop   chain=forward   comment="CTLR-MSG-ALERT"   disabled=no dst-address-list=!released_ips dst-port=!53 protocol=udp src-address-list="brb-alert-notice"
add action=drop   chain=forward   comment="CTLR-MSG-ALERT"   disabled=no dst-address-list=!released_ips protocol=tcp src-address-list="brb-alert-notice"
add action=drop   chain=forward   comment="CTLR-MSG-BLOCK"   disabled=no dst-address-list=!released_ips dst-port=!53 protocol=udp src-address-list="brb-block-notice"
add action=drop   chain=forward   comment="CTLR-MSG-BLOCK"   disabled=no dst-address-list=!released_ips protocol=tcp src-address-list="brb-block-notice"
add action=drop   chain=forward   comment="CTLR-MSG-CANCEL"  disabled=no dst-address-list=!released_ips dst-port=!53 protocol=udp src-address-list="brb-cancel-notice"
add action=drop   chain=forward   comment="CTLR-MSG-CANCEL"  disabled=no dst-address-list=!released_ips protocol=tcp src-address-list="brb-cancel-notice"
add action=drop   chain=forward   comment="CTLR-MSG-BLOCK"   disabled=no dst-address-list=!released_ips dst-port=!53 protocol=udp src-address-list="brb-block-auth"
add action=drop   chain=forward   comment="CTLR-MSG-BLOCK"   disabled=no dst-address-list=!released_ips protocol=tcp src-address-list="brb-block-auth"
add action=drop   chain=forward   comment="CTLR-MSG-CANCEL"  disabled=no dst-address-list=!released_ips dst-port=!53 protocol=udp src-address-list="brb-cancel-auth"
add action=drop   chain=forward   comment="CTLR-MSG-CANCEL"  disabled=no dst-address-list=!released_ips protocol=tcp src-address-list="brb-cancel-auth"
add action=drop   chain=forward   comment="CTLR-MSG-DISABLE" disabled=no dst-address-list=!released_ips dst-port=!53 protocol=udp src-address-list="brb-disabled"
add action=drop   chain=forward   comment="CTLR-MSG-DISABLE" disabled=no dst-address-list=!released_ips protocol=tcp src-address-list="brb-disabled"};
:delay 5s;
#OBS Essa regra serve para saber qual o IP do seu Controllr, que está vindo com o Comando de desconexao.
:log warning "Regra do radius log";
:log warning "Removendo regra do log antiga";
/ip firewall filter remove [find comment="CTLR-RADIUS-LOG"];
:log warning "Recriando regra do radiuslog";
/ip firewall filter add action=add-src-to-address-list address-list=radius_log address-list-timeout=30m chain=input comment=CTLR-RADIUS-LOG dst-port=3799 protocol=udp;
:log warning "Setando as regras de redirecionamento - NAT para acessar o seu Controllr fora da rede";
:log warning "Removendo redirecionamentos antigos"; 
/ip firewall nat remove [find comment~"ACESSO"];
:log warning "Recriando os redirecionamentos";
:if ([$IPCTLRPUBLIC] =$IPCTLR) do={:log warning "IP da maquina e igual o ip publico. Nao tem dst-nat"} else={/ip firewall nat {
add action=dst-nat chain=dstnat comment="CTLR-ACESSO-WEB-HTTP"      dst-port=8080 protocol=tcp to-addresses=$IPCTLR to-ports=8080
add action=dst-nat chain=dstnat comment="CTLR-ACESSO-WEB-HTTPS"     dst-port=8443 protocol=tcp to-addresses=$IPCTLR to-ports=8443
add action=dst-nat chain=dstnat comment="CTLR-ACESSO-SSH"           dst-port=2229 protocol=tcp to-addresses=$IPCTLR to-ports=2229
add action=dst-nat chain=dstnat comment="CTLR-ACESSO-SERVICO"       dst-port=8083 protocol=tcp to-addresses=$IPCTLR to-ports=8083
add action=dst-nat chain=dstnat comment="CTLR-ACESSO-HOTSITE-HTTP"  disabled=yes dst-address=$IPCTLRPUBLIC dst-port=80  protocol=tcp to-addresses=$IPCTLR to-ports=80
add action=dst-nat chain=dstnat comment="CTLR-ACESSO-HOTSITE-HTTPS" disabled=yes dst-address=$IPCTLRPUBLIC dst-port=443 protocol=tcp to-addresses=$IPCTLR to-ports=443};
};
#OBS: O redirecionamento para o Hotsite está desabilitado, pois **dst-address** tem que ser o seu IP publico, para poder acessar o Hotsite dentro e fora da rede pelo IP publico.
:delay 5s;
:log warning "Redirecionamento para as telas de pendencias";
:log warning "Removendo redirecionamentos antigos de pendencias";
/ip firewall nat remove [find comment~"CTLR-MSG"];
:log warning "Recriando os redirecionamento de pendencias";
:if ([$CHECK] ="nao") do={:log warning "Nao ira redirecionar";} else={/ip firewall nat{
add action=dst-nat chain=dstnat comment="CTLR-MSG-ALERT-HTTP"   	 disabled=no  dst-address-list=!released_ips dst-port=80  protocol=tcp src-address-list=brb-alert-notice     to-addresses=$IPCTLR to-ports=8090
add action=dst-nat chain=dstnat comment="CTLR-MSG-ALERT-HTTPS"  	 disabled=no  dst-address-list=!released_ips dst-port=443 protocol=tcp src-address-list=brb-alert-notice     to-addresses=$IPCTLR to-ports=8490
add action=dst-nat chain=dstnat comment="CTLR-MSG-PENDENCY-HTTP"     disabled=no  dst-address-list=!released_ips dst-port=80  protocol=tcp src-address-list=brb-pendency-notice  to-addresses=$IPCTLR to-ports=8091
add action=dst-nat chain=dstnat comment="CTLR-MSG-PENDENCY-HTTPS"    disabled=no  dst-address-list=!released_ips dst-port=443 protocol=tcp src-address-list=brb-pendency-notice  to-addresses=$IPCTLR to-ports=8491
add action=dst-nat chain=dstnat comment="CTLR-MSG-BLOCK-HTTP"        disabled=no  dst-address-list=!released_ips dst-port=80  protocol=tcp src-address-list=brb-block-notice     to-addresses=$IPCTLR to-ports=8092
add action=dst-nat chain=dstnat comment="CTLR-MSG-BLOCK-HTTPS"     	 disabled=no  dst-address-list=!released_ips dst-port=443 protocol=tcp src-address-list=brb-block-notice     to-addresses=$IPCTLR to-ports=8492
add action=dst-nat chain=dstnat comment="CTLR-MSG-CANCEL-HTTP"  	 disabled=no  dst-address-list=!released_ips dst-port=80  protocol=tcp src-address-list=brb-cancel-notice    to-addresses=$IPCTLR to-ports=8093
add action=dst-nat chain=dstnat comment="CTLR-MSG-CANCEL-HTTPS" 	 disabled=no  dst-address-list=!released_ips dst-port=443 protocol=tcp src-address-list=brb-cancel-notice    to-addresses=$IPCTLR to-ports=8493};
};
:delay 5s;
#OBS essa regra serve para notificar todos os seus clientes, caso tenha alguma manutencao na sua rede ou outra coisa, so habilite ela caso saiba como funciona.
:log warning "Redirecionamento para a tela de aviso";
:log warning "Removendo redirecionamentos de aviso antigos";
/ip firewall nat remove [find comment~"CTLR-AVISO"];
/tool netwatch remove [find comment="CTLR-AVISO"];
:delay 5s;
:log warning "Criando regras mangle";
:log warning "Removendo mangle antigo";
/ip firewall mangle remove [find comment~"CTLR"];
:log  warning "Recriando regras do mangle";
:if ([$CHECK] ="sim") do={:log warning "Ira usar perfis com NOTICE e AUTH"; /ip firewall mangle {
add action=jump chain=prerouting  comment=CTLR-JUMP-ALERT    dst-address-list=!released_ips jump-target=CONTROLLR src-address-list="brb-alert-notice"
add action=jump chain=prerouting  comment=CTLR-JUMP-PENDENCY dst-address-list=!released_ips jump-target=CONTROLLR src-address-list="brb-pendency-notice"
add action=jump chain=prerouting  comment=CTLR-JUMP-BLOCK    dst-address-list=!released_ips jump-target=CONTROLLR src-address-list="brb-block-notice"
add action=jump chain=prerouting  comment=CTLR-JUMP-CANCEL   dst-address-list=!released_ips jump-target=CONTROLLR src-address-list="brb-cancel-notice"
add action=jump chain=prerouting  comment=CTLR-JUMP-ALERT    dst-address-list=!released_ips jump-target=CONTROLLR src-address-list="brb-alert-auth"
add action=jump chain=prerouting  comment=CTLR-JUMP-PENDENCY dst-address-list=!released_ips jump-target=CONTROLLR src-address-list="brb-pendency-auth"
add action=jump chain=prerouting  comment=CTLR-JUMP-BLOCK    dst-address-list=!released_ips jump-target=CONTROLLR src-address-list="brb-block-auth"
add action=jump chain=prerouting  comment=CTLR-JUMP-CANCEL   dst-address-list=!released_ips jump-target=CONTROLLR src-address-list="brb-cancel-auth"
add action=jump chain=prerouting  comment=CTLR-JUMP-DISABLE  dst-address-list=!released_ips jump-target=CONTROLLR src-address-list="brb-disabled"
add action=accept chain=CONTROLLR comment=CTLR-CHAIN-ACCEPT};
} else={:log warning "Nao usa dois perfis"; /ip firewall mangle { 
add action=jump chain=prerouting  comment=CTLR-JUMP-ALERT     dst-address-list=!released_ips jump-target=CONTROLLR src-address-list="brb-alert-notice"
add action=jump chain=prerouting  comment=CTLR-JUMP-PENDENCY  dst-address-list=!released_ips jump-target=CONTROLLR src-address-list="brb-pendency-auth"
add action=jump chain=prerouting  comment=CTLR-JUMP-BLOCK     dst-address-list=!released_ips jump-target=CONTROLLR src-address-list="brb-block-auth"
add action=jump chain=prerouting  comment=CTLR-JUMP-CANCEL    dst-address-list=!released_ips jump-target=CONTROLLR src-address-list="brb-cancel-auth"
add action=jump chain=prerouting  comment=CTLR-JUMP-DISABLE   dst-address-list=!released_ips jump-target=CONTROLLR src-address-list="brb-disabled"
add action=accept chain=CONTROLLR comment=CTLR-CHAIN-ACCEPT};
};
:delay 5s;
:log warning "Criando address list";
:log warning "Removendo released_ips antigos";
/ip firewall address-list remove [find list=released_ips];
:if ([$IPCTLRPUBLIC] =$IPCTLR) do={:log warning "IP da maquina e igual o ip publico"; /ip firewall address-list {
add address=$IPCTLR       list=released_ips
add address=8.8.8.8       list=released_ips
add address=8.8.4.4       list=released_ips};
} else={/ip firewall address-list {
add address=$IPCTLR       list=released_ips
add address=8.8.8.8       list=released_ips
add address=8.8.4.4       list=released_ips
add address=$IPCTLRPUBLIC list=released_ips};
};
:delay 5s;
:log warning "Configurando Scheduler - Agendador";
/system scheduler {
remove [find name="Pendency"]
remove [find name~"CTLR-MSG"]
add interval=2m name="CTLR-MSG-PENDENCY" on-event="/ip firewall address-list set list=\"brb-pendency-auth\" [find where list=\"brb-pendency-notice\"]" policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive start-time=startup};
:delay 5s;
:log warning "Habilitando a porta API do MK";
/ip service set api address="" disabled=no port=8728;
:delay 5s;
:log warning "Setando o Interim Update";
/ppp aaa set interim-update=1m use-radius=yes;
:delay 5s;
:log warning "Configuracoes setadas com sucesso";
}

PasteBin Clique aqui para acessar o site



Regras de Bloqueio e Pendência

Para configurar a exibição das páginas de bloqueio primeiro é necessário testar o acesso a página de bloqueio e pendência manualmente, através do ip local do seu controllr na porta 8091 e 8092.

   ex: http://192.168.10.2:8091.

Caso não apareça a tela de bloqueio e pendência nestes endereços você deve abrir o aplicativo Configurações do Controllr > Endereços do Servidor e clicar em Salvar, pro sistema criar as páginas. Após isso acesse novamente as porta 8091 e 8092 para verificar a exibição das páginas.

Após o procedimento acima e validação da entrega das mensagens pelo sistema, caso não esteja aparecendo a tela de bloqueio pro cliente é por que as configurações das regras de bloqueio e pendência no Mikrotik não estão corretas ou não existem.

Outro detalhe é que a página não aparece quando o cliente tenta acesso em sites HTTPS, (ex: https://facebook.com), as páginas serão exibidas apenas quando o usuário tentar acessar um página HTTP, ou seja sem SSL.


Regras do Mikrotik

A partir dessa versão do Controllr, as regras devem ser atualizadas no seu Mikrotik, pois foram modificados os parâmetros e incluso novas regras, para que seja comprida as normas da ANATEL.

As telas de mensagens, foram modificadas:

  • Porta 8090: Página de aviso de Notificação, segundo a ANATEL o Cliente deve ser notificado que está em débito com o Provedor.
  • Porta 8091: Página de aviso de redução de Velocidade (antiga pendência).
  • Porta 8092: Página de aviso de Bloqueio.
  • Porta 8093: Página de aviso de Cancelamento.
  • Porta 8096: Página de aviso Customizado. - Por padrão as regras desta porta encontram-se desabilitadas


Veja como configurar cada uma das Páginas Páginas de Aviso disponível no App Configurações do Controllr.


Explicação completa no nosso fórum.

https://community.brbyte.com/forum/view/post/5222


Características de cada Address List

ALERTA - brb-alert - Redirecionamento porta 8090

  • Bloqueio total até que seja confirmado (via login) que o responsável pelo contrato está ciente do atraso e sua conexão sofrerá alterações no futuro próximo caso não venha a quitar seu débito junto ao provedor.


REDUÇÃO de VELOCIDADE - brb-pendency - Redirecionamento porta 8091

  • Bloqueio parcial da navegação (apenas navegação WEB) redirecionando todas as navegações WEB do usuário para a página informativa de Redução de Velocidade.
  • Ao fim do tempo determinado no 'Scheduller' (atualmente já configurado) do Mikrotik usuário é removido da address list voltando o acesso, entretanto sua velocidade de acesso internet permanecerá com a velocidade Reduzida.


BLOQUEIO - brb-block - Redirecionamento porta 8092

  • Bloqueio total da navegação do cliente, redirecionado para a página de bloqueio sempre que realizar acesso WEB.


CANCELAMENTO - brb-cancel - Redirecionamento porta 8093

  • Bloqueio total da navegação e desativação do Contrato do cliente.


DESABILITADO - brb-disabled - Redirecionamento porta 8093

  • Bloqueio total da navegação e desativação do Contrato do cliente.
  • Status só aparece em procedimentos do usuário ativo e em processo de desconexão


Dicas e Download do script

Atenção onde estão os IPs "192.168.0.0" deve ser alterado para o IP do seu Controllr

Atenção para quem estiver na Build 125 e for para 126 deve se atualizar somente as regras 1 / 3 / 4 / 5 / 6 e 8

Segue link para download do script em TXT


Regras block e pendency anatel.png


Segue link para download do script em TXT

Regras Opcionais

Uma explicação básica de como é a logica do funcionamento das regras opcionais contidas neste manual.

ATENÇÃO Só aplique essa regra, se souber o que ela faz.


Página Customizada

Regra para redirecionamento para Página de Aviso Customizado por padrão esta regra vem desabilitada pois redireciona todos usuários do concentrador sem critério.

   /ip firewall nat
   add action=dst-nat chain=dstnat comment=CTLR-MSG-AVISO disabled=yes dst-port=80,443 protocol=tcp to-addresses=172.30.254.2 to-ports=8096

Ps. Esta regra trabalha em conjunto com a NETWATCH deste capitulo onde o monitoramento é responsável por Ativar e Desativar esta NAT


Netwatch

Essa regra fica pingando o DNS do Google para verificar se sua rede tem internet, se por um acaso parar de pingar será habilitado a regra de redirecionamento para todos os clientes para a tela de Aviso Customizado do Controllr.

Assim como as demais Páginas de Aviso podem ser configuradas.


   /tool netwatch
   add disabled=yes down-script="/ip firewall nat set [find comment=\"CTLR-MSG-AVISO\"] disabled=no" host=8.8.8.8 interval=30m up-script="/ip firewall nat set [find comment=\"CTLR-MSG-AVISO\"] disabled=yes"



Limpeza de Notificação

ATENÇÃO Só aplique essa regra, se souber o que ela faz.

Se não quiser utilizar a regulamentação para notificar o cliente (obrigar login e registro de leitura) poderá notifica-lo de 4 em 4 horas por 2 minutos. (Esse tempo pode ser alterado, conforme a sua necessidade) Para essa regra funcionar TEM que deixar desabilitado as regras de filter rules e de NAT com o comentário CTLR-MSG-NOTIFICACAO

   /system scheduler
   add disabled=yes interval=4h name="CTLR-MSG-NOTIFICACAO" on-event=\
       ":foreach nat in=[/ip firewall nat find comment=\"CTLR-MSG-NOTIFICACAO\"] do={/ip firewall nat enable \$nat}\r\
       \n:foreach drop in=[/ip firewall filter find comment=\"CTLR-MSG-NOTIFICACAO\"] do={/ip firewall filter enable \$drop}\r\
       \n:delay 120s\r\
       \n:foreach nat in=[/ip firewall nat find comment=\"CTLR-MSG-NOTIFICACAO\"] do={/ip firewall nat disable \$nat}\r\
       \n:foreach drop in=[/ip firewall filter find comment=\"CTLR-MSG-NOTIFICACAO\"] do={/ip firewall filter disable \$drop}" policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon start-time=startup


Identificar IP do Radius

Devido a NAT na rede ou outros roteamento inadequado o endereço IP dos pacotes originados pelo Controllr pode sofrer alteração de IP chegando no MK com outro endereço e muitas vezes negado por desconhecer este IP como um Radius.

Para saber qual o IP que está chegando na volta do Controllr para o Mikrotik. Se o Controllr não estiver derrubando os clientes do Mikrotik

Se for um IP diferente do cadastrado no Radius do Mikrotik, deve-se cadastar esse IP também no Radius do Mikrotik.


   /ip firewall filter
   add action=add-src-to-address-list address-list=RADIUS_LOG address-list-timeout=1d chain=input comment="MONITORAMENTO RADIUS" dst-port=3799 protocol=udp



Vídeo


BUILD 125 e anteriores

Atenção onde estão os IPs "192.168.0.0" deve ser alterado para o IP do seu Controllr


Blk pen 1.png



Segue link para download do script em TXT