Fail2Ban - давно зарекомендовавшее себя решение для 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, при импорте укажите пользователя, которому импортируете ключ, это должен быть пользователь с полными правами.
Чтобы проверить, что все сделано правильно попробуем подключиться из нашей 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.
На этом настройка доступа по ключу к роутеру 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.
Теперь остановим службу:
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.
Или в терминале:
/ip firewall raw
add action=drop chain=prerouting src-address-list=Fail2Ban
На этом настройка совместной работы Fail2Ban и брандмауэра Mikrotik завершена, теперь вы можете использовать сильные стороны каждой из указанных систем. В завершение хотим сказать, что если вы хотите интегрировать с Mikrotik сразу несколько Linux-систем с Fail2Ban, то используйте для каждой из них отдельный адресный лист.
Онлайн-курс по MikroTik
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Последние комментарии