Todo aparato con una IP recibe conexiones deseadas e indeseadas. Nuestra misión es reducir las conexiones indeseadas lo más posible. Continua leyendo y os explicaré como aprovecharnos de un servicio de blacklist de internet para prevenir ciertas conexiones
Como siempre intento compartiros unas experiencias propias y en este caso nos apoyaremos en el servicio de https://www.abuseipdb.com/ (tiene tanto un plan gratuito como opciones de pago). Esta vez nos centraremos en automatizar la bajada de la blacklist y la carga en nuestro router mikrotik
Obtener la key para el API
Nos registraremos en la web y entrando en nuestra zona de usuario crearemos una «key» de su API
Script en equipo Windows
Vamos a apoyarnos en un equipo (en este ejemplo windows) para realizar los siguientes pasos:
- Conectar al API para bajar las IP
- Preparar el fichero para procesarlo en Mikrotik
- Subir el fichero por ftp al Mikrotik
- Conectar por ssh para procesar el fichero
Vamos a crear una carpeta donde dejaremos todos los ficheros, por ejemplo c:\abusedb
Dentro crearemos abusedb.bat con:
SetLocal EnableDelayedExpansion
set content=
set iplist=c:\abusedb\abusedb.txt
set output=c:\abusedb\salida.rsc
echo off
del c:\abusedb\salida.rsc
curl -G https://api.abuseipdb.com/api/v2/blacklist -d confidenceMinimum=90 -H "Key:$APIKEY" -H "Accept: text/plain" -o !iplist!
for /F "delims=" %%i in (!iplist!) do (call :bucle %%i)
echo on
ftp -i -s:c:\abusedb\ftp.config
putty.exe -ssh usuario@ip -pw password -m c:\abusedb\ssh.config
:bucle
if %1 == [] (echo ok) else (set content=/ip firewall address-list add list=ABUSEDB address=%1)
echo %content% >> !output!
Necesitaremos el fichero de ftp.config (con los parametros del ftp)
open $IP
$USUARIO
$PASSWORD
binary
put c:\abusedb\salida.rsc
disconnect
quit
Y el fichero de ssh.config (con el comando del ssh para ejecutar via putty)
/system script run abusedb
Podemos ejecutar el fichero abusedb.bat una vez al día con el programador de tareas de windows o con la herramienta que tengamos para ejecutar procesos de manera automatizada.
Conforme se ejecute siempre creará 2 ficheros:
- abusedb.txt: fichero tal cual baja del API
- salida.rsc: fichero listo para subir a Mikrotik y procesar
Script en mikrotik
En Mikrotik crearemos un Script (dentro del menú System>Script) que se llamará «abusedb»
/ip firewall address-list remove [/ip firewall address-list find list=ABUSEDB]
/import salida.rsc
Este Script borrará todas las IP que tengamos anteriores en la lista ABUSEDB y volverá a cargar todas las IP desde el fichero que hemos cargado vía ftp
Drop en mikrotik
Para «rematar» la faena, solo nos falta decirle a nuestro mikrotik que todas las conexiones que lleguen desde las IP de la lista ABUSEDB les haga drop directamente.
Para esto la opción más eficiente es crear una regla en IP>Firewall>Raw
… y si algo sale mal… La Culpa de Sistemas 😉