Det finns länder på detta jordklot som helt saknar existensberättigande om man frågar mig, vi behöver inte nämna några länders namn men för enkelhetens skull kallar vi dem för RU och BY. I grunden anser jag att Internet skall vara öppet, opolitiskt och gärna fritt, utom för RU och BY då dessa beter sig så otroligt dåligt i världen så jag saknar ord för det, i alla fall ord som lämpar sig i skrift.

På grund av ovanstående, jag bestämmer vem som skall få använda mina tjänster på Internet och vem som inte förtjänar det så därför skall all trafik från RU och BY bara kastas och det så tidigt som möjligt i min inkommande brandvägg och router så att trafiken inte tar upp onödiga resurser.
Jag spenderade en hel kväll med att försöka skripta hela lösningen direkt i MikroTik RouterOS7 men detta visade sig till sist bli en värld av irrgångar och återvändsgränder, det dom fungerade för lilla BY-listan dog helt med en uppsjö av problem när stora RU-listan med IP-adresser skulle processas och till sist gav jag upp.
Hmm, tänkte jag då … och istället flyttades fokus till en av mina små allt-i-allo Raspberry Pi 5:or, hmm …
Skapade här ett skript som hämtar listorna med IP-adresser, adderar texten ”/ip firewall address-list add list=RU address=” framför respektive IP-adress och sedan sparar ned allt i en fil som jag kan kopiera till min brandvägg. För att kunna läsa in ett lösenord till SSH-hanteringen var jag tvungen att installera lilla ”fulprogrammet” sshpass …
Såhär ser skripten ut för BY och RU.
rm by.rsc
curl -s https://www.ipdeny.com/ipblocks/data/countries/by.zone | sed 's/^/\/ip firewall address-list add list=BY address=/' > by.rsc
sshpass -f psw.txt ssh loginnamn@<min brandväggs IP> "rm -f /by.rsc"
sshpass -f psw.txt scp by.rsc loginnamn@<min brandväggs IP>:/rm ru.rsc
curl -s https://www.ipdeny.com/ipblocks/data/countries/ru.zone | sed 's/^/\/ip firewall address-list add list=RU address=/' > ru.rsc
sshpass -f psw.txt ssh loginnamn@<min brandväggs IP> "rm -f /ru.rsc"
sshpass -f psw.txt scp ru.rsc loginnamn@<min brandväggs IP>:/Lösenordet hämtar jag från filen psw.txt, kanske inte så säkert men fungerar i min lilla avgränsade miljö. Hade det varit en lite större eller känsligare miljö hade jag löst det med certifikatbaserad inloggning istället …
Nu vill jag ju inte behöva köra dessa skript manuellt varenda dag för att uppdatera mina filter så naturligtvis installeras de via crontab till Cron och körs då 07.00 respektive 07.01 varje dag.
00 07 * * * cd /home/loginnamn/rtr2_filter/ && bash fetch_by.sh
01 07 * * * cd /home/loginnamn/rtr2_filter/ && bash fetch_ru.shMed hjälp av dessa skript får jag över filerna till min MikroTik:s filsystem i ett importvänligt format som antingen kan kopieras direkt in via terminal eller även här skriptas för automagiska uppdateringar.
Så var det dags att gå över till MikroTik RouterOS 🙂
Först skapar jag två platshållare i brandväggens adresslistor, en med namnet BY och en med RU, detta för att kunna göra regelverket klart.
Under brandväggens Raw-flik adderar jag därefter två filter vilka blockar all trafik baserad på source-listorna BY och RU.
Sedan är det dags att skapa skript för import av skriptfilerna by.rsc och ru.rsc vilka nu ligger i roten av MikroTiks filsystem.
import_BY:
/ip firewall address-list remove [find list="BY"]
/import file-name=by.rsc… samt import_RU:
/ip firewall address-list remove [find list="RU"]
/import file-name=ru.rscDessa skriptrader kan man också testköra direkt i ett terminalfönster för att se skriptraderna fungera.
För att köra skripten per automatik så skapas entries i MikroTiks Scheduler …

… där man exekverar följande kommando.
/system script run import_BY… respektive …
/system script run import_RU… och vips är man av med all trafik från RU- och BY-baserade IP-adresser. Visst är jag medveten om att de enkelt kan gå runt detta genom VPN-uppkopplingar med publika utgångs-IP var som helst i världen men du anar inte hur många paket i sekunden jag blir av med … 🙂
… och det gör i alla fall mig gladare!!!
Ha en bra dag.
//Anders
