
Скрипты безопасности и мониторинга Linux
Это набор скриптов для безопасности и мониторинга, которые можно использовать для отслеживания событий, связанных с безопасностью, в вашей установке Linux, а также для проведения расследований. Каждый скрипт работает самостоятельно и независим от других. Скрипты могут выводить результаты, отправлять их вам по почте или использовать AlertR в качестве канала уведомлений.
Скрипты находятся в каталоге scripts/.
Каждый скрипт содержит краткое описание в заголовке файла с указанием его назначения, способа интерпретации результата (если он не однозначен) и известных проблем. Также перечислены зависимости, которые необходимо установить, и ссылки на источник идеи (если доступны).
Для каждого скрипта существует файл конфигурации в каталоге scripts/config/. Если конфигурационный файл не найден при выполнении скрипта, он использует настройки по умолчанию и выводит результаты. Таким образом, файл конфигурации не обязателен.
Каталог scripts/lib/ содержит код, общий для различных скриптов.
Скрипты с префиксом monitor_ сохраняют состояние и используются только для мониторинга. Однократное использование такого скрипта для расследования покажет только текущее состояние системы, а не изменения, которые могут быть важны для безопасности. Если вы хотите установить текущее состояние вашей системы как безопасное для этих скриптов, используйте аргумент --init.
Скрипты с префиксом search_ ищут признаки компрометации. Их можно использовать для расследования. Если вы хотите использовать их для мониторинга, используйте аргумент --monitoring для сохранения состояния и вывода только новых находок.
Ознакомьтесь с заголовком скрипта, который вы хотите выполнить. В нём содержится краткое описание того, что делает этот скрипт, и какие зависимости требуются (если они есть). Если требуются зависимости, установите их перед запуском скрипта.
Общий файл конфигурации scripts/config/config.py содержит настройки, используемые всеми скриптами. Кроме того, каждый скрипт можно настроить с помощью соответствующего файла конфигурации в каталоге scripts/config/. Если файл конфигурации не найден, используются настройки по умолчанию, и результаты выводятся на экран.
Наконец, вы можете запустить все настроенные скрипты, выполнив start_search.py (который находится в главном каталоге), или запустив каждый скрипт вручную. Для запуска скриптов требуется интерпретатор Python3.
Если вы хотите использовать скрипты для постоянного мониторинга вашей системы Linux, выполните следующие шаги:
Настройте канал уведомлений, поддерживаемый скриптами (в настоящее время это вывод на экран, почта или AlertR).
Настройте скрипты, которые вы хотите запускать, с помощью файлов конфигурации в каталоге scripts/config/.
Выполните start_search.py с аргументом --init, чтобы инициализировать скрипты с префиксом monitor_ и позволить им установить состояние вашей системы. Однако это предполагает, что ваша система в настоящее время не скомпрометирована. Если вы не уверены в этом, проверьте её текущее состояние.
Настройте задание cron от пользователя root, которое выполняет start_search.py --monitoring (например, 0 * * * * root /opt/LSMS/start_search.py --monitoring для ежечасного запуска). Аргумент --monitoring заставляет скрипты сообщать только о новых находках, предотвращая постоянное повторение одних и тех же проблем.
| Название | Скрипт |
|---|
| Мониторинг файлов cron | monitor_cron.py |
| Мониторинг файла /etc/hosts | monitor_hosts_file.py |
| Мониторинг файла /etc/ld.so.preload | monitor_ld_preload.py |
| Мониторинг файла /etc/passwd | monitor_passwd.py |
| Мониторинг модулей | monitor_modules.py |
| Мониторинг файлов authorized_keys SSH | monitor_ssh_authorized_keys.py |
| Мониторинг юнит-файлов systemd | monitor_systemd_units.py |
| Поиск запущенных удалённых программ | search_deleted_exe.py |
| Поиск исполняемых файлов в /dev/shm | search_dev_shm.py |
| Поиск скрытых ELF-файлов | search_hidden_exe.py |
| Поиск неизменяемых файлов | search_immutable_files.py |
| Поиск записей lastlog, отсутствующих в журналах utmp | search_lastlog_in_utmp.py |
| Поиск безфайловых программ (memfd_create) | search_memfd_create.py |
| Поиск подмены потоков ядра | search_non_kthreads.py |
| Поиск процессов, запущенных отключённой SSH-сессией | search_ssh_leftover_processes.py |
| Поиск флагов загрязнения модулей ядра для подозрительных комбинаций | search_tainted_modules.py |
| Поиск признаков подделки журналов utmp | search_utmp_tampering.py |
| Тестовый скрипт для проверки работы оповещений | test_alert.py |
| Проверка целостности установленных пакетов .deb | verify_deb_packages.py |