Приветствую, уважаемый читатель!
Сегодня постараюсь быстро рассказать - как можно (один из способов) подключить централизованные журналы СЗИ НСД Secret Net Studio к Splunk. Сразу скажу, вопрос настройки передачи событий в real-time у меня в настоящее время не стоит :)
1) Необходимо запросить у вендора бесплатный скрипт, который создаст в БД СЗИ НСД Secret Net Studio представление (VIEW SECRETNETLOG) и получить несколько библиотек, которые необходимо по умолчанию разместить тут - C:\CLRDeviceInfoConverter\. Данное представление будет содержать все важные события безопасности для дальнейшего анализа.
2) Вам необходимо из созданного представления выбрать часть событий которые хотите отправить в SIEM. Можно отправить и все события за какой-то период, но получите тонну ненужного спама. Ребята из Кода Безопасности заботливо направят вам описание категорий событий и вам нужно выбрать интересующие.
Пример запроса событий ниже:
SELECT * FROM [SN7_SERVER_SCHEMA].[dbo].[SECRETNETLOG] where TIMEWRITTEN between '2022-09-17 00:00:00' AND '2022-09-17 23:59:59' AND CATEGORY in ('Контроль устройств','Контроль печати','Самозащита','Вход/выход','Разграничение доступа к устройствам','Аутентификация и идентификация','События модулей ядра')
3) Я люблю передавать события в SIEM через HTTP-коллекторы, пример как можно передать ниже. В части скрипта необходимо заменить x.x.x.x на реальные адреса. Скрипт на PS, естественно, необходимо добавлять его в шедулер.
add-type @"
using System.Net;
using System.Security.Cryptography.X509Certificates;
public class TrustAllCertsPolicy : ICertificatePolicy {
public bool CheckValidationResult(
ServicePoint srvPoint, X509Certificate certificate,
WebRequest request, int certificateProblem) {
return true;
}
}
"@
$TLSProtocols = [System.Net.SecurityProtocolType]'Ssl3,Tls,Tls11,Tls12'
[System.Net.ServicePointManager]::SecurityProtocol = $TLSProtocols
[System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy
$SqlServer = "10.x.X.X";
$SqlCatalog = "SN7_SERVER_SCHEMA";
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server=$SqlServer; Database=$SqlCatalog; Integrated Security=True"
$SqlConnection.Open()
$SqlCmd = $SqlConnection.CreateCommand()
$SqlCmd.CommandText = "SELECT * FROM [SN7_SERVER_SCHEMA].[dbo].[SECRETNETLOG] where TIMEWRITTEN between '2022-09-17 00:00:00' AND '2022-09-17 23:59:59' AND CATEGORY in ('Контроль устройств','Контроль печати','Самозащита','Вход/выход','Разграничение доступа к устройствам','Аутентификация и идентификация','События модулей ядра')"
$adapter = New-Object System.Data.sqlclient.sqlDataAdapter $SqlCmd
$dataset = New-Object System.Data.DataSet
$adapter.Fill($dataSet)
$allRows = $dataSet.tables.rows
foreach($row in $allRows) {
$eventid = $row.ID
$logtime = ($row.TIMEWRITTEN).ToString("yyyy-MM-dd HH:mm:dd")
$station = $row.STATION
$category = $row.CATEGORY
$eventclassid = $row.EVENTID
$eventmessage = $row.EVENTMESSAGE -replace "`n"," " -replace "`r"," " -replace "\\","_"
$eventclass = $row.TYPE
$JSONDoc = @"
{
"sourcetype":"SNS_LOG",
"event":{
"LogTime":"$logtime",
"EventId":"$eventid",
"Station":"$station",
"Category":"$category",
"EventClass":"$eventclass",
"EventClassID":"$eventclassid",
"EventMessage":"$eventmessage"}
}
"@
Invoke-WebRequest -uri "https://x.x.x.x:8088/services/collector" -Headers @{"Authorization"="Splunk xxxxxxxx-5469-498d-xxxxx-a6d493ee138a"} -Method POST -Body $JSONDoc -ContentType "application/json;charset=utf-8"
}
$SqlConnection.close()
В скрипте есть несколько операторов replace для корректной отправки события в коллектор. Может можно обойтись без нех, не копал ещё) На сервере Splunk получите красивые JSON-события для дальнейшего анализа.
Комментариев нет:
Отправить комментарий