Работа с полями
В 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^ (для положительных) |
byte_slice | синоним типа uint8, представляет целое число от 0 до 255 (экспериментальное поле, тесты не подтвердили работоспособность) |
time | представляет временной тип данных |
bool | логический тип, имеет одно из двух значений: true (истина) или false (ложь) |
ip | IPv4 или IPv6 |
ip_slice | представляет неограниченный IP |
string_slice | представляет неограниченный string |
duration | формат времени, такой как 00:00:00 или hours:minutes:seconds. |
indicator | тип события индикатора испол ьзуется для подмножества событий внутри категории, которые содержат подробные сведения об индикаторах компрометации (IoC).Распространенным примером является event.category:threat AND event.type:indicator |
risk_level | уровень классификации рисков, рассчитываемый внутренней системой как часть аналитики предприятия и скоринга рисков предприятия |
network_direction | ожидаемые значения для этого типа: ingress, egress ,inbound, outbound, internal, external, unknown |
mac_address | строка с примерным ожидаемым значением 00-00-5E-00-53-23 |
log_level | Ожидаемые значения для этого типа: warn, err, i, informational, error |
hlkey | HLKey - это хэш и длина некоторых данных. Используется для поиска данных в высокоуровневой базе данных |
Поля со значением 0 не парсятся
Вы не сможете удалить пользовательское поле, которое использовалось в плагине, после удаления этого плагина
Поля категоризации ECS
- event.kind - предоставляет высокоуровневую информацию о том, какой тип информации содержит событие, без указания содержания события. Например, значения этого поля отличают события предупреждений от событий метрик.
Значение этого поля может использоваться для информирования о том, как следует обрабатывать события такого рода. Они могут гара нтировать различное хранение, другой контроль доступа, также может помочь понять, поступают ли данные через регулярные промежутки времени или нет.
- event.category -
представляет «большие ведра» категорий ECS. Например, фильтрация по
event.category:process
дает все события, связанные с активностью процесса. Это поле тесно связано с полемevent.type
, которое используется как подкатегория.
Это поле представляет собой массив. Позволяет правильно классифицировать некоторые события, попадающие в несколько категорий.
- event.type -
представляет собой «подсегмент» категоризации, который при использовании вместе со значениями полей
event.category
позволяет фильтровать события до уровня, подходящего для одиночной визуализации.
Это поле представляет собой массив. Позволяет правильно классифицировать некоторые события, которые относятся к нескольким типам событий.
- event.outcome - обозначает, представляет ли событие успех или неудачу с точки зрения объекта, вызвавшего событие.
Обратите внимание, что когда одна транзакция описывается в нескольких событиях, каждое событие может содержать разные значения event.outcome
, в зависимости от их точки зрения.
Также обратите внимание, что в случае составного события (одно событие, содержащее несколько логических событий) это поле должно быть заполнено значением, которое лучше всего отражает общий успех или неудачу с точки зрения производителя события.
Кроме того, обратите внимание, что не все события будут иметь связанный результат. Например, это поле обычно не заполняется для событий метрик, событий со значком event.type:info
или любых событий, для которых результат не имеет логического смысла.
-
risk.level - Уровень классификации рисков, рассчитываемый внутренней системой как часть аналитики предприятия и оценки рисков предприятия.
-
log.level - Исходный уровень журнала события журнала.
Если источник события предоставляет уровень журнала или текстовую серьезность, это тот, который отображается в журнале.уровень. Если в вашем источнике он не указан, вы можете указать здесь серьезность вашего транспорта событий (например, серьезность системного журнала).
-
network.direction - Направление сетевого трафика. Рекомендуемые значения:
- ingress
- egress
- inbound
- outbound
- internal
- external
- unknown
При отображении событий из контекста мониторинга на основе хоста заполните это поле с точки зрения хоста, используя значения "вход" или "выход". При сопоставлении событий из контекста мониторинга на основе сети или периметра заполните это поле с точки зрения периметра сети, используя значения "входящие", "исходящие", "внутренние" или "внешние". Обратите внимание, что "внутренний" не пересекает границы периметра и предназначен для описания связи между двумя хостами внутри периметра. Обратите также внимание, что "внешний" предназначен для описания трафика между двумя хостами, которые являются внешними по отношению к периметру. Это может быть, например, полезно для интернет-провайдеров или поставщиков услуг VPN.
Использование полей категоризации
Поля категоризации событий работают вместе, чтобы идентифицировать и группировать похожие события из нескольких источников данных.
Эти общие принципы могут помочь в процессе категоризации:
-
События из нескольких источников данных, которые достаточно похожи, чтобы их можно было просматривать или анализировать вместе, должны попадать в одно и то же поле
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"
}
}