В условиях самоизоляции появилась возможность уделить больше внимания своему сетевому хозяйству.
Листая журналы своих Mikrotik-ов обратил внимание на периодические настырные попытки залогиниться на роутеры, подобные таким:
"Mmm/dd/yyyy hh:mm:ss disk system, error, critical login failure for user system from 117.248.147.203 via api"
Захотелось автоматизировать процесс нейтрализации всех желающих поживиться чужими девайсами :)
В качестве прототипа, откуда была подчерпнута идея, использовал этот код vqd:
viewtopic.php?p=22598&sid=f919b93b418a1 ... eed#p22598
На выходе у меня получился такой скрипт, который запускаем по расписанию с нужной периодичностью:
Код: Выделить всё
# Script for blocking dangerous addresses that tried to connect to the router
# https://forummikrotik.ru/viewtopic.php?p=70410#p70410
# tested on ROS 6.46.5
# updated 2020/05/10
foreach dangerString in=[ /log find message~"login failure for user"; ] do={
do {
:local stringTemp ([ /log get $dangerString message ]);
:local dangerUser ([ :pick $stringTemp 23 ([ :find $stringTemp "from" ] - 1) ]);
:local dangerIP ([ :pick $stringTemp ([ :find $stringTemp "from" ] + 5) ([ :find $stringTemp "via" ] - 1) ]);
foreach routerUser in=[ /user find disabled=no ] do={
do {
if ( $routerUser != $dangerUser ) do={
if ([ /ip firewall address-list find list="BlockDangerAddress" address=$dangerIP ] = "" ) do={
/ip firewall address-list add address=$dangerIP list="BlockDangerAddress" timeout=14d;
:log warning (">>> Added in black list user: ".$dangerUser." from IP ".$dangerIP);
}
}
} on-error={ :log warning ">>> Script error. Not found active router user."; }
}
} on-error={ :log warning ">>> Script error. Not found string 'login failure for user' in log."; }
}
1. В журнале выискиваются все строки, указывающие на неудачную попытку залогиниться на роутер
2. Из каждой найденной строки вычленяется login и ip-адрес, с которого пытались залогиниться
3. Полученный login проверяется на предмет отсутствия в списке имен активных пользователей Mikrotik-а (такого user-а не существует),
4. Полученный ip-адрес проверяется на наличие в черном списке. Если его там нет, тогда добавляется в черный список.
Ну и чтоб взлетело, добавим в Firewall/Filter Rules правило, которое будет глушить все попытки достучаться до нашего роутера с выявленных IP-адресов:
Код: Выделить всё
/ip firewall filter add action=drop chain=input comment="Dropping dangerous adresses" src-address-list=BlockDangerAddress
Код: Выделить всё
5 D BlockDangerAddress 37.99.71.78 may/10/2020 03:31:29
6 D BlockDangerAddress 71.81.84.58 may/10/2020 03:31:29
7 D BlockDangerAddress 123.18.131.24 may/10/2020 03:31:29
8 D BlockDangerAddress 113.160.215.178 may/10/2020 03:31:29
9 D BlockDangerAddress 36.90.208.193 may/10/2020 03:31:30
10 D BlockDangerAddress 183.80.166.84 may/10/2020 03:31:30
11 D BlockDangerAddress 202.172.17.65 may/10/2020 03:31:30
12 D BlockDangerAddress 159.192.143.234 may/10/2020 03:31:30
13 D BlockDangerAddress 14.231.35.181 may/10/2020 03:31:30
14 D BlockDangerAddress 103.72.219.134 may/10/2020 03:31:30
15 D BlockDangerAddress 182.185.22.138 may/10/2020 03:31:30
16 D BlockDangerAddress 118.69.226.85 may/10/2020 03:31:30
17 D BlockDangerAddress 14.184.0.182 may/10/2020 03:31:30
18 D BlockDangerAddress 36.73.74.59 may/10/2020 03:31:30
19 D BlockDangerAddress 1.1.200.240 may/10/2020 03:31:30
20 D BlockDangerAddress 39.33.144.52 may/10/2020 03:31:30
21 D BlockDangerAddress 36.88.129.253 may/10/2020 03:31:30
22 D BlockDangerAddress 14.231.205.10 may/10/2020 03:31:30
23 D BlockDangerAddress 41.174.72.239 may/10/2020 03:31:30
24 D BlockDangerAddress 186.250.118.50 may/10/2020 05:59:31
25 D BlockDangerAddress 118.175.138.196 may/10/2020 07:07:31
26 D BlockDangerAddress 42.119.82.204 may/10/2020 08:40:31
27 D BlockDangerAddress 117.248.147.203 may/10/2020 09:21:31
28 D BlockDangerAddress 14.177.80.228 may/10/2020 10:58:31
29 D BlockDangerAddress 122.164.165.220 may/10/2020 14:39:31
30 D BlockDangerAddress 14.249.102.84 may/10/2020 14:39:31
31 D BlockDangerAddress 194.156.250.105 may/10/2020 15:02:34
32 D BlockDangerAddress 170.245.227.210 may/10/2020 21:50:31
33 D BlockDangerAddress 125.166.78.251 may/11/2020 00:17:31
34 D BlockDangerAddress 113.188.242.28 may/11/2020 03:36:31
35 D BlockDangerAddress 119.76.132.235 may/11/2020 04:45:31
36 D BlockDangerAddress 36.66.43.79 may/11/2020 05:46:31
37 D BlockDangerAddress 113.161.179.245 may/11/2020 05:49:31
38 D BlockDangerAddress 14.253.28.77 may/11/2020 05:51:31
39 D BlockDangerAddress 116.108.44.225 may/11/2020 06:45:31
40 D BlockDangerAddress 115.75.48.53 may/11/2020 07:15:31
41 D BlockDangerAddress 183.88.152.51 may/11/2020 08:52:32
----------------------------
UPDATE of 2022: Скрипт развивается. Используйте актуальную версию скрипта. Её вы найдёте в конце этой ветки форума.