дифференциальный вывод запроса osquery на тему «catchall» - PullRequest
1 голос
/ 15 октября 2019

Я использую osquery для мониторинга серверов в моей сети. Следующий osquery.conf каждую минуту снимает снимки процессов, обменивающихся данными через сетевые порты, и публикует эти данные в Kafka:

{
  "options": {
    "logger_kafka_brokers": "cp01.woolford.io:9092,cp02.woolford.io:9092,cp03.woolford.io:9092",
    "logger_kafka_topic": "base_topic",
    "logger_kafka_acks": "1"
  },
  "packs": {
    "system-snapshot": {
      "queries": {
        "processes_by_port": {
          "query": "select u.username, p.pid, p.name, pos.local_address, pos.local_port, pos.remote_address, pos.remote_port from processes p join users u on u.uid = p.uid join process_open_sockets pos on pos.pid=p.pid where pos.remote_port != '0'",
          "interval": 60,
          "snapshot": true
        }
      }
    }
  },
  "kafka_topics": {
    "process-port": [
      "pack_system-snapshot_processes_by_port"
    ]
  }
}

Вот пример выходных данных запроса:

osquery> select u.username, p.pid, p.name, pos.local_address, pos.local_port, pos.remote_address, pos.remote_port from processes p join users u on u.uid = p.uid join process_open_sockets pos on pos.pid=p.pid where pos.remote_port != '0';
+--------------------+-------+---------------+------------------+------------+------------------+-------------+
| username           | pid   | name          | local_address    | local_port | remote_address   | remote_port |
+--------------------+-------+---------------+------------------+------------+------------------+-------------+
| cp-kafka-connect   | 13646 | java          | 10.0.1.41        | 49018      | 10.0.1.41        | 9092        |
| cp-kafka-connect   | 13646 | java          | 10.0.1.41        | 49028      | 10.0.1.41        | 9092        |
| cp-kafka-connect   | 13646 | java          | 10.0.1.41        | 49026      | 10.0.1.41        | 9092        |
| cp-kafka-connect   | 13646 | java          | 10.0.1.41        | 50558      | 10.0.1.43        | 9092        |
| cp-kafka-connect   | 13646 | java          | 10.0.1.41        | 50554      | 10.0.1.43        | 9092        |
| cp-kafka-connect   | 13646 | java          | 10.0.1.41        | 49014      | 10.0.1.41        | 9092        |
| root               | 1505  | sssd_be       | 10.0.1.41        | 46436      | 10.0.1.89        | 389         |
...
| cp-ksql            | 1757  | java          | 10.0.1.41        | 56180      | 10.0.1.41        | 9092        |
| cp-ksql            | 1757  | java          | 10.0.1.41        | 53878      | 10.0.1.43        | 9092        |
| root               | 19684 | sshd          | 10.0.1.41        | 22         | 10.0.1.53        | 50238       |
| root               | 24082 | sshd          | 10.0.1.41        | 22         | 10.0.1.53        | 51233       |
| root               | 24107 | java          | 10.0.1.41        | 56052      | 10.0.1.41        | 9092        |
| root               | 24107 | java          | 10.0.1.41        | 56054      | 10.0.1.41        | 9092        |
| cp-schema-registry | 24694 | java          | 10.0.1.41        | 50742      | 10.0.1.31        | 2181        |
| cp-schema-registry | 24694 | java          | 10.0.1.41        | 47150      | 10.0.1.42        | 9093        |
| cp-schema-registry | 24694 | java          | 10.0.1.41        | 58068      | 10.0.1.41        | 9093        |
| cp-schema-registry | 24694 | java          | 10.0.1.41        | 47152      | 10.0.1.42        | 9093        |
| root               | 25782 | osqueryd      | 10.0.1.41        | 57700      | 10.0.1.43        | 9092        |
| root               | 25782 | osqueryd      | 10.0.1.41        | 56188      | 10.0.1.41        | 9092        |
+--------------------+-------+---------------+------------------+------------+------------------+-------------+

Вместо снимков я хотел бы, чтобы osquery захватывал различия, т.е. только публиковал изменения в Kafka.

Я пытался переключить свойство снимка с true на false. Я ожидал, что osquery отправит изменения. По какой-то причине, когда я установил "snapshot": false, по теме process-port данные не публикуются. Вместо этого все данные направляются на перехват base_topic.

Вы видите, что я делаю не так?

Обновление:

Я думаю, что я бегув эту ошибку: https://github.com/osquery/osquery/issues/5559

Вот видео-пошаговое руководство: https://youtu.be/sPdlBBKgJmY

Я отправил отчет об ошибке с инструкциями по воспроизведению на случай, если проблема не та: https://github.com/osquery/osquery/issues/5890

1 Ответ

0 голосов
/ 15 октября 2019

Учитывая контекст, я не могу сразу сказать, что является причиной проблемы, с которой вы столкнулись.

Чтобы отладить это, я сначала попытался бы использовать плагин filesystem logger вместо (или вдополнение к) регистратору Kafka.

Получаете ли вы результаты по теме Kafka, когда запрос настроен как снимок? Если да, то можете ли вы проверить, что результаты действительно меняются, так что при создании запроса в дифференциальном режиме должен генерироваться diff?

Можете ли вы увидеть результаты, зарегистрированные локально при использовании --logger_plugin=filesystem,kafka?

...