auditd из выпуска о syscall-логах пишет непрерывный поток событий ядра — кто, когда и что вызвал. osquery устроен принципиально иначе: это не лог, а движок, который превращает текущее состояние системы в набор SQL-таблиц. Вместо ps, netstat, lsof и dpkg -l по отдельности — один SELECT с JOIN между ними.

Интерактивная оболочка osqueryi поднимает временную in-memory базу прямо в терминале, без демона и без прав root:

$ osqueryi
osquery> SELECT DISTINCT
    ...>   process.name,
    ...>   listening.port,
    ...>   process.pid
    ...> FROM processes AS process
    ...> JOIN listening_ports AS listening
    ...> ON process.pid = listening.pid
    ...> WHERE listening.address = '0.0.0.0';

Таблиц в схеме несколько сотен — processes, listening_ports, users, deb_packages/rpm_packages, mounts, crontab и так далее, полный список — через .tables, структура конкретной — .schema <имя>. Для разовой проверки “кто слушает порты” или “какие пакеты стоят с CVE в названии” это быстрее, чем помнить флаги пяти разных утилит.

Постоянный мониторинг — задача демона osqueryd, а не osqueryi: тот же SELECT оформляется как scheduled query в JSON-конфиге с интервалом, и система периодически пересчитывает его сама:

{
  "schedule": {
    "processes_binding_to_ports": {
      "query": "SELECT DISTINCT process.name, listening.port, process.pid FROM processes AS process JOIN listening_ports AS listening ON process.pid = listening.pid;",
      "interval": 60
    }
  }
}

Разница с auditd здесь принципиальная: auditd ловит момент события (execve конкретного процесса здесь и сейчас), а osquery по расписанию делает снимок состояния и сравнивает с предыдущим — по умолчанию в лог попадают только изменения между запусками (removed: true), либо полный снапшот, если явно включить "snapshot": true. Для разбора “что произошло в момент атаки” нужен именно auditd, а для “что сейчас установлено, что слушает порты и не разъехалась ли конфигурация между серверами” — osquery через SQL быстрее любого самописного скрипта на find/grep.

#linux #security #osquery