Защита Mikrotik от подбора паролей, за минуту
Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов рунета Pyatilistnik.org. В прошлый раз мы с вами произвели базовую настройку роутера Mikrotik, тем самым наладив работу малого офиса. Изучая журналы логов на оборудовании вы можете увидеть события "login failure for user via ssh, telnet, web", означающие, что на роутер идет атака брутфорса, по подбору пароля по определенным портам. Это означает, что нам нужно защитить наше оборудование от таких попыток, чем мы и займемся ниже, самое приятно, что все это делается буквально за минуту.
Как ограничить доступ к службам Mikrotik
Когда ваш роутер, в моем примере MikroTik RB4011iGS, получает внешний IP-адрес от провайдера, который вы настраиваете на WAN порту, то боты (Это такие роботизированные программы) завидев новое устройство с внешним адресом, сразу начинаю подбирать логин с паролем, чтобы получив к нему доступ начать рассылку спама или еще чего-нибудь. Данная практика касается абсолютно всех устройств. виртуальных машин, сайтов и многое другое, что имеет доступ в интернет, все это потенциальная цель для взлома и дальнейшего паразитического использования, поэтому вы как сетевой администратор или просто ответственный пользователь должны периодически просматривать события в журналах вашего устройства, чтобы идентифицировать попытки его компрометации.
Существует три метода позволяющие вам задать IP-фильтрацию, позволяющей вам ограничить доступ к службам роутера Mikrotik, только с определенных IP-адресов.
Как видим у нас есть три потенциальные точки проникновения на ваш роутер микротик. Как я и писал выше, зайдя на устройство, в разделе Log, я увидел вот такой подбор паролей по разным службам:
login failure for user root from 177.185.35.216 via telnet
Как видим идет постоянная подборка учетных данных, раз в три секунды, для самого роутера эти события имеют статус "system, error, critical" и их генерирование, плохо сказывается на работе оборудования, создавая лишнюю нагрузку.
Фильтрация и отключение служб через Services
Как я и писал выше, все что вы не используете вы должны отключить, в моем случае, мне для управления моим MikroTik RB4011iGS достаточно веб интерфейса, поэтому я отключу: ftp, ssh, telnet. Для этого слева есть столбец с кнопкой "D".
В итоге на против нужной вам службы появился крестик и сама надпись стала прозрачной.
Пробуем проверить доступность порта из Германии, как видим 22 порт SSH закрыт, это хорошо, значит его больше не будут брутфорсить.
Если вы используете, например SSH, но хотите его оградить от перебора паролей, то вы можете пойти на хитрость и разрешить обращение к нему, только с определенной сети или IP-адреса. Для этого на включенной службе, щелкните два раза. В результате чего у вас откроется редактор правила фильтрации, где вам в поле "Port" необходимо указать по какому порту будет работать служба, для большей безопасности советую менять стандартные значения, на диапазон после 1024 и в поле "Avaliable From" указать сеть или IP-адрес, кому будет разрешено. Сохраняем правило.
В итоге у меня получилось вот так, пробуем проверить с другого IP доступ до служб.
Самое интересное, что порт при SSH при проверке с внешнего сервера показывал статус "Open", что слегка обескураживало
Но если вы попытаетесь подключиться через клиента Putty или его аналоги, то увидите ошибку подключения "Network error: Software caused connection abort", что доказывает, что созданное правило фильтрации на уровне службы работает.
Пробовал настроить фильтрацию служб и через WinBox, но результат тот же
Поэтапная блокировка IP откуда идет перебор паролей на Mikrotik
Предположим, что вы все же привыкли работать в терминале, но ограничиваться одним IP-адресом или подсеткой на уровне фильтрации на службе вы не хотите, тут у вас есть два выхода:
- Во первых, вы можете отключить SSH и Telnet, оставив только веб-интерфейс, в котором есть тот же терминал. Попасть в него можно, выбрав на роутере Mikrotik соответствующую кнопку в правом, верхнем углу. Как видите тут есть все команды.
- Второе, это настроить правила фильтрации и бана через SSH/Терминал, на этом я и остановлюсь. Лично я напоминаю, что я всегда стараюсь изменять стандартные значения портов на нестандартные, для большей безопасности.
Создание правил:
Первым делом перейдем в раздел /ip firewall filter
Когда кто-то первый раз обращается по SSH на порт 2233, то мы его идентифицируем для себя и помещаем к себе в список IP адресов под названием "ssh_round1" на 2 минуты
Далее наш роутер Mikrotik начинает наблюдать за новым IP-адресом, который был помещен в "ssh_round1". Если он еще раз в течении 2-х минут попытается произвести подключение на порт SSH 2233 (В моем случае), то мы его помещаем во второй список "ssh_round2", но уже на 2 минуты.
Далее если кто-либо из второго списка "ssh_round2" вновь попытается подключиться по SSH 2233, то мы его в третий раз заносим в новый список "ssh_round3", но уже на минуту, так как это уже подозрительно.
Если мы выявляем, что из третьего списка к нам опять обратился данный IP-адрес, то заносим его в черный лист запрета и баним на 7 дней, неделю не меньше, как говорил кролик из Винни Пуха.
Если хотите, чтобы все кто попал в ваш блэклист были забанены на вечно, то для этого можно использовать правило:
А вот так выглядят наши созданные правила в WinBox, раздел "Firewall".
Следуя таким конструкциям, вы можете создавать подобные правила и для других служб при необходимости. Надеюсь, что было интересно и вы смогли более надежно защитить ваш роутер Mikrotik.
А можно показывать ни только через команды, но и наглядно через winbox, где и что нужно заносить
Спасибо, добрейший человек. а то ведь жизни не давали, паразиты
Добрый день! Рад, что смог вам помочь.
Спасибо, адаптировал под себя!
Не совсем понятно «в третий раз заносим в новый список «ssh_round3″, но уже на минуту, так как это уже подозрительно.» Почему на минуту? Может наоборот надо больше дать времени нахождения в списке, чтобы его подольше мониторить? Или по истечении минуты, даже если не стукнулся по SSH, то автоматом попадет в черный список?
Спасибо, хороший человек
Спасибо Иван, всё коротко и понятно. Будьте счастливы!
По этим фильтрам сразу в семидневный бан адрес попадет, так как сработают сразу все условия и IP проедет по всем спискам.
Спасибо.
Вот зашла и оболдела всю ночь кто-то ломиться и пол утра , а я не могу понять что с интернетом.
Вопрос . Я закрыла только службы которыми не полбзуюсьь, а дальше к сожалению не умею и не делала. Это поможет как то изведать или все таки прописывать и закрывать порты?
Добрый день! Лучше всегда все отключать лишнее и закрывать лишние порты, политика минимизации фронта атак.
А подскажите , я собственно не IT специалист и вот это все для меня очень не обычное. Но есть вопрос.
А можно сделать как то чёрный список ip адресов ? У меня просто какой то ужас один и тот же пытается подобрать логин к микротику атаки пол дня на него.
Есть базы черных IP, поищите в поиске, их уйма, можно по логам смотреть кто чаще долбится и банить их на совсем.
А как вот их банить на совсем в моем микротике, как описано в статье выше?
Суть ясна только есть пара мелких правок:
Все команды располагаются в обратном порядке, иначе с первого же запроса Пользователь попадет последовательно во все списки и блокировку.
Паузы между входами лучше поменьше скажем секунд 15-20, иначе сами когда-нибудь себя заблокируете, если за пару минут несколько раз войдете.
P.S. Жаль сайт не позволил пример кода выложить.
Пришлите я выложу, если хотите писать о микротике, то можно организоват ьавторство
Идея огонь, реализация хромает. IP после первого запроса летит в бан на 7 дней. Да и в любом случае, правила добавятся в самый низ (выполнятся будут последними). Стоит написать как из cli поднять правила.
Две ошибки:
1. Правила надо добавлять в обратном порядке: сначала правило для бана, потом для помещения в черный список и т.д. В самом конце — правило занесения в список round1.
Или после добавления отсортировать их в нужном порядке.
2. Время нахождения в списках подобрано неудачно. Чем чаще наблюдается подключение, тем жестче надо мониторить этот IP. Т.е. в каждом следующем списке время нахождения больше и больше. Например, в списке round1 — 3 минуты, в списке round2 — 5 минут, в списке round3 — 10 минут.
А так — полезная фича.
Там ещё есть одна печалька: если надо открыть несколько терминальных окон (все соединения будут new), либо несколько раз переподключиться, то попадёте в бан!
А можете подсказать скрипт для этой записи:
login failure for user admin from 178.167.71.99 via web
Выскакивает каждый день с определённой периодичностью. IP меняется.
SSH, Telnet, ftp у меня перекрыто. На роутер захожу удаленно, поэтому при настройке нужно учесть этот момент, чтобы связь с роутером не потерялась. Спасибо!