Osquery – это операционная система с открытым исходным кодом, мониторинга и аналитики.
Созданный Facebook, она предоставляет операционную систему как высокопроизводительную реляционную базу данных, которая может работать с использованием запросов на основе SQL.
Osquery – это многоплатформенное программное обеспечение, которое может быть установлено на Linux, Windows, MacOS и FreeBSD.
Она позволяет нам исследовать все профили, производительность, безопасность и т. д. этих операционных систем, используя запросы на основе SQL.
В этом уроке мы покажем вам, как настроить File Integrity Monitoring (FIM) с osquery.
Мы будем использовать операционные системы Linux Ubuntu 18.04 и CentOS 7.
Предпосылки
- Linux (Ubuntu или CentOS)
- Привилегии root
Шаг 1 – Установите osquery на Linux Server
Osquery предоставляет собственный репозиторий для установки на платформе, и первым шагом, который мы собираемся сделать, является установка пакета osquery из официального репозитория osquery.
На Ubuntu
Добавьте в систему ключ osquery.
export OSQUERY_KEY=1484120AC4E9F8A1A577AEEE97A80C63C9D8B80B sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $OSQUERY_KEY\
Добавьте репозиторий osquery и установите пакет.
sudo add-apt-repository 'deb [arch=amd64] https://pkg.osquery.io/deb deb main' sudo apt install osquery -y
На CentOS
Добавьте в систему ключ osquery.
curl -L https://pkg.osquery.io/rpm/GPG | sudo tee /etc/pki/rpm-gpg/RPM-GPG-KEY-osquery
Добавьте и включите репозиторий osquery и установите пакет.
sudo yum-config-manager --add-repo https://pkg.osquery.io/rpm/osquery-s3-rpm.repo sudo yum-config-manager --enable osquery-s3-rpm sudo yum install osquery -y
Подождите, пока все пакеты будут установлены.
Если вы получите сообщение об ошибке команды yum-config-manager:
sudo: yum-config-manager: command not found
Установите пакет «yum-utils».
yum -y install yum-utils
Шаг 2 – Включите обработку Syslog в osquery
Osquery предоставляет функции для чтения или использования системных журналов на Apple MacOS с использованием системного журнала Apple (ASL), а для Linux используется syslog.
На этом этапе мы включим syslog для osquery через rsyslog.
На Ubuntu
Установите пакет rsyslog, используя команду apt, приведенную ниже:
sudo apt install rsyslog -y
На CentOS
Установите пакет rsyslog с помощью команды yum :
sudo yum install rsyslog -y
По завершении установки перейдите в каталог ‘/etc/rsyslog.d’ и создайте новый файл конфигурации osquery.conf.
cd /etc/rsyslog.d/ vim osquery.conf
Вставьте следующую конфигурацию:
template( name="OsqueryCsvFormat" type="string" string="%timestamp:::date-rfc3339,csv%,%hostname:::csv%,%syslogseverity:::csv%,%syslogfacility-text:::csv%,%syslogtag:::csv%,%msg:::csv%\n" ) *.* action(type="ompipe" Pipe="/var/osquery/syslog_pipe" template="OsqueryCsvFormat")
Сохраните и закройте файл.
Шаг 3 – Основная настройка osquery
Конфигурационный файл по умолчанию – это «osquery.conf», обычно находящийся в каталоге «/etc/osquery».
Имеются образцы конфигурации osquery ‘/usr/share/osquery/osquery.conf’ и образец конфигурации пакетов osquery.
На этом этапе мы узнаем о компонентах конфигурации osquery, создадим настраиваемую конфигурацию osquery и затем развернем osqueryd в качестве службы.
Конфигурация osquery, отформатированная как файл JSON, содержит спецификации конфигурации osquery, описанные ниже.
- Options: часть команды CLI osqueryd, она определяет запуск и инициализацию приложений.
- Schedule: Определяет поток запланированных имен запросов к деталям запроса.
- Decorators: используются для добавления дополнительных «decoration»
- Packs: группа запросов по расписанию.
- More: Путь к файлу, YARA, Prometheus, Views, EC2, Конфигурация Chef
Перейдите в каталог «/etc/osquery» и создайте новую конфигурацию «osquery.conf».
cd /etc/osquery/ vim osquery.conf
Вставьте в этот файл следующую конфигурацию:
{ "options": { "config_plugin": "filesystem", "logger_plugin": "filesystem", "logger_path": "/var/log/osquery", "disable_logging": "false", "log_result_events": "true", "schedule_splay_percent": "10", "pidfile": "/var/osquery/osquery.pidfile", "events_expiry": "3600", "database_path": "/var/osquery/osquery.db", "verbose": "false", "worker_threads": "2", "enable_monitor": "true", "disable_events": "false", "disable_audit": "false", "audit_allow_config": "true", "host_identifier": "hakase-labs", "enable_syslog": "true", "syslog_pipe_path": "/var/osquery/syslog_pipe", "force": "true", "audit_allow_sockets": "true", "schedule_default_interval": "3600" }, "schedule": { "crontab": { "query": "SELECT * FROM crontab;", "interval": 300 }, "system_info": { "query": "SELECT hostname, cpu_brand, physical_memory FROM system_info;", "interval": 3600 }, "ssh_login": { "query": "SELECT username, time, host FROM last WHERE type=7", "interval": 360 } }, "decorators": { "load": [ "SELECT uuid AS host_uuid FROM system_info;", "SELECT user AS username FROM logged_in_users ORDER BY time DESC LIMIT 1;" ] }, "packs": { "osquery-monitoring": "/usr/share/osquery/packs/osquery-monitoring.conf" } }
Сохраните и закройте.
Мы используем «filesystem» в качестве плагина конфигурации и регистратора.
Определите путь регистрации в каталоге ‘/ var / log / osquery’.
Включите syslog в файл ‘/ var / syslog / syslog_pipe’.
В планировщике мы определяем три запроса для проверки crontab, системной информации и входа ssh.
Включите пакеты osquery с именем «osquery-monitoring» и упаковывайте файлы, расположенные в каталоге «/ usr / share / osquery / packs».
Теперь запустите службу daemon osqueryd и включите ее для запуска каждый раз при загрузке системы.
systemctl start osqueryd systemctl enable osqueryd
И перезагрузите службу rsyslog
systemctl restart rsyslog
На этом завершена основная настройка osquery.
Шаг 4 – Настройка контроля целостности файлов (FIM) используя osquery
Osquery обеспечивает мониторинг целостности файлов в Linux и MacOS Darwin с использованием inotify и FSEvents.
Просто он отслеживает и обнаруживает любые изменения файлов в определенном каталоге с помощью «file_path», а затем сохраняет всю активность в таблице file_events.
На этом этапе мы сконфигурируем osquery для мониторинга важных каталогов, таких как home, ssh и т. д., Tmp и корневой каталог www web, используя пользовательские пакеты FIM.
Перейдите в каталог ‘/usr/share/osquery/packs’ и создайте новый файл конфигурации ff.conf.
cd /usr/share/osquery/packs vim fim.conf
Вставьте в него содержимое ниже:
{ "queries": { "file_events": { "query": "SELECT * FROM file_events;", "removed": false, "interval": 300 } }, "file_paths": { "homes": [ "/root/.ssh/%%", "/home/%/.ssh/%%" ], "etc": [ "/etc/%%" ], "home": [ "/home/%%" ], "tmp": [ "/tmp/%%" ], "www": [ "/var/www/%%" ] } }
Сохраните и закройте файл.
Вернитесь в каталог конфигурации «/etc/osquery» и отредактируйте файл osquery.conf.
cd /etc/osquery/ vim osquery.conf
Добавьте конфигурацию пакетов контроля целостности файла в разделе «packs».
"packs": { "osquery-monitoring": "/usr/share/osquery/packs/osquery-monitoring.conf", "fim": "/usr/share/osquery/packs/fim.conf" }
Сохраните и выйдите, а затем перезапустите службу osqueryd.
systemctl restart osqueryd
Продолжайте проверять конфигурационный файл JSON с помощью JSON linter ‘http://jsonlint.com/’ и убедитесь, что ошибок нет.
Шаг 5 – Тестирование
Мы проверим пакеты контроля целостности файлов, создав новый файл в определенном каталоге «home» и «www».
Перейдите в каталог ‘/var/www/’ и создайте новый файл с именем ‘howtoforge.md’.
cd /var/www/ touch howtoforge.md
Перейдите в каталог «/home/youruser /» и создайте новый файл с именем «hakase-labs.md».
cd /home/vagrant/ touch hakase-labs.md
Теперь мы проверим мониторинг всех журналов с помощью интерактивного режима osqueryi в реальном времени и журналов результатов osquery.
osqueryi
Запустите команду osqueryi:
osqueryi --config-path /etc/osquery/osquery.conf
Теперь проверьте все журналы изменений файла в таблице «file_events».
Для глобальных изменений.
select * from file_events;
Для каталога «home».
select target_path, category, action, atime, ctime, mtime from file_events WHERE category="home";
Для корневого каталога веб-сайта www.
select target_path, category, action, atime, ctime, mtime from file_events WHERE category="www";
журнал результатов osqueryd
Перейдите в каталог ‘/var/log/osquery’, и вы получите файл ‘osqueryd.results.log’.
cd /var/log/osquery/ ls -lah osqueryd.results.log
Отфильтруйте журналы osquery с помощью команды grep.
grep -rin howtoforge.md osqueryd.results.log grep -rin hakase-labs.md osqueryd.results.log