Категория > Новости > Господин Микротиков. Автоматизируем сбор и обработку данных с оборудования MikroTik - «Новости»
Господин Микротиков. Автоматизируем сбор и обработку данных с оборудования MikroTik - «Новости»12-09-2021, 00:00. Автор: Elmers |
цитаты с «Баша» о программисте, который автоматизировал все, что занимало у него больше 90 секунд, напишем скрипт, чтобы он выполнял всю эту работу. По дороге поупражняемся в администрировании сетей на основе MikroTik. Как ты помнишь, первый этап любой кибератаки — это разведка. От нее‑то мы и будем защищаться. На некоем граничном маршрутизаторе MikroTik у нас настроены правила Firewall против стандартного скана портов (например, всеми уважаемым сканером Nmap). Правила Firewall против скана портов Все правила настроены в таблице Raw для обработки трафика до попадания в Connection Tracking и меньшей нагрузки на процессор. В правилах задействована цепочка Prerouting, логика работы правил основана на флагах TCP (tcp-flags). Если нам с одного IP-адреса поочередно на разные порты маршрутизатора прилетает несколько пакетов TCP с флагами SYN (полуоткрытые соединения), то можно сделать вывод, что работает сканер портов. Добавляем IP-адрес в Address List и в конце делаем Экспорт правил Firewall против скана портов infoДетальный разбор этих правил выходит за рамки статьи. Чтобы вникнуть подробнее, читай цикл статей «Стена огня» и изучай, как работают сканеры портов. ![]() Первый этап оптимизации жизнедеятельности сисадминаИтак, нам нужно вести учет количества IP-адресов, которые сканируют сеть, и ежедневно отправлять Address List в отдел безопасности предприятия для дальнейшего анализа и предотвращения атак. Как известно, системный администратор существо ленивое занятое, и каждый день заходить на маршрутизатор и скидывать файл с адресами для него нерентабельно. Начал я с того, что написал скрипт для RouterOS, который ежедневно сохранял Address List в файл и отправлял письмо на электронную почту. Пример локального скрипта на маршрутизаторе MikroTik RouterOS :local sysdate [/system clock get date];:local d [:pick $sysdate begin=4 end=6];:local m [:pick $sysdate begin=0 end=3];:local y [:pick $sysdate begin=7 end=11];########SAVE_ADDRESS_LIST_TO_FILE#############/ip firewall address-list print from=[find where list=port_scanners]file="$sysname_$d$m$y_port_scanners_list.txt";:delay 3s;########SEND_ADDRESS_LIST_TO_MAIL############/tool e-mail send to=tester025@protonmail.com from=tester075@protonmail.com subject=([/system identity get name]. " Port_scanners_address_list " . [/system clock get date]) body=("Port scanners address-list of $sysnamenTime and Date stamp: " . [/system clock get time] . " " . [/system clock get date] . "n") file="$sysname_$d$m$y_port_scanners_list.txt"; Скрипт брал основную информацию по оборудованию, имя устройства, дату, месяц и год, искал соответствующий Address List и сохранял файл. Сохраненный файл А затем отправлял сообщение с вложенным файлом на почту. Пример полученного письма Добавление этого скрипта в Scheduler немного облегчило жизнь, но нужно было заходить на почту сохранять логи и еженедельно подсчитывать IP-адреса. Планировщик и наш скрипт Второй этап оптимизации. Учим сервер делать работу за насПлан действий будет следующий.
Из инструментов нам понадобится Unix-образная система (я тестировал на Ubuntu, Armbian и Manjaro), прямые руки и баночка пива (опционально). Приступаем к работе! Сначала создаем директорию для хранения наших скриптов и служебных файлов:
mkdir/home/user/.scripts/cyber
И еще одну — для хранения списка адресов, с которых происходило сканирование:
mkdir/home/user/.scripts/cyber/port_scanners
Также нужно на сервере сгенерировать ключи SSH:
ssh-keygen
И вручную найти публичный ключ ( ![]() infoНе забывай, что после того, как мы положили ключ для пользователя, нужно первый раз зайти на маршрутизатор под этим пользователем по протоколу SSH. Для мониторинга работы скриптов мы будем использовать телеграм‑бота. Его код я здесь приводить не буду, но смастерить его несложно — ищи бота BotFather и дерзай. infoПодробнее о том, как писать ботов для Telegram, читай в статье «Телеграфирует робот. Пишем бота для Telegram на Python». Дальше создаем группу или канал, даем ей соответствующее название (например, Дальше узнаем
https://api.telegram.org/bot<ваш_токен_телеграм_бота>/getUpdates
В ответе нас интересует параметр Вывод в формате JSON:
"chat":{
"id":-1524684857943,
"title":"MikrotControl",
"type":"supergroup"
},
Теперь отправим тестовое сообщение от бота в группу или канал. Для этого есть специальный URL:
https://api.telegram.org/bot<ваш_токен_телеграм_бота>/sendMessage?chat_id=<ідентифікатор_групи>&text=test123
В нашем случае chat ID В группе мы должны получить сообщение от бота с текстом Устанавливаем клиент Git:
sudo pacman -S git
Переходим в директорию
cd/usr/src
Загружаем необходимые ресурсы с GitHub и переходим в загруженную директорию:
sudo git clone https://github.com/matriphe/monit2telegram.git
cd monit2telegram
Затем необходимо скопировать файл конфигурации и скрипты в соответствующие директории файловой системы и дать скриптам права на исполнение:
sudo cp telegramrc /etc/telegramrc
sudo cp sendtelegram.sh /usr/local/bin/sendtelegram
sudo chmod+x /usr/local/bin/sendtelegram
sudo cp monit2telegram.sh /usr/local/bin/monit2telegram
sudo chmod+x /usr/local/bin/monit2telegram
Установить необходимые зависимости (
cd/usr/src
sudo wget https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64
sudo ln -s/usr/src/jq-linux64 /usr/bin/jq
В первоначальном конфиге
TOKEN='...'
CHATID='...'
Проверить, приходят ли сообщения, можно так:
sendtelegram -m "test message from server"
В нашей группе мы должны получить сообщение от бота с указанным текстом. Ну и наконец, пишем наш скрипт. Перейти обратно к новости |