Операционная безопасность редко ограничивается одной операционной системой. В части 4 мы расширяем наш инструментарий автоматизации за пределы Linux и проектируем воркфлоу мониторинга, который работает на обеих платформах в корпоративной сети. Ты создашь Python-скрипт для разбора логов доступа Linux и PowerShell-скрипт для опроса событий безопасности Windows, а затем осмыслишь общие принципы проектирования, которые делают оба решения надёжными.
Цели обучения
Собирать Python-парсер логов, который фильтрует нужные записи, формирует структурированный отчёт и корректно обрабатывает сценарии отсутствующего файла.
Разрабатывать PowerShell-автоматизацию, которая получает последние события безопасности, экспортирует их в CSV и проверяет успех перед завершением.
Сравнивать управляющие конструкции (if, циклы, try/except, try/catch) между языками, чтобы обеспечить единообразную обработку ошибок.
Применять лучшие практики портируемости и безопасности, чтобы уверенно деплоить скрипты в смешанных окружениях.
Сценарий: мониторинг Linux и Windows в ACME
ACME, наша компания-эталон, теперь управляет гибридным парком из Linux-серверов и Windows-рабочих станций. Команда автоматизации хочет лёгкие инструменты, которые выявляют подозрительное поведение, не дожидаясь полноценного развёртывания SIEM. На столе две задачи:
Linux — находить каждое вхождение sudo в логе доступа и сохранять доказательства плюс общее количество в отчёте.
Windows — получать последние 50 записей из журнала событий Security, экспортировать их и подтверждать существование артефакта.
Скрипты ниже служат первой итерацией и готовы к проверке качества и деплою.
Python-модуль — log_monitor.py
Резюме требований
Читать accesos.log (или автоматически определять разумный вариант по умолчанию вроде /var/log/auth.log).
Получать последние 50 записей из журнала Windows Security.
Экспортировать в eventos.csv.
Проверять существование файла и возвращать осмысленный код завершения.
Реализация
param([int]$Cantidad = 50,[string]$RutaSalida = ".\eventos.csv")try{Write-Host"[INFO] Fetching last $Cantidad events from the 'Security' log..."$eventos = Get-EventLog-LogName Security -Newest $Cantidad-ErrorAction Stop
Write-Host"[INFO] Exporting to CSV: $RutaSalida"$eventos|Export-Csv-Path $RutaSalida-NoTypeInformation -Encoding UTF8
if(Test-Path-Path $RutaSalida){Write-Host"[OK] CSV generated successfully: $RutaSalida"exit 0
}else{Write-Host"[ERROR] CSV not found after export."-ForegroundColor Red
exit 1
}}catch{Write-Host"[ERROR] Failed to retrieve or export events: $($_.Exception.Message)"-ForegroundColor Red
exit 2
}
Запуск скрипта
# From an elevated PowerShell prompt.\eventos_seguridad.ps1
.\eventos_seguridad.ps1 -Cantidad 100 -RutaSalida C:\Logs\eventos.csv
Пример вывода
Сравнительный анализ
Управляющие конструкции
Python использует цикл for для перебора строк лога вместе с конструкциями if и блоками try/except для обработки ошибок.
PowerShell полагается на проверки if и блоки try/catch, чтобы реагировать на сбои cmdlet'ов и проверять экспортированный файл.
Дисциплина ввода-вывода
Python-скрипт читает с диска через управляемый контекст (with), сохраняя кодировку и автоматически закрывая файлы.
PowerShell-скрипт опирается на нативные cmdlet'ы, минимизируя кастомный парсинг, при этом всё равно проверяя успех через Test-Path.
Соображения по портируемости и безопасности
Оба скрипта избегают ненужной эскалации привилегий; операторы сами решают, когда запускать с повышенными правами.
Структурированные выходные данные (reporte_sudo.txt, eventos.csv) помогают прослеживаемости и могут отправляться в централизованные системы логирования.
Опциональные параметры (--log, --target, -Cantidad, -RutaSalida) делают скрипты переиспользуемыми на разных хостах и в разных окружениях.
Понятные сообщения об ошибках и коды завершения способствуют поведению, дружественному к автоматизации.
Размышление
Проектирование автоматизации для нескольких платформ раскрывает паттерны, которые выходят за рамки языков: валидируй входные данные заранее, разделяй каналы успеха и ошибок и создавай артефакты, которые могут потреблять последующие инструменты. Расширяя эти скрипты — возможно, добавляя хуки оповещений, обогащение данных или политики хранения — не забывай возвращаться к основам, рассмотренным здесь.
Следующие шаги
Улучшить log_monitor.py поддержкой regex или интеграцией с journalctl на хостах на базе systemd.
Добавить валидацию параметров и структурированное логирование (ConvertTo-Json) в eventos_seguridad.ps1 для более насыщенных пайплайнов.
Планировать оба скрипта через cron и Windows Task Scheduler, обеспечивая ротацию логов и ограниченные права доступа.
Передавать сгенерированные артефакты в SIEM или лёгкий дашборд для отслеживания трендов во времени.