MikroTik. Защита от перебора паролей RDP и других сервисов за маршрутизатором.

Сегодня речь пойдет о brute force атаках, об их последствиях и конечно же о том, как можно от них защититься здесь и сейчас.

Итак ситуация: Начинают поступать обращения от сотрудников о том, что они не могут подключиться к терминальному серверу и/или подключение все же происходит, но с 5 или 10 или 15 раза. Кто-то жалуется, что его сессия принудительно завершается через несколько минут после начала. В логах терминального сервера видны неудачные попытки авторизации,  так же наблюдается повышенная нагрузка на CPU маршрутизатора и забитый канал входящего сетевого интерфейса. В логах терминального сервера так же видно, что некоторые подключения идут подряд с периодичностью несколько раз в секунду, а некоторые с задержкой до нескольких минут. Кол-во ip адресов, с которых идут подключения несколько тысяч и заблокировать их вручную не представляется возможным. 

Ситуация крайне неприятная, но поправимая. Главный вывод, который можно сделать из произошедшего, это то, что по возможности, все ресурсы надо убирать из внешней сети и предоставлять доступ например через VPN. 

Далее представлена инструкция о том, что можно предпринять на маршрутизаторах MikroTik, что бы минимизировать последствия от данных типов атак.

Начать стоит с того, что необходимо разделить легитимный трафик от нелегитимного, заблокировать ip адреса атакующих и тем самым снизить утилизацию ресурсов маршрутизатора и входящего сетевого интерфейса, что бы сотрудники могли подключаться и работать на терминальном сервере.

1. Откройте WinBox и подключитесь к вашему маршрутизатору.

2. Перейдите на вкладку “IP” —> “Firewall” —> “Raw” и нажмите “+”, что бы создать новое правило.

– Укажите цепочку – “prerouting”.

– Укажите, что адрес источника находится вне вашей локальной сети.

– Укажите внешний ip адрес вашего RDP сервера или другого ресурса, к которому происходит подключение.

3. Перейдите на вкладку “Action” и заполните её по примеру, как указано ниже:

– В строке “Action” – выберете “add src to address list”

– В строке “Address List” – укажите “RDP Black List Stage-1” или что-то подобное.

– В строке “Timeout” – укажите время в 1 минуту.

– Нажмите “ОК”.

4. На данном этапе было создано правило, по которому все ip адреса внешних клиентов, которые подключаются к терминальному серверу по ip адресу 192.162.192.162 будут попадать в address list “RDP Black List Stage-1” на 1 минуту.

5. Оставаясь на вкладке “Raw”, снова нажмите “+”, что бы создать новое правило. (опционально, данный пункт не обязателен)

– В строке “Chain” – укажите “prerouting”.

6. (Данный пункт опциональный и необходим, в случае, если у вас есть несколько внешних ip адресов).

Перейдите на вкладку “Advanced” и заполните её по примеру, как на примере ниже:

– В строке “Src. Address List” – выберете “RDP Black List Stage-1”.

– В строке “Dst. Address List” – укажите признак “НЕ” и выберете Address List, в котором у вас перечислены другие ваши внешние ip адреса.

7. (Данный пункт так же опционален, т.к. является продолжением предыдущего)

Перейдите на вкладку “Action” и заполните её по примеру, как указано ниже:

– В строке “Action” – выберете “add src to address list”.

– В строке “Address List” – укажите “RDP Black List Stage-2”.

– В строке “Timeout” – укажите 1 минуту.

– Нажмите “ОК”.

8. На данном этапе было создано правило, которое добавляет все ip адреса в Address List “RDP Black List Stage-2” при условии,

что адрес назначения не входит в список других внешних ip адресов и в то же время адрес источника находится в динамическом списке

“RDP Black List Stage-1” (ip адреса хранятся там 1 минуту).

9. Перейдите на вкладку “Mangle” и нажмите кнопку “+”, что бы создать новое правило.

– В строке “Chain” – выберете “forward”.

– В строке “Dst. Address” – укажите локальный ip адрес вашего терминального сервера.

– В строке “Protocol” – выберете “6 (tcp)”.

– В строке “Dst. Port” – укажите “3389,443”.

– В строке “Connection State” – установите флажок “new”.

10. Перейдите на вкладку “Advanced” и в строке “Src. Address List” выберете “RDP Black List Stage-2”.

11. Перейдите на вкладку “Action” и заполните её по примеру, как указано ниже:

– В строке “Action” – выберете “add src to address list”.

– В строке “Address List” – укажите “RDP Black List Stage-3”.

– В строке “Timeout” – укажите 1 минуту.

– Нажмите “ОК”.

12. На данном этапе было создано правило, которое добавляет все ip адреса на 1 минуту в динамический список “RDP Black List Stage-3”,

при условии, что:

– Это новое подключение

– Конечный адрес назначения (уже локальный) – 10.151.3.44

– Протокол – tcp 

– Порт назначения – 3389 или 443

– IP адрес источника уже содержится в динамическом списке “RDP Black List Stage-2” (ip адреса хранятся там 1 минуту)

13. Оставаясь на вкладке “Mangle” нажмите кнопку “+”, что бы создать новое правило.

– В строке “Chain” – выберете “forward”.

– В строке “Dst. Address” – укажите локальный ip адрес вашего терминального сервера.

– В строке “Protocol” – выберете “6 (tcp)”.

– В строке “Dst. Port” – укажите “3389,443”.

– В строке “Connection State” – установите флажок “new”.

14. Перейдите на вкладку “Advanced” и в строке “Src. Address List” выберете “RDP Black List Stage-3”.

15. Перейдите на вкладку “Action” и заполните её по примеру, как указано ниже:

– В строке “Action” – выберете “add src to address list”.

– В строке “Address List” – укажите “RDP Black List Stage-4”.

– В строке “Timeout” – укажите 1 минуту.

– Нажмите “ОК”.

16. На данном этапе было создано правило, которое добавляет все ip адреса на 1 минуту в динамический список “RDP Black List Stage-4”,

при условии, что:

– Это новое подключение

– Конечный адрес назначения (уже локальный) – 10.151.3.44

– Протокол – tcp 

– Порт назначения – 3389 или 443

– IP адрес источника уже содержится в динамическом списке “RDP Black List Stage-3” (ip адреса хранятся там 1 минуту)

17. При подключении к терминальному серверу, клиент может генерировать от 2 до 6 сессий (запрос пароля, запрос сертификата, проброс жестких дисков и т.д.).

Так же пользователь может ошибиться при вводе логина и пароля, в таком случае новая попытка подключения создаст новые 2 – 6 сессий.

Вам следует подобрать такое кол-во ступенек динамических списков адресов перед блокировкой, что бы у легитимных пользователей все еще оставалось право на ошибку при вводе логина и пароля, но при этом ip адреса злоумышленников, подбирающих связку логина и пароля, забивая при этом канал связи, попадали в black list.

В данном конкретном примере используется 18 “предварительных ступенек” динамических списков адресов перед окончательной блокировкой.

Стоит так же отметить, что Timeout последнего динамического Address List установлен уже не в 1 минуту, как это было на предыдущих этапах, а на 1 неделю.

18. Так как MikroTik отрабатывает правила по списку сверху вниз, расположите ваши правила динамических списков в обратной последовательности от большего к меньшему, что бы получилось примерно так же, как на рисунке ниже:

19. Вернитесь на вкладку “Raw” и нажмите кнопку “+”, что бы создать новое правило.

– Укажите цепочку – “prerouting”.

– Укажите, протокол “6 (tcp)”

– Укажите порты назначения “3389,443”

20. Перейдите на вкладку “Advanced” и в строке “Src. Address List” – укажите имя вашего последнего динамического списка адресов,

в данном примере это “Black List”.

21. Перейдите на вкладку “Action” и выберете действие “drop”.

Нажмите кнопку “OK”.

22. На данном этапе было создано правило, которое будет отбрасывать все входящие пакеты трафика, ip адреса источников которых находятся в списке “Black List”.

23. В штатном режиме в Black List всегда висит 50-200 ip адресов, однако в тот момент, когда данный кейс прорабатывался в реальности, в Black List попали несколько тысяч ip адресов.

Scroll to Top