MikroTik – Część 25: Automatyzacja firewall i ACL z Threat Intelligence – MikroTik + API + GitOps
MikroTik – kompleksowa konfiguracja sieci od podstaw do zaawansowanych rozwiązań
Część 25: Automatyzacja firewall i ACL z Threat Intelligence – MikroTik + API + GitOps
W dynamicznie zmieniającym się krajobrazie cyberzagrożeń, ręczne aktualizowanie reguł firewall staje się nieefektywne i niebezpieczne. Lista zagrożonych adresów IP, sieci złośliwych botnetów, proxy czy skompromitowanych serwerów zmienia się niemal w czasie rzeczywistym. Dlatego integracja MikroTik z zewnętrznymi źródłami Threat Intelligence, takimi jak AbuseIPDB, MISP czy AlienVault OTX, staje się kluczowym elementem strategii bezpieczeństwa.
W tej części serii pokażemy, jak zbudować dynamiczny system aktualizacji reguł firewall w MikroTik z użyciem Python, REST API i automatyzacji GitOps.

Cele i architektura rozwiązania
Główne cele systemu:
- Dynamiczne pobieranie zaufanych list IP z serwisów Threat Intelligence
- Automatyczna konwersja do formatu kompatybilnego z MikroTik
- Push aktualizacji przez REST API lub CLI (zdalnie)
- Integracja z repozytorium Git dla wersjonowania reguł
- Kompatybilność z Ansible/GitLab CI
Diagram architektury:
[Threat Intelligence Feeds]
↓
[Python Parser]
↓
[Firewall Rule Generator]
↓
[GitOps Repo] ↔ [Ansible/CI]
↓
[MikroTik REST API / CLI]
Krok 1: Pobieranie danych z Threat Intelligence
Przykład: AbuseIPDB
Zarejestruj się w serwisie AbuseIPDB i pobierz klucz API.
import requests
API_KEY = "TWOJ_ABUSEIPDB_KEY"
URL = "https://api.abuseipdb.com/api/v2/blacklist"
headers = {
'Key': API_KEY,
'Accept': 'application/json'
}
params = {
'confidenceMinimum': '80',
'limit': 10000
}
response = requests.get(URL, headers=headers, params=params)
data = response.json()
ips = [entry['ipAddress'] for entry in data['data']]
Można również pobierać dane z:
Krok 2: Generowanie skryptu MikroTik
Zbiór IP zamieniamy na listę adresów i reguł firewall:
with open("firewall_dynamic_blacklist.rsc", "w") as f:
f.write("/ip firewall address-list\n")
for ip in ips:
f.write(f"add list=blacklist address={ip} comment=\"abuseipdb\"\n")
f.write("\n/ip firewall filter\n")
f.write("remove [find comment=\"abuseipdb rule\"]\n")
f.write("add chain=input src-address-list=blacklist action=drop comment=\"abuseipdb rule\"\n")
Krok 3: Wgrywanie konfiguracji do MikroTik przez API
from routeros_api import RouterOsApiPool
api = RouterOsApiPool('192.168.88.1', username='admin', password='sekret', plaintext_login=True)
conn = api.get_api()
with open("firewall_dynamic_blacklist.rsc") as file:
for line in file:
line = line.strip()
if line and not line.startswith('/'):
conn.get_binary_resource('/').call('cli', {'command': line})
Krok 4: Automatyzacja i harmonogram
Aby uruchamiać ten proces automatycznie:
- Zintegrować z GitLab CI/GitHub Actions
- Uruchomić skrypt jako cronjob (w Dockerze lub hostowo)
- Pushować zaktualizowany
.rscdo repozytorium Git, by zachować pełną historię zmian
Przykład harmonogramu cron:
0 */6 * * * /usr/bin/python3 /scripts/update_firewall_blacklist.py
Krok 5: Weryfikacja i rollback
GitOps zapewnia kontrolę wersji – każda zmiana w .rsc jest zapisana w historii repozytorium. W przypadku problemu możemy szybko wrócić do poprzedniej wersji:
git checkout HEAD~1 firewall_dynamic_blacklist.rsc
git commit -am "Rollback"
git push
Korzyści z automatyzacji firewall z Threat Intelligence
✅ Zwiększona skuteczność ochrony perymetrycznej
✅ Zmniejszenie liczby incydentów z udziałem znanych zagrożeń
✅ Automatyczne aktualizacje bez ręcznej ingerencji
✅ Integracja z systemami SIEM/SOAR
✅ Zgodność z wymaganiami RODO, NIS2, ISO 27001
✅ Pełna audytowalność w Git
Co dalej?
W części 26 omówimy tworzenie honeypotów przy użyciu MikroTik + Raspberry Pi + Elastic Stack, które pozwolą rejestrować i analizować próby ataków na warstwie sieciowej. Połączymy to z alertowaniem i systemem Threat Scoring.






