Установка и настройка cs-mikrotik-bouncer для CrowdSec и MikroTik
cs-mikrotik-bouncer — это bouncer для CrowdSec, который передаёт заблокированные IP-адреса на MikroTik. CrowdSec выявляет подозрительные адреса по логам, а MikroTik блокирует их на уровне firewall через address-list.
Схема работы простая:
Логи серверов → CrowdSec → decision ban → cs-mikrotik-bouncer → MikroTik address-list → firewall drop
Такой вариант полезен, если MikroTik стоит на границе сети и через него проходит входящий трафик к серверам, VPN, веб-сервисам или клиентским подсетям.
Что потребуется
Для работы нужны:
CrowdSec
MikroTik RouterOS
Docker / Docker Compose
Включенный API на MikroTik
API-ключ bouncer в CrowdSec
Firewall-правила на MikroTik
Важно: репозиторий funkolab/cs-mikrotik-bouncer архивирован, поэтому для production лучше заранее учитывать риски поддержки.
Включаем API на MikroTik
На MikroTik включаем API:
/ip/service/enable api
Обычный API использует порт:
8728
API SSL использует порт:
8729
Лучше разрешить доступ к API только с сервера, где будет работать bouncer.
Пример:
/ip/firewall/filter
add chain=input action=accept protocol=tcp src-address=10.100.3.10 dst-port=8728 comment="Allow MikroTik API from CrowdSec bouncer"
add chain=input action=drop protocol=tcp dst-port=8728 comment="Drop MikroTik API from others"
Создаём пользователя MikroTik
Не стоит использовать основного администратора. Лучше создать отдельного пользователя:
/user/group/add name=crowdsec-api policy=read,write,api
/user/add name=crowdsec group=crowdsec-api password="password"
Создаём API-ключ bouncer в CrowdSec
На сервере CrowdSec выполняем:
sudo cscli bouncers add mikrotik-bouncer
CrowdSec выдаст API key. Его нужно сохранить и указать в .env.
Проверить bouncer-ы:
sudo cscli bouncers list
Готовим каталог
sudo mkdir -p /opt/crowdsec-mikrotik-bouncer
cd /opt/crowdsec-mikrotik-bouncer
Создаём .env:
sudo nano .env
Пример:
CROWDSEC_BOUNCER_API_KEY=PASTE_API_KEY_HERE
CROWDSEC_URL=http://10.100.3.10:8080/
MIKROTIK_HOST=ipaddress
MIKROTIK_USER=crowdsec
MIKROTIK_PASS=password
MIKROTIK_TLS=false
MIKROTIK_IPV6=false
LOG_LEVEL=1
Закрываем файл с секретами:
sudo chmod 600 .env
Docker Compose
Создаём docker-compose.yml:
sudo nano docker-compose.yml
Содержимое:
services:
cs-mikrotik-bouncer:
image: ghcr.io/funkolab/cs-mikrotik-bouncer:latest
container_name: cs-mikrotik-bouncer
restart: unless-stopped
env_file:
- .env
Запускаем:
sudo docker compose up -d
Проверяем:
sudo docker ps | grep cs-mikrotik-bouncer
sudo docker logs -f cs-mikrotik-bouncer
Настраиваем firewall на MikroTik
Bouncer добавляет IP в address-list crowdsec, но блокировать их должен firewall.
Для защиты самого MikroTik:
/ip/firewall/filter
add chain=input action=drop src-address-list=crowdsec in-interface-list=WAN place-before=0 comment="crowdsec drop input"
Для защиты сетей за MikroTik:
/ip/firewall/filter
add chain=forward action=drop src-address-list=crowdsec in-interface-list=WAN place-before=0 comment="crowdsec drop forward"
Если WAN interface-list ещё не создан:
/interface/list/add name=WAN
/interface/list/member/add list=WAN interface=ether1
ether1 заменить на свой внешний интерфейс.
Проверка работы
Добавляем тестовую блокировку в CrowdSec:
sudo cscli decisions add --ip 1.2.3.4 --duration 10m --type ban
Проверяем на MikroTik:
/ip/firewall/address-list/print where list=crowdsec
Должен появиться IP:
1.2.3.4
Проверяем счётчики firewall:
/ip/firewall/filter/print stats where comment~"crowdsec"
Удаляем тестовую блокировку:
sudo cscli decisions delete --ip 1.2.3.4
Что мониторить
Минимально стоит контролировать:
контейнер cs-mikrotik-bouncer запущен
LAST API PULL в cscli bouncers list обновляется
IP появляются в MikroTik address-list crowdsec
firewall-счётчики растут
CPU MikroTik не перегружен
Команды:
sudo cscli bouncers list
sudo cscli decisions list
sudo docker logs cs-mikrotik-bouncer
На MikroTik:
/ip/firewall/address-list/print count-only where list=crowdsec
/system/resource/print
Важные замечания
Не стоит сразу заливать на MikroTik огромные community blocklist. На слабых моделях большое количество address-list записей может создать нагрузку.
Лучше начинать с локальных decisions CrowdSec, проверить CPU, firewall-счётчики и только потом расширять правила.
Также API MikroTik нельзя открывать наружу. Доступ должен быть только с сервера bouncer или через доверенную management-сеть.
Итог
cs-mikrotik-bouncer позволяет использовать CrowdSec не только для обнаружения атак, но и для блокировки вредоносных IP прямо на MikroTik.
Это удобная схема для edge-маршрутизатора:
CrowdSec обнаруживает атакующих
bouncer передаёт IP на MikroTik
MikroTik блокирует трафик на границе сети
Решение простое, быстро внедряется и хорошо подходит как дополнительный уровень защиты для серверов и сетей за MikroTik.
Комментариев пока нет.