Настройка сохранения системных журналов Mikrotik RouterOS на карту памяти microSD или USB-накопитель

В одной из предыдущий публикаций, посвященных уязвимости RouterOS и повышению безопасности, я упоминал о логах. Дело в том, что по-умолчанию все логи работы RouterOS хранятся непосредственно в оперативной памяти, как итог, в случае перезагрузки все логи очищаются, точно так же, как и в обычных домашних или SOHO-маршрутизаторах.
RouterOS — система не совсем обычная, она предоставляет системному администратору возможность выгрузки логов, как на внешний накопитель, так и на внешний сервер. Для домашнего пользователя выгрузка логов на диск не несет особой пользы, а вот для корпоративной сети с важными данными, наличие лога может позволить установить причину сбоя или проблемы, особенно в свете последней уязвимости RouterOS 6.29−6.42.
Хотите научиться работать с MikroTik? В этом поможет углубленный курс по администрированию MikroTik. Получите демо-доступ к этому курсу бесплатно.

Системный журнал в RouterOS

Сама по себе RouterOS способна собирать и выводить разную системную информацию, начиная с обычных действий в системе и заканчивая debug-логами. Системный журнал (log) при этом может храниться, как в оперативной памяти устройства (memory), так и на внутреннем диске (disk). Помимо этого, журнал можно отправлять по e-mail или напрямую на удаленный syslog-сервер.
Настройка логов Mikrotik находится в подменю System — Logging. По-умолчанию, системный журнал настроен со следующими параметрами:

  • info: memory
  • error: memory
  • warning: memory
  • critical: echo
Полную документацию по Logging вы можете найти на официальном Mikrotik Wiki, мы же рассмотрим только некоторые интересные аспекты. В той же документации вы найдете все «топики» и их описание. Самих топиков огромное количество, RouterOS позволяет выгрузить практически любую отладочную информацию. К примеру, в логи можно выгружать все DNS-запросы или все журналы wireless.
Наиболее интересные категории:

  • account — сохраняет логи авторизации как для PPP, так и для входа в панель управления (webfig, winbox) с указанием даты, времени и IP. Помимо этого сюда же пишутся логи отключений.
  • firewall — сохраняет логи срабатывания правил Firewall, для которых установлена опция записи в лог (action=log). К примеру, выше стандартного правила «input drop» я использую дополнительное правило, запрещающее «нестандартный» порт 8291. Таким образом, в логах вы сразу будете видеть все попытки обращения к порту winbox из WAN (целенаправленное сканирование портов или попытка подключения);
  • interface — логи всех изменений интерфейсов;
  • script — логи скриптов;
Параметр «Action: memory» говорит о том, что журнал хранится только в оперативной памяти — при отключении электропитания или перезагрузке лог будет очищен.

Большинство современных RouterBOARD имеют всего 16 МБ встроенной памяти, из которых часть уже занята системой, так что в конечном итоге пользователю доступно еще меньше памяти.
Для хранения логов этого более, чем достаточно, если бы не одно но, которое поставит крест на такой идее. Дело в том, что Flash-память имеет определенный ресурс — количество циклов перезаписи. В зависимости от сценариев использования и настроек самого журнала, логи могут писаться постоянно, байт за байтом изнашивая ресурс чипа. Как вы понимаете, заменить флеш-память самостоятельно нельзя, эту процедуру может выполнить только специалист при наличии необходимого оборудования, программатора и дампа флешки. Но и это еще не все, после установки нового модуля памяти, вы получите нулевой уровень лицензии RouterOS.

Другое дело карта памяти microSD или USB-накопитель — меняются они без проблем, имеют стоимость менее $ 10 и куда больший ресурс перезаписи.
Да, порт USB присутствует не во всех устройства, не говоря уже о слоте для карт памяти microSD. Если у вас нет ни первого, ни второго, наиболее оптимальный вариант — отправка логов на удаленный сервер (actions — remote).
Мы же рассмотрим процесс выгрузки логов на диск на примере Mikrotik hEX (RB750Gr3), который я использую в качестве VPN-сервера на одном из объектов.

hEX примечателен тем, что у него есть слот для карт памяти microSD, который можно использовать, в том числе, для Dude.
Установка карты памяти microSD или USB-накопителя в Mikrotik
Для хранения логов я использую проверенные накопители SanDisk UHS-I Ultra (Class 10) на 16 ГБ. Впрочем, подойдет и любая другая карта памяти, которая будет у вас под руками, даже «Class 4». Для логов это вообще не имеет значения, по большому счету для них хватило бы и пропускной способности интерфейса RS232. При символической разнице в цене, лично я не вижу смысла брать более простую карту.
Слот под карту памяти у hEX находится на передней панели, прямо под индикатором PWR.
Установка карты осуществляется контактами вверх, сама карта будет немного выпирать из устройства, так и должно быть.
После установки в подменю System — Disks у вас появится новая запись «disk1». То же самое применимо и для USB-накопителей — вы можете настроить выгрузку системных логов на флешку следуя этой инструкции.
Для того, чтобы отформатировать накопитель, заранее его необходимо извлечь при помощи кнопки «Eject Drive», и только затем выполнить команду «Format Drive». Доступна файловая система fat32 или ext3, первая удобнее для просмотра на ПК под управлением Windows, сами логи в формате TXT.
После форматирования диск будет смонтирвоан в системе автоматически.
Настройка сохранения журналов RouterOS на внешний диск
После того, как диск установлен, сперва необходимо «научить» RouterOS выгружать журналы на внешний накопитель.
Заходим в подменю System — Logging, открываем вкладку «Actions» (действия). Создаем новое действие:
  • Name: sd
  • Type: disk
  • File Name: disk1/log
Остальные параметры можно оставить как есть. «Lines Per File» устанавливает ограничение на количество строк для файла логов, параметр «File Count» обозначает общее количество файлов. По-умолчанию, это 2 файла по 1000 строк. При заполнении первого файла, система будет писать во второй файл и так далее.
В имени файла используем формат «disk1/log», где «disk1» это название накопителя (name) из раздела System — Disks, а «log» это префикс имени файла. При желании, вы можете писать логи в подпапку. Для того, чтобы выгружать логи в подпапку, её необходимо заранее создать, например, перетащив пустую папку с нужным названием в disk1 (раздел «Files») при помощи обычного Drag'n'Drop.
Более того, в Mikrotik можно настроить несколько файлов, т. е. писать разные типы сообщений в разные логи.
Обратите внимание, в названии actions можно использовать только латинские буквы и цифры. Если у вас выгрузка в один лог, можно создать действие с названием «sd» либо «usb». Если же действий несколько, как у меня, можно в названиях использовать цифру 2 как замену слова «to».
Возвращаемся на первую вкладку «Rules» и меняем «Action» для каждой категории сообщения по своим потребностям. У меня категорий несколько, файлы журналов раздельные. Накопитель на 16 ГБ имеет огромный ресурс перезаписи, так что большое количество циклов перезаписи не будет проблемой.
При активации некоторых типов сообщений, например «ppp», учитывайте, что они могут непрерывно писать большие объемы логов. К примеру, l2tp может без проблем записать 2000 строк всего за 10 минут. Эти логи полезны скорее для отладки (debugging), когда вы ищете ошибку, нежели для обычного повседневного использования.
Что дальше?
Логи желательно периодически осматривать на предмет критических ошибок и попыток получения доступа к панели управления. Сами журналы можно выгружать как из Winbox, так и открыв доступ к накопителю при помощи SMB либо FTP, хотя, чем меньше активных сервисов — тем лучше.
Конечно, данный метод никоим образом не защитит вас от несанкционированного доступа и, если опытный злоумышленник все же попал в панель управления, он может очистить логи. Для всех остальных случаев, наличие логов, зачастую, способно дать ответы на многие вопросы. Если, конечно же, вы правильно настроили логи и знаете, что в них искать.
Хотите научиться работать с MikroTik? В этом поможет углубленный курс по администрированию MikroTik. Получите демо-доступ к этому курсу бесплатно.