среда, 26 октября 2022 г.

[Fast] Подключение Secret Net Studio 8.5 к Splunk

 Приветствую, уважаемый читатель!

Сегодня постараюсь быстро рассказать - как можно (один из способов) подключить централизованные журналы СЗИ НСД 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-события для дальнейшего анализа.




Комментариев нет:

Отправить комментарий