Настраиваем Fail2Ban для совместной работы с брандмауэром Mikrotik

  • Автор:

Fail2ban-Mikrotik-Firewall-000.pngFail2Ban - давно зарекомендовавшее себя решение для Linux систем, позволяющее эффективно выявлять и блокировать вредоносную активность, такую как подбор паролей или поиск уязвимостей. Но как быть, если защищаемые узлы находятся внутри сетевого периметра, а на внешнем контуре находится роутер Mikrotik? Ведь хотелось бы управлять блокировками на уровне всей сети, а не отдельного узла. Нет ничего сложного, в этой статье мы расскажем как быстро и просто обеспечить совместную работу этих двух популярных продуктов.

Онлайн-курс по MikroTik
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Часто встречающийся сценарий: Linux хосты находятся внутри сетевого периметра и общаются с внешним миром только через проброс портов или обратный прокси. Выход в сеть обеспечивает роутер Mikrotik. В данном случае остро встает вопрос защиты конечных узлов от вредоносной активности. Часть атак можно выявить и блокировать на сетевом уровне, но это будет лишь малая доля. Гораздо эффективнее с этой задачей справляется Fail2Ban на основе анализа логов приложений.

Можно, конечно, закрыть с помощью Fail2Ban каждый отдельный узел, но это не является эффективным решением так как злоумышленника нужно блокировать не только на уровне отдельного внутреннего узла, но и на уровне внешнего периметра сети, за который отвечает Mikrotik. Поэтому самое время заняться интеграцией двух систем, благо сделать это абсолютно не сложно.

Создание RSA-ключа для аутентификации в RouterOS

Для того, чтобы ваш Linux-сервер безопасно подключался к роутеру Mikrotik создадим отдельный SSH-ключ, RouterOS поддерживает только устаревшие алгоритмы шифрования DSA и RSA, поэтому использование такого ключа следует ограничить только работой с Mikrotik. Данный ключ должен быть создан для пользователя root, поэтому сначала повысим права командой:

sudo -s 

Или, если пакет sudo не установлен:

su -

А затем выполним генерацию ключа:

ssh-keygen -t rsa

В процессе вас явно спросят о расположении ключа:

Enter file in which to save the key (/root/.ssh/id_rsa):

введем полный путь:

/root/.ssh/id_rsa_routeros

В нашем случае ключ будет иметь имя id_rsa_routeros, вместе с ним в указанном расположении будет создан файл публичного ключа id_rsa_routeros.pub. От установки пароля на ключ отказываемся.

Теперь нам нужно любым доступным образом скопировать файл публичного ключа id_rsa_routeros.pub и передать его на роутер Mikrotik.

Не перепутайте! Файл id_rsa_routeros - это закрытый ключ, он является секретным и никогда не должен покидать пределы устройства. Копировать можно только публичные ключи с расширением .pub!

В RouterOS перейдите в System - Users - SSH Keys и добавьте ключ нажав на кнопку Import SSH Key, при импорте укажите пользователя, которому импортируете ключ, это должен быть пользователь с полными правами.

Fail2ban-Mikrotik-Firewall-001.pngЧтобы проверить, что все сделано правильно попробуем подключиться из нашей Linux-системы к Mikrotik с использованием ключа, для этого выполним команду:

 ssh -i /root/.ssh/id_rsa_routeros admin@192.168.72.1

Где /root/.ssh/id_rsa_routeros - полный путь к закрытому ключу, admin - пользователь RouterOS для которого мы импортировали ключ, 192.168.72.1 - адрес нашего роутера. Если все сделано правильно, то вы увидите в терминале приглашение Mikrotik.

Fail2ban-Mikrotik-Firewall-002.pngНа этом настройка доступа по ключу к роутеру Mikrotik закончена, переходим к следующему этапу.

Настройка Fail2Ban для совместной работы с брандмауэром Mikrotik

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

/etc/fail2ban/action.d
/etc/fail2ban/filter.d
/etc/fail2ban/jail.d

Первая, как понятно из наименования содержит описания действий, определяющая порядок блокировки/разблокировки. Вторая - фильтры, т.е. правила анализа системных журналов для выявления нежелательной активности. Ну а последняя связывает в себе фильтры и действия, указывая как именно реагировать на проявление нежелательной активности.

Файлы конфигурации могут иметь два расширения .conf и .local. По принятому соглашению файлы .conf устанавливаются самой службой и могут быть перезаписаны при обновлении, файлы .local - локальные изменения конфигурации и внесенные в них значения имеют наивысший приоритет, т.е. переопределяют значения из файлов .conf.

Сначала создадим файл с нужными действиями, для этого используем редактор nano, если же вам больше нравится редактор Midnight Commander, то замените в команде nano на mcedit:

nano /etc/fail2ban/action.d/mikrotik.local

И внесем в него следующее содержимое, в параметрах подключения используем значения которые мы разобрали ранее:

[Definition]
actionstart = ssh -i /root/.ssh/id_rsa_routeros admin@192.168.72.1 "/ip firewall address-list remove [find list=Fail2Ban]"
actionstop = ssh -i /root/.ssh/id_rsa_routeros admin@192.168.72.1 "/ip firewall address-list remove [find list=Fail2Ban]"

actionban = ssh -i /root/.ssh/id_rsa_routeros admin@192.168.72.1 "/ip firewall address-list add list=Fail2Ban address=<ip> comment=<time>"
actionunban = ssh -i /root/.ssh/id_rsa_routeros admin@192.168.72.1 "/ip firewall address-list remove [find address=<ip> list=Fail2Ban]"

Действия будут сводиться к добавлению в специальный адресный лист Fail2Ban адресов при блокировке и удалении при разблокировке, за это отвечают действия actionban и actionunban. Также логика Fail2Ban подразумевает очистку правил при остановке службы с повторным добавлением узлов, срок бана которых еще не истек при ее старте. Для этого у нас предусмотрено два дополнительных действия actionstart и actionstop, которые будут очищать адресный список на Mikrotik при запуске и остановке службы.

Теперь научим Fail2Ban работать с нашим роутером. По умолчанию в основанных на Debian системах включена только защита SSH, для чего jail sshd подключается с параметрами по умолчанию в файле /etc/fail2ban/jail.d/defaults-debian.conf:

[sshd]
enabled = true

Не будем трогать этот файл, а переопределим нужные параметры в собственном файле .local:

nano /etc/fail2ban/jail.d/sshd-mikrotik.local

Куда внесем следующий текст:

[sshd]
enabled = true
action = mikrotik
maxretry = 3
bantime = 24h

Напоминаем, что нам не нужно прописывать все параметры, а только те, что мы хотим переопределить. В нашем случае главное, это action = mikrotik, т.е. действие описанное в конфигурационном файле действий с именем mikrotik. Также мы переопределили порог ложных срабатываний, до трех и срок бана до суток.

Сохраняем изменения и перезапускаем службу:

systemctl restart fail2ban

Проверяем что нет ошибок и служба успешно перезапустилась:

systemctl status fail2ban

Теперь проверим работу наших настроек, попробуем кого-нибудь забанить:

fail2ban-client set sshd banip 1.2.3.4

Теперь в списках на Mikrotik должен появиться указанный нами адрес в составе списка Fail2Ban.

Fail2ban-Mikrotik-Firewall-003.pngТеперь остановим службу:

systemctl stop fail2ban

Все адреса из списка должны пропасть.

Снова запустим:

systemctl start fail2ban

Список адресов снова наполнится.

Проверим разблокировку:

fail2ban-client set sshd unbanip 1.2.3.4

Указанный адрес будет удален из списка.

Теперь осталось добавить последний штрих - блокировку указанных в списке адресов брандмауэром Mikrotik, для этого будем использовать таблицу RAW, перейдем в IP - Firewall - RAW и добавим новое правило: Chain - prerouting, Src. Address List - Fail2Ban (если данного листа пока не существует, то просто укажите его название как в конфигурации action Fail2Ban), на закладке Action добавляем действие drop.

Fail2ban-Mikrotik-Firewall-004.png

Или в терминале:

/ip firewall raw
add action=drop chain=prerouting src-address-list=Fail2Ban

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

Онлайн-курс по MikroTik
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Дополнительные материалы:


Mikrotik

  1. Оборудование MikroTik класса SOHO. Общий обзор и сравнение возможностей
  2. Производительность младших моделей Mikrotik hEX и hAP. Экспресс-тестирование
  3. Базовая настройка роутера MikroTik
  4. Расширенная настройка DNS и DHCP в роутерах Mikrotik
  5. Автоматическое резервное копирование настроек Mikrotik на FTP
  6. Проброс портов и Hairpin NAT в роутерах Mikrotik
  7. Настройка IPTV в роутерах Mikrotik на примере Ростелеком
  8. Настройка VPN-подключения в роутерах Mikrotik
  9. Настройка черного и белого списков в роутерах Mikrotik
  10. Настройка выборочного доступа к сайтам через VPN на роутерах Mikrotik
  11. Настройка OpenVPN-сервера на роутерах Mikrotik
  12. Безопасный режим в Mikrotik или как всегда оставаться на связи
  13. Настройка Proxy ARP для VPN-подключений на роутерах Mikrotik
  14. Настраиваем Port Knocking в Mikrotik
  15. Резервирование каналов в Mikrotik при помощи рекурсивной маршрутизации
  16. Настраиваем родительский контроль на роутерах Mikrotik
  17. Настраиваем IKEv2 VPN-сервер на роутерах Mikrotik с аутентификацией по сертификатам
  18. Расширенная настройка Wi-Fi на роутерах Mikrotik. Режим точки доступа
  19. Mikrotik CHR - виртуальный облачный роутер
  20. Настройка контроллера CAPsMAN (бесшовный Wi-Fi роуминг) на Mikrotik
  21. Настройка VPN-подключения на роутерах Mikrotik если подсети клиента и офиса совпадают
  22. Настраиваем использование DNS over HTTPS (DoH) на роутерах Mikrotik
  23. Настройка PPTP или L2TP VPN-сервера на роутерах Mikrotik
  24. Установка Mikrotik CHR на виртуальную машину Proxmox
  25. Защита RDP от перебора паролей при помощи оборудования Mikrotik
  26. Настройка SSTP VPN-сервера на роутерах Mikrotik
  27. Настройка выборочного доступа к сайтам через VPN с автоматическим получением маршрутов по BGP на роутерах Mikrotik
  28. Особенности эксплуатации CA на роутерах Mikrotik: резервное копирование, экспорт и импорт сертификатов
  29. Настройка туннелей GRE и IPIP на роутерах Mikrotik
  30. Правильное использование Fast Path и FastTrack в Mikrotik
  31. DHCP Snooping - настройка защиты от неавторизованных DHCP-серверов на оборудовании Mikrotik
  32. Работа оборудования Mikrotik в режиме беспроводной станции (клиента)
  33. Используем режим ARP reply-only для повышения безопасности сети на оборудовании Mikrotik

The Dude

  1. The Dude. Установка и быстрое начало работы
  2. Централизованное управление обновлением RouterOS при помощи The Dude
  3. Централизованный сбор логов Mikrotik на сервер The Dude

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Поддержи проект!

Или подпишись на наш Телеграм-канал: Подпишись на наш Telegram-канал



Loading Comments