5. Заключительная часть — это блок операторов. В блоке операторов правила нормализации можно использовать функции, операторы и конструкции языка XP, переменные (должны начинаться с $) и поля нормализованного события.
Определяем метод логирования (удаленно или локально):
if $from != null then
logon_auth_method = "remote"
else
logon_auth_method = "local"
endif
datafield9 = $hostname #имя устройства с LogExporter
time = coalesce(epoch_to_datetime(number($kv["time"])), $syslog_time) #время регистрации события на источнике
Функция coalesce проверяет значения аргументов слева направо и возвращает значение первого отличного от null. Количество аргументов может быть любым. Если аргументы не заданы, функция возвращает null:
importance = "info" #важность события для информационной безопасности, может принимать значения info, low, medium, high
Следующие поля служат для назначения категории нарушения информационной безопасности, в связи с которым регистрируется корреляционное событие.
Правила заполнения можно также посмотреть в документации разработчика:
category.generic = "Operating System"
category.high = "Access Management"
category.low = "Communication"
event_src.vendor = "checkpoint" #производитель источника события
event_src.title = "gaia" #название продукта источника события
event_src.ip = $kv["origin"] #IP-адрес источника события
event_src.category = "Network security" #категория источника события, принимает только определенные значения, указанные в документации разработчика
id = "PT_Checkpoint_Gaia_syslog_LogExporter_Common_Login_ongoing" #идентификатор правила нормализации
Таким образом итоговое правило нормализации выглядит следующим образом:
# <134>1 2021-02-11T17:03:43Z checkpoint-sm CheckPoint 9525 - [flags:"0"; ifdir:"inbound"; loguid:"{0x0,0x0,0x0,0x0}"; origin:"10.125.1.30"; time:"1613063023"; version:"1"; default_device_message:"<85>login: ROOT LOGIN ON pts/2 FROM 10.125.3.20 "; facility:"security/authorization messages"; product:"Syslog"; syslog_severity:"Notice"; ]
# <134>1 2021-03-30T17:16:55Z checkpoint-sm CheckPoint 9525 - [flags:"0"; ifdir:"inbound"; loguid:"{0x0,0x0,0x0,0x0}"; origin:"10.125.1.5"; time:"1617124615"; version:"1"; default_device_message:"<86>login: LOGIN ON pts/3 BY anon FROM 10.125.2.1 "; facility:"security/authorization messages"; product:"Syslog"; syslog_severity:"Informational"; ]
TEXT = '{"<"NUMBER">"?}{NUMBER?} {$syslog_time=DATETIME} {$hostname=HOSTNAME}
CheckPoint {NUMBER} - [ {$kv=KEYVALUE(";", ":", "\\"")}'
COND = $kv["facility"] == "security/authorization messages"
and find_substr($kv["default_device_message"], "LOGIN ON") != null
subject = "account"
action = "login"
object = "system"
status = "ongoing"
subformula 'sub1'
TEXT = '{UNTIL("login")}: {subject.account.privileges="ROOT"?} LOGIN ON {logon_service=STRING}
{"BY" subject.account.name=STRING?} {$from="FROM" src.ip=STRING?}'
endsubformula
submessage('TEXT', 'sub1', $kv["default_device_message"])
if $from != null then
logon_auth_method = "remote"
else
logon_auth_method = "local"
endif
datafield9 = $hostname
time = coalesce(epoch_to_datetime(number($kv["time"])), $syslog_time)
importance = "info"
category.generic = "Operating System"
category.high = "Access Management"
category.low = "Communication"
event_src.vendor = "checkpoint"
event_src.title = "gaia"
event_src.ip = $kv["origin"]
event_src.category = "Network security"
id = "PT_Checkpoint_Gaia_syslog_LogExporter_Common_Login_ongoing"
В правилах локализации укажем:
Критерии
id = "PT_Checkpoint_Gaia_syslog_LogExporter_Common_Login_ongoing" and protocol = null and subject.name != null
Значение (русский)
Пользователь {subject.name} пытался войти в систему на узле {event_src.host} через локальную консоль
Значение (английский)
The user {subject.name} made an attempt to log in to the system on host {event_src.host} via the local console
ИЛИ
Критерии
id = "PT_Checkpoint_Gaia_syslog_LogExporter_Common_Login_ongoing" and protocol = null and subject.privileges != null
Значение (русский)
Пользователь с правами {subject.privileges} пытался войти в систему на узле {event_src.host} через локальную консоль
Значение (английский)
A user with the {subject.privileges} permissions made an attempt to log in to the system on host {event_src.host} via the local console