RouterOS firewall address list synchronization to CrowdSec Blocklist Mirror
Configure Blocklist Mirror or use your own list of IP addresses (need HTTP format output list)
config.yml
blocklists:
format: plain_textCreate certifcates
/certificate
add name=CA-Template common-name=CAtemp key-usage=key-cert-sign,crl-sign
add name=Server common-name=server
add name=Client common-name=client
Certificates should be signed. Change your RouterOS host address
/certificate
sign CA-Template
sign Client
sign Server ca-crl-host=192.168.88.1 name=ServerCA
Enable API-SSL. Change api access address
/ip service
set api-ssl address=192.168.88.0/24 certificate=ServerCA
change .env file variables
cp .env.exmaple .env
nano .env
build
docker build . -t mikroseclist:latestor use github image
docker pull ghcr.io/akmalovaa/mikroseclist:latestusing docker compose - compose.yaml
services:
mikroseclist:
image: ghcr.io/akmalovaa/mikroseclist:latest
container_name: mikroseclist
command: ["python", "-m", "mikroseclist"]
environment:
MIKROTIK_HOST: ${MIKROTIK_HOST:-'192.168.88.1'}
MIKROTIK_USER: ${MIKROTIK_USER:-'admin'}
MIKROTIK_PASSWORD: ${MIKROTIK_PASSWORD:-'password'}
BLOCKLIST_URL: 'http://blocklist.example.com:41412/security/blocklist?ipv4only'
SYNC_INTERVAL_MIN: 30
restart: unless-stoppedchange environment variables and run:
docker-compose up -dAfter first syncing сhange Mikrotik Firewall Rules
/ip firewall filter
add action=accept chain=input src-address-list=access # access list optional
add action=drop chain=input in-interface=ether1 src-address-list=block
add action=drop chain=forward in-interface=ether1 src-address-list=blockhttps://github.com/akmalovaa/mikroseclist/blob/main/mikroseclist/settings.py
You can override this variables in the .env file
You can use default CrowdSec Blocklist mirror format without mikroseclist service:
Actual IP addresses will already be in the blocked list
Allows you to use a list of IP addresses to add
config.yml
blocklists:
format: mikrotikOutput lines for mikrotik, format is /ip|/ipv6 firewall address-list add list={list_name} address={ip} comment="{scenario} for {duration}"
The list of IP addresses is very large ~ 25,000, when updated in this way, all addresses are deleted and added again. It's pointless to do this every time you update.
This service mikroseclist only allows you to edit changes. Add and delete only new addresses, not the entire list