Добавить в корзинуПозвонить
Найти в Дзене
Просто о сложном.

Mikrotik. Защита открытых наружу RDP от перебора пароля.

Часто бывает, что нет возможности настроить подключение по VPN для пользователей, и часто RDP пробрасывается наружу.. Кто-то даже не меняет порт, что в свою очередь пагубно отражается на безопасности всей сети. В лучшем случае плохие люди просто изменят и удалят то, до чего смогут дотянуться, в худшем - ваши файлы будут зашифрованы, и у вас попросят немного денег (а может и много, тут уже не важно). Для защиты удаленного доступа от несанкционированного доступа можно использовать простое решение - динамические адресные списки (Address Lists). Логика следующая: Выглядит просто, давайте начнем реализовывать. Все примеры будут в формате winbox, если есть необходимость - пишите, опишу как это делается консольно более подробно, так-же в конце статьи будет готовый скрипт для создания необходимых правил. Для начала переходим в раздел Firewall, все что нам требуется будет производиться только тут. Фиксация попыток входа, правило первое Первым шагом в нашей защите будет фиксация попыток вхо
Оглавление

Часто бывает, что нет возможности настроить подключение по VPN для пользователей, и часто RDP пробрасывается наружу.. Кто-то даже не меняет порт, что в свою очередь пагубно отражается на безопасности всей сети. В лучшем случае плохие люди просто изменят и удалят то, до чего смогут дотянуться, в худшем - ваши файлы будут зашифрованы, и у вас попросят немного денег (а может и много, тут уже не важно).

Для защиты удаленного доступа от несанкционированного доступа можно использовать простое решение - динамические адресные списки (Address Lists). Логика следующая:

  1. Пользователь (либо не пользователь) подключается по проброшенному для RDP порту
  2. Создается первая динамическая запись с IP источника в адресных списках. При повторных попытках входа - создается вторая, третья и так далее.
  3. Как только будет достигнут лимит, который нами указан - IP попадает в список забаненных, например на сутки.

Выглядит просто, давайте начнем реализовывать. Все примеры будут в формате winbox, если есть необходимость - пишите, опишу как это делается консольно более подробно, так-же в конце статьи будет готовый скрипт для создания необходимых правил.

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

Фиксация попыток входа, правило первое

Первым шагом в нашей защите будет фиксация попыток входа на RDP. Создаем правило, которое будет фиксировать такие попытки:

Вкладка General

  • Chain: forward
  • Protocol: tcp
  • Dst. Port: 3389 - тут важно заметить, что указывается именно порт, на который производится проброс, а не тот, который открыт на внешнем интерфейсе. Например если у вас наружу открыт порт 15422, и в нате идет проброс на 3389 - надо указывать 3389.
  • In.Interface: внешнее подключение, на которое проброшен порт
  • Connection State: выбираем new
-2

Вкладка Action

Action: jump (переход)

Jump Target: RDPCheck - название нашего следующего правила

-3

Фиксация попыток входа, правило второе

Получаем данные от первого правила, начинаем создание первой динамической записи.

Создаем правило в цепочке:

Вкладка General

  • Chain: RDPCheck (из предыдущего правила)
-4

Вкладка Action

  • Action: add src to address list (добавляем источник в список)
  • Address List: RDPCheck_Step1 - первый список
  • Timeout: 00:30:00 - добавляем на 30 минут
-5

Фиксация попыток входа, правило третье и так далее

Получаем данные от первого правила цепочки, начинаем создание первой динамической записи.

Создаем последующие правила в цепочке:

Вкладка General

  • Chain: RDPCheck (из предыдущего правила)
-6

Вкладка Advanced

  • Src. Address List: RDPCheck_Spep1 (проверяем наличие IP в уже созданных списках, номер шага = N-1, другими словами тот список, который создан в предыдущем правиле)
-7

Вкладка Action

  • Action: add src to address list (добавляем источник в список)
  • Address List: RDPCheck_Step2 - N-й список
  • Timeout: 00:30:00 - добавляем на 30 минут
-8

Так как при подключении может создаваться несколько подключений со статусом "new", рекомендую создать не менее 7-9 шагов.

На последнем шаге - заносим адрес в список без указания шагов и ставим таймаут 24 часа.

-9

Последнее правило для перебора всех звеньев в цепочке

Вкладка General

  • Chain: RDPCheck (из предыдущего правила)
Редактировать галерею
Редактировать галерею

Вкладка Action

  • Action: return
-11

Заключительное правило - блокировка

Вкладка General

  • Chain: forward
-12

Вкладка Advanced

  • Src. Address List: RDPCheck_Spep7 (наш последний динамический список)
-13

Вкладка Action

  • Action: drop
-14

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

Резюме

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

Для разблокировки, необходимо удалить IP иp списка "Address Lists"

Консольные команды:

Сразу исправьте интерфейс, используемый для выхода в интернет

/ip firewall filter

add action=drop chain=forward src-address-list=RDPCheck

add action=jump chain=forward connection-state=new dst-port=3389 in-interface=ether5 jump-target=RDPCheck protocol=tcp

add action=add-src-to-address-list address-list=RDPCheck_Step1 address-list-timeout=30m chain=RDPCheck comment=DRPCheck_Step1

add action=add-dst-to-address-list address-list=RDPCheck_Step2 address-list-timeout=30m chain=RDPCheck comment=DRPCheck_Step2 src-address-list=RDPCheck_Step1

add action=add-dst-to-address-list address-list=RDPCheck_Step3 address-list-timeout=30m chain=RDPCheck comment=DRPCheck_Step3 src-address-list=RDPCheck_Step2

add action=add-dst-to-address-list address-list=RDPCheck_Step4 address-list-timeout=30m chain=RDPCheck comment=DRPCheck_Step4 src-address-list=RDPCheck_Step3

add action=add-dst-to-address-list address-list=RDPCheck_Step5 address-list-timeout=30m chain=RDPCheck comment=DRPCheck_Step5 src-address-list=RDPCheck_Step4

add action=add-dst-to-address-list address-list=RDPCheck_Step6 address-list-timeout=30m chain=RDPCheck comment=DRPCheck_Step6 src-address-list=RDPCheck_Step5

add action=add-dst-to-address-list address-list=RDPCheck_Step7 address-list-timeout=30m chain=RDPCheck comment=DRPCheck_Step7 src-address-list=RDPCheck_Step6

add action=add-dst-to-address-list address-list=RDPCheck address-list-timeout=1d chain=RDPCheck comment=DRPCheck_BLOCK src-address-list=RDPCheck_Step7

add action=return chain=RDPCheck