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

Conheça o DOH – DNS OVER HTTP

O que é o DOH?

O DOH, é um novo protocolo de resolução de nomes que utiliza o https para efetuar consultas seguras.

Hoje, o protocolo DNS não utiliza criptografia, assim, todas as consultas que seu computador faz aos servidores DNS, podem ser lidas por alguém no caminho, com acesso ao meio de comunicação, inclusive os provedores fazem uso desse meio para bloqueio de sites.

Como o DOH funciona?

Em vez de uma consulta plain text, o DOH utiliza o protocolo HTTPS para se comunicar com o servidor DNS.

Mais segurança

Todas as consultas são criptografadas, não podem ser intermediadas nem observadas por alguém(servidor/aplicativo/servidor/provedor) que estiver no meio do caminho; tornando assim suas consultas privadas e impossíveis de serrem alteradas.

Tudo tem um custo

Por utilizar criptografia, e o protocolo http, as consultas tem um overhead adicional, sendo um pouco mais lentas que uma consulta direta via protocolo DNS padrão. Mas se a sua necessidade de segurança é necessária, este problema deixa de ser um empecilho, visto que a consulta pode ser cacheada para utilização posterior.

Utilizar o DOH

No Windows, a Microsoft prepara uma implementação do procololo que estará disponível para o Windows 10 em breve, até lá, é possivel utilizar um ciente DOH, como o https://yogadns.com/

Para outros sistemas operacionais, existem alternativas que podem ser verificadas no site https://dnscrypt.info/implementations/

Cliente DOH da Cloudfare

Links Cloudflare:

Cliente DOH para C# (NetCore)

https://github.com/TechnitiumSoftware/DNS-over-HTTPS

Android: Comandos ADB

ADB significa Android Debug Bridge, ele faz a ponte entre o ambiente de desenvolvimento e dispositivos Android, sejam eles virtuais (emulados) ou físicos. Ele fornece uma interface  de terminal que permite a comunicação com o dispositivo.

Resolver problemas de conexão

Os emuladores e dispositivos Android diversas vezes param e não conectam mais, abaixo seguem alguns passos que podem ajudar.

  1. Desconecte o dispositivo do computador se for físico, caso seja emulador, tente reiniciar o mesmo.
  2. Conecte o dispositivo na mesma rede do seu PC de desenvolvimento, no caso do dispositivo conectar por rede wifi e o PC por cabo, ambos deverão estar acessíveis na rede, seja em bridge ou por roteamento local.
  3. Habilite o modo desenvolvedor em seu dispositivo, geralmente menu configurações, Programador, Depuração USB.
  4. Localize o Endereço IP do seu dispositivo, clicando sobre a conexão wifi nas configurações do seu dispositivo Android para poder fazer as configurações.

Listar dispositivos conectados

adb devices

Conectar ADBO via WIFI

adb tcpip 5555
adb connect 192.168.0.100:5555

 

Xamarin HotReload não atualiza o dispositivo!

Utilize o comando abaixo para redirecionar as portas.

adb forward tcp:8000 tcp:8000

https://github.com/AndreiMisiukevich/HotReload

IPBlockCountry – Bloqueio por Pais (Mikrotik/Windows Server/Linux)

Windows Server

Utilizar o script import-firewall-blocklist.ps1 que cria uma lista de restrições baseadas nos ips/faixas de ips informados no arquivo .txt

Para executar deve ser usado o powershell, a ativado o recurso de execucao de scripts com o comando:

Set-ExecutionPolicy RemoteSigned

Referência:
//stackoverflow.com/questions/4037939/powershell-says-execution-of-scripts-is-disabled-on-this-system

Algumas fontes para listas de ip´s:

//www.ipdeny.com/ipblocks/

Pode-se obter a lista de ips de forma automática, acessando a url por codigo de pais, exemplo: //www.ipdeny.com/ipblocks/data/countries/xx.zone

Ips da China cn//www.ipdeny.com/ipblocks/data/countries/cn.zone
Ips Argentina ar//www.ipdeny.com/ipblocks/data/countries/ar.zone

//www.okean.com/thegoods.html
//www.countryipblocks.net/
//www.wizcrafts.net/iptables-blocklists.html
//www.iblocklist.com
//lite.ip2location.com

Mikrotik

No mirkotik pode-se utilizar uma address list, e duas regras de firewall, uma para input e outra para foward.

Exemplo de script:

  1. Remove todos os endereços da lista de bloqueio vigente.
  2. Adiciona os Ip´s a lista de bloqueio.
  3. Remove as regras antigas de Bloqueio
  4. Cria as novas regras de bloqueio na 2a posição.

/ip firewall address-list
remove [find list=BLOCK-Country]
add address=203.95.208.0/22 list=BLOCK-Country
add address=203.95.224.0/19 list=BLOCK-Country
add address=203.99.8.0/21 list=BLOCK-Country
add address=203.99.16.0/20 list=BLOCK-Country
add address=203.99.80.0/20 list=BLOCK-Country
add address=203.100.32.0/20 list=BLOCK-Country
add address=203.100.48.0/21 list=BLOCK-Country
add address=203.100.58.0/24 list=BLOCK-Country
add address=203.100.60.0/24 list=BLOCK-Country
add address=203.100.63.0/24 list=BLOCK-Country
add address=203.100.80.0/20 list=BLOCK-Country
add address=203.100.96.0/19 list=BLOCK-Country
add address=203.100.192.0/20 list=BLOCK-Country
add address=203.104.32.0/20 list=BLOCK-Country
add address=203.105.96.0/19 list=BLOCK-Country
add address=203.105.128.0/19 list=BLOCK-Country
add address=203.107.0.0/17 list=BLOCK-Country
add address=203.110.160.0/19 list=BLOCK-Country
add address=203.110.208.0/20 list=BLOCK-Country
add address=203.110.232.0/23 list=BLOCK-Country
add address=203.110.234.0/24 list=BLOCK-Country
add address=203.114.80.0/22 list=BLOCK-Country
add address=203.114.84.0/22 list=BLOCK-Country
add address=203.114.88.0/22 list=BLOCK-Country
add address=203.114.92.0/22 list=BLOCK-Country
add address=203.114.244.0/22 list=BLOCK-Country
add address=203.118.192.0/19 list=BLOCK-Country
add address=203.118.241.0/24 list=BLOCK-Country
add address=203.118.248.0/22 list=BLOCK-Country
add address=203.119.24.0/21 list=BLOCK-Country
add address=203.119.32.0/22 list=BLOCK-Country
add address=203.119.80.0/22 list=BLOCK-Country
add address=203.119.85.0/24 list=BLOCK-Country
add address=203.119.113.0/24 list=BLOCK-Country
add address=203.119.114.0/23 list=BLOCK-Country
add address=203.119.116.0/22 list=BLOCK-Country
add address=203.119.120.0/21 list=BLOCK-Country
add address=203.119.128.0/17 list=BLOCK-Country
add address=203.123.58.0/24 list=BLOCK-Country
add address=203.128.32.0/19 list=BLOCK-Country
add address=203.128.96.0/19 list=BLOCK-Country
add address=203.128.224.0/21 list=BLOCK-Country

/ip firewall filter
remove [find comment=BLOCK-Country]
add action=drop chain=input comment="BLOCK-Country" log-prefix="Block Country" src-address-list=BLOCK-Country place-before=3
add action=drop chain=forward comment="BLOCK-Country" log-prefix="Block Country" src-address-list=BLOCK-Country place-before=3

Linux

Usando .htaccess voce pode bloquear acessos ao seu website diretamente.

order allow,deny
 allow from all
 # Get up-to-date list from //www.wizcrafts.net/russian-blocklist.html
deny from 2.72.0.0/13 2.92.0.0/14 2.132.0.0/14 
deny from 5.34.56.0/22 5.60.0.0/16 5.143.0.0/16
deny from 80.48.0.0/13 80.70.96.0/20

Para boqueio de todos os serviços deve-se utilizar iptables.

Referencias: //www.parkansky.com/china.htm

Palestra sobre APRS e Estações Meteorológicas na ATRA Timbó

Na noite de 20-09-2018, o nosso Colega ANDERSON KOVALSKI (PU5-ALK), na noite de ontem (20.09.2018), proferiu interessante palestra para os Sócios da ASSOCIAÇÃO TIMBOENSE DE RADIOAMADORES – ATRA, em reunião que contou com as presenças do Coronel WALTER FERREIRA PÓVOAS JÚNIOR e do Capitão RODRIGO VANDERLINDE (Corpo de Bombeiros Militar).

Continue lendo “Palestra sobre APRS e Estações Meteorológicas na ATRA Timbó”

SQLSERVER : Criando sinônimos para todas as tabelas do banco

Algumas vezes, precisamos um banco de dados secundário, e nele criar “sinonimos” para as tabelas em outro banco, para facilitar este trabalho, este script faz a criação do script pra ser executado no novo db, criando os apontamentos para as tabelas do banco de dados real.

O script gera a lista de comandos para executar a tarefa, podendo ser editado e removida as tabelas desnecessárias conforme sua necessidade.

Comandos:

CREATE SYNONYM MyProduct FOR AdventureWorks2012.Production.Product; GO

Script SQl pra gerar os sinônimos para um banco de dados.


-- //docs.microsoft.com/en-us/sql/t-sql/language-elements/fetch-transact-sql

GO
DECLARE @OldDB varchar(50)
DECLARE @nometabela varchar(50)

SET @OldDB = ‘NFCeHomologacaoDBServer’;

DECLARE tabelas CURSOR FOR
SELECT name FROM sys.tables

OPEN tabelas;
FETCH NEXT from tabelas
INTO @nometabela;
WHILE @@FETCH_STATUS = 0
BEGIN
— This is executed as long as the previous fetch succeeds.
print ‘CREATE SYNONYM ‘ + @nometabela + ‘ FOR ‘ + @OldDB + ‘.dbo.’ + @nometabela;

FETCH NEXT FROM tabelas
INTO @nometabela;
END

CLOSE tabelas;
DEALLOCATE tabelas;