Работа с полями
В KOMRAD поля событий делятся на следующие типы:
-
Внутренние (общие):
-
Key - уникальный ключ события, генерируется во время создания события
-
CTime - время создания события, извлечённое из сырого текста события
-
GenerationTime - время получения события агентом/коллектором
-
WTime - время записи в хранилище
-
CollectorType - тип агента или коллектора событий ИБ
-
Raw - исходный текст полученного события
-
CollectorID - уникальный идентификатор агента или коллектора событий ИБ
-
SetupID - идентификатор инсталляции KOMRAD
-
TenantID - ID кластера в мульти-кластерной инсталляции
-
SL - метка безопасности для управления доступом к событиям ИБ
-
Producer - точка генерации события ИБ в KOMRAD-коллекторе, корреляторе, Сканер-ВС
-
AggregationName - метка агрегации событий ИБ
-
Count - число агрегированных событий ИБ по метке агрегации
-
AssetIPs - IP связанных с событием активов
-
FwdIP - IP узла, с которого поступило событие в коллектор
-
FwdPort - порт, который использовался узлом для направления события в коллектор
-
PluginIDs - ID плагинов, сработавших в нормализации события
-
-
Поля коллекторов (появляются при подключении коллектора)
-
Поля ECS (Elastic Common Schema):
-
ECS.Agent.EphemeralID - имя, которое можно присвоить агенту. Это может быть полезно в случае, когда два экземпляра агента работают на одном хосте, но требуется визуальное разделение, на которое поступают данные экземпляра агента. Если имя не указано, оно часто остается пустым
-
ECS.Host.IP - IP хоста
-
ECS.Log.Level - уровень логирования, например, "warn", "err", "i", "informational"
-
ECS.Related.IP - все IP-адреса события
-
ECS.Agent.ID - ID агента
-
ECS.Log.Logger - полное наименование логгера приложения
-
-
Пользовательские поля
Чтобы создать пользовательское поле, необходимо выполнить следующие действия:
-
Перейти во вкладку manage ⇒ Настройка коллекторов ⇒ Поля событий ⇒ Пользовательские
-
Нажать
Добавить
-
Задать уникальное название поля события в стиле
PascalCase
, название поля для отображения, описание -
Задать тип данных поля из выпадающего списка. Типы данных полей и их описание представлены в следующей таблице
-
Нажать
Сохранить
Типы данных полей
Тип поля | Описание |
---|---|
string | представляет строковый тип данных |
int | представляет целое число со знаком, которое в зависимости о платформы может соответствовать либо int32, либо int64 |
int32 | представляет целое число от -2 147 483 648 до 2 147 483 647 |
int64 | представляет целое число от –9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 |
int_slice | представляет неограниченный int |
uint8 | представляет целое число от 0 до 255 |
uint16 | представляет целое число от 0 до 65 535 |
uint32 | представляет целое число от 0 до 4 294 967 295 |
uint64 | представляет целое число от 0 до 18 446 744 073 709 551 615 |
uint64_slice | представляет неограниченный uint64 |
float32 | представляет число с плавающей точкой от 1.410^-45^ до 3.410^38^ (для положительных) |
float64 | представляет число с плавающей точкой от 4.910^-324^ до 1.810^308^ (для положительных) |
bytes | синоним типа uint8, представляет целое число от 0 до 255 |
time | представляет временной тип данных |
bool | логический тип, имеет одно из двух значений: true (истина) или false (ложь) |
ip | IPv4 или IPv6 |
ip_slice | представляет неограниченный IP |
string_slice | представляет неограниченный string |
Вы не сможете удалить пользовательское поле, которое использовалось в плагине, после удаления этого плагина
Поля категоризации ECS
- event.kind - предоставляет высокоуровневую информацию о том, какой тип информации содержит событие, без указания содержания события. Например, значения этого поля отличают события предупреждений от событий метрик.
Значение этого поля может использоваться для информирования о том, как следует обрабатывать события такого рода. Они могут гарантировать различное хранение, другой контроль доступа, также может помочь понять, поступают ли данные через регулярные промежутки времени или нет.
- event.category -
представляет «большие ведра» категорий ECS. Например, фильтрация по
event.category:process
дает все события, связанные с активностью процесса. Это поле тесно связано с полемevent.type
, которое используется как подкатегория.
Это поле представляет собой массив. Позволяет правильно классифицировать некоторые события, попадающие в несколько категорий.
- event.type -
представляет собой «подсегмент» категоризации, который при использовании вместе со значениями полей
event.category
позволяет фильтровать события до уровня, подходящего для одиночной визуализации.
Это поле представляет собой массив. Позволяет правильно классифицировать некоторые события, которые относятся к нескольким типам событий.
- event.outcome - обозначает, представляет ли событие успех или неудачу с точки зрения объекта, вызвавшего событие.
Обратите внимание, что когда одна транзакция описывается в нескольких событиях, каждое событие может содержать разные значения event.outcome
, в зависимости от их точки зрения.
Также обратите внимание, что в случае составного события (одно событие, содержащее несколько логических событий) это поле должно быть заполнено значением, которое лучше всего отражает общий успех или неудачу с точки зрения производителя события.
Кроме того, обратите внимание, что не все события будут иметь связанный результат. Например, это поле обычно не заполняется для событий метрик, событий со значком event.type:info
или любых событий, для которых результат не имеет логического смысла.
Использование полей категоризации
Поля категоризации событий работают вместе, чтобы идентифицировать и группировать похожие события из нескольких источников данных.
Эти общие принципы могут помочь в процессе категоризации:
-
События из нескольких источников данных, которые достаточно похожи, чтобы их можно было просматривать или анализировать вместе, должны попадать в одно и то же поле
event.category
-
Поля
event.category
иevent.type
являются массивами и могут быть заполнены несколькими допустимыми значениями, если событие может быть классифицировано более чем по одной категории и/или типу -
Поля
event.kind
,event.category
,event.type
иevent.outcome
имеют допустимые значения. Это сделано для нормализации этих полей. Значения, которых нет в списке разрешенных значений, не должны использоваться. -
Значения полей
event.category
,event.type
иevent.outcome
являются согласованными для всех значений поляevent.kind
-
Если конкретное событие не вписывается ни в одно из определенных допустимых значений категоризации, поле следует оставить пустым
Примеры использования полей категоризации:
-
Брандмауэр, блокирующий сетевое подключение
...
{
"source": {
"address": "10.42.42.42",
"ip": "10.42.42.42",
"port": 38842
},
"destination": {
"address": "10.42.42.1",
"ip": "10.42.42.1",
"port": 443
},
"rule": {
"name": "wan-lan",
"id": "default"
},
...
"event": {
"kind": "event",
"category": [
"network"
],
"type": [
"connection",
"denied"
],
"outcome": "success",
"action": "dropped"
}
}
...«Запрещено» сетевое соединение может подпадать под разные значения действия: «заблокировано», «сброшено», «помещено в карантин» и т.д. Поле фиксирует действие, выполненное в соотве тствии с описанием источника, а заполнение обеспечивает независимое нормализованное значение
event.actionevent.type:denied
Единственный запрос вернет все запрещенные сетевые подключения, которые были нормализованы с теми же значениями категоризации:
event.category:network AND event.type:denied
-
Неудачная попытка создать учетную запись пользователя
Пользователь пытается добавить учетную запись пользователя в службу каталогов, но действие завершается сбоем:
alice bob
{
"user": {
"name": "alice",
"target": {
"name": "bob"
}
},
"event": {
"kind": "event",
"category": [
"iam"
],
"type": [
"user",
"creation"
],
"outcome": "failure"
}
} -
Справочный список файла
Служебная программа, такая как приложение мониторинга целостности файлов (FIM), проводит инвентаризацию файла, но не обращается к файлу и не изменяет его:
{
"file": {
"name": "example.png",
"owner": "alice",
"path": "/home/alice/example.png",
"type": "file"
},
"event": {
"kind": "event",
"category": [
"file"
],
"type": [
"info"
]
}
}Исходные данные не включали никакого контекста, связанного с исходом события, поэтому
event.outcome
не следует заполнять. -
Программе безопасности не удалось заблокировать сетевое подключение
Система обнаружения вторжений (IDS) пытается заблокировать соединение, но терпит неудачу. Событие, выдаваемое IDS, считается предупреждением:
{
"source": {
"address": "10.42.42.42",
"ip": "10.42.42.42",
"port": 38842
},
"destination": {
"address": "10.42.42.1",
"ip": "10.42.42.1",
"port": 443
},
...
"event": {
"kind": "alert",
"category": [
"intrusion_detection",
"network"
],
"type": [
"connection",
"denied"
],
"outcome": "failure"
}
}