Script RouterOS Mikrotik Añadir lista negra de IPs

Iniciado por davidhs, Mayo 19, 2017, 06:03:45 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Mayo 19, 2017, 06:03:45 AM Ultima modificación: Junio 09, 2017, 11:20:02 AM por xyz
Hola comunidad de underc0de, hoy vengo a con una duda respecto a un router Mikrotik.
Mi duda específicamente es lo que estoy intentando hacer que es:

Tengo una gran lista de direcciones IP que necesito bloquear, es decir que no hagan peticiones hacia mi red, esto resultaría muy tedioso si tuviese que realizarlo 1 a 1, lo que tengo es una lista negra de direcciones y las quiero bloquear en el mikrotik sin necesidad de tener que meterlas una a una, he leído por internet algo de las listas de direcciones pero no tengo claro que esto funcione con lo que busco.

Principalmente lo que busco es " tengo una lista de direcciones - bloquear estas en el mikrotik sin tener que añadirlas 1 a 1". Y buscando información en otro foro donde el usuario llamado OneRED, me proporciono información con este enlace
Código: text
https://wiki.mikrotik.com/wiki/Using_Fetch_and_Scripting_to_add_IP_Address_Lists
cuando entre a ver el enlace lo que entendí del contenido fue lo siguiente:

- ¿Este script está en el sistema?
También entiendo que tras tener este script en el sistema se deben de lanzar un conjunto de comandos apuntando a la url donde se encuentra esta lista.
- En este caso esta es la URL
Código: text
https://www.dan.me.uk
la cual no es un fichero .txt pero eso es lo de menos.
Entiendo que una vez realizados estos puntos se ejecuta la herramienta para que las direcciones ips sean bloqueadas por el script del sistema.

Bueno una vez interpretada toda la información lo que hice fue crear el script en el router, modificando algunas cosas para que coincidiesen con las configuraciones de las listas de direcciones de mi router, y el nombre del fichero donde se alojan estas direcciones ip.

Una vez hecho todo esto cuando ejecuto el script este se queda en ejecución y lo único que hace es borrarme la lista de dirección que le establezco en el script, pero ni añade ni hace nada y se queda ejecutándose sin hacer nada.
Si alguien me echase un cable para salir de este problema se lo agradecería mucho.
Saludos, Davidhs y agradecer la atención de los que se molesten en ayudar.
Un mundo construido sobre fantasía. Emociones sintéticas en forma de pastillas. Guerras psicológicas en forma de publicidad. Sustancias químicas que alteran la mente en forma de comida. Lavados de cerebro en forma de medios de comunicación. Agujas aisladas bajo control en forma de redes sociales.

Mayo 20, 2017, 08:35:24 AM #1 Ultima modificación: Mayo 20, 2017, 08:38:02 AM por xyz
Hola @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta.

Paso a explicarte lo que leiste en el foro de mikrotik y responder tus consultas.

1) El Script lo tienes que generar, las herramientas; si estan en el OS de Mikrotik, para verificarlo debes ir a: new termial y escribir tool -> fetch y obtendrás los parámetros que podés ejecutar con fetch.

2) Hay otras formas de utilizar black-lists mediante consultas DNS para ello debés tener activado el sevicio de cache dns.

Volviendo a al punto de la pregunta.

Lo que el foro indica es:
Código: text

/tool fetch address=server.somewhere.tld host=server.somewhere.tld mode=http
src-path=folder/anotherfolder/ipaddress.txt
:delay 10
#Replace with whatever name you have called the processing script
/system script run add-ip-addresses


Donde, en address y host debes colocar la url que necesitas colocar en la black-list.

Código: text

## Generic IP address list input
## Based on a script written by Sam Norris, ChangeIP.com 2008
## Edited by Andrew Cox, AccessPlus.com.au 2008
:if ( [/file get [/file find name=ipaddress.txt] size] > 0 ) do={
# Remove exisiting addresses from the current Address list
/ip firewall address-list remove [/ip firewall address-list find list=MY-IP-LIST]
:global content [/file get [/file find name=ipaddress.txt] contents] ;
:global contentLen [ :len $content ] ;
:global lineEnd 0;
:global line "";
:global lastEnd 0;
:do {
    :set lineEnd [:find $content "\n" $lastEnd ] ;
    :set line [:pick $content $lastEnd $lineEnd] ;
    :set lastEnd ( $lineEnd + 1 ) ;
#If the line doesn't start with a hash then process and add to the list
    :if ( [:pick $line 0 1] != "#" ) do={
    :local entry [:pick $line 0 ($lineEnd -1) ]
    :if ( [:len $entry ] > 0 ) do={
    /ip firewall address-list add list=MY-IP-LIST address=$entry
    }
}
} while ($lineEnd < $contentLen)
}


El script lo que realiza es una búsqueda en el file-folder del Mikrotik Router, donde al encontrar el archivo ipaddress.txt realiza el trabajo de agregarlo a una black list MY-IP-LIST.
De alli, quedará a tu criterio el tipo de bloqueo que quieras realizar.

Brindo un pequeño ejemplo para black-list.
Código: text

/ip firewall address-list
add list=blacklist address=1.1.1.1

Código: text

/ip firewall filter
add chain=input src-address-list=blacklist action=drop



Si tienes activado el servicio de cache dns, otro ejemplo:
Código: text

# Use DNS Entrys and add Address to the Firewall Address-list #
:foreach i in=[/ip dns cache all find where (name~"whatsapp") && (type="A") ] do={
:local tmpAddress [/ip dns cache get $i address];
delay delay-time=10ms
# prevent script from using all cpu time #
:if ( [/ip firewall address-list find where address=$tmpAddress] = "") do={
:local cacheName [/ip dns cache get $i name] ;
:log info ("added entry: $cacheName $tmpAddress");
/ip firewall address-list add address=$tmpAddress list=Whatsapp comment=$cacheName;
}
}


Las blacklist dependen tu objetivo y que "quieras" bloquear o restringir.

Espero sirva de ayuda.

Saludos !!

Gracias por responder xyz, he estado investigando pero por algún motivo me da un error al ejecutar el script relacionado con el dns, ahora no me acuerdo exactamente del error pero me voy acercando a la solución, en el momento que tenga solución posteo aquí.

Gracias por tu ayuda XYZ.
Un mundo construido sobre fantasía. Emociones sintéticas en forma de pastillas. Guerras psicológicas en forma de publicidad. Sustancias químicas que alteran la mente en forma de comida. Lavados de cerebro en forma de medios de comunicación. Agujas aisladas bajo control en forma de redes sociales.

Indica los pasos que estas realizando.

También puedes colocar el script aquí, junto al mensaje de error que obtienes.

Saludos. !

Estimado David, el script funciona muy bien, solo una duda, como puedo hacerlo para que el script lea toooodas las IPs que estan el archivo que se descarga?

Espero me puedas ayudar, de antemano, muchas gracias.