Remove-Item "$env:userprofile\AppData\Roaming\Microsoft\MMC\Kaspersky Security Center*" -Confirm:$false -Force
https://support.kaspersky.ru/10665
===== Установка агента через GPO =====
mst-файл создать нельзя, поэтому через батник:
"\\ksc\KLSHARE\Packages\NetAgent_14.2.0.26967\exec\Kaspersky Network Agent.msi" /qn /l*vx %TEMP%\nag_inst.log SERVERADDRESS="ksc.example.com" DONT_USE_ANSWER_FILE=1 PRIVACYPOLICY=1 EULA=1 LAUNCHPROGRAM=1
https://support.kaspersky.com/KSC/14/ru-RU/92478.htm
===== Парсер отчёта xls из KSC =====
Приходится задействовать установленный Excel для конвертации в человеческий формат, т.к. отчёт в старом формате .xls.
$path = "E:\temp\ksc-reports"
$xls = dir "$path\*.xls" |sort CreationTime |select -last 1
# проверка, свежая ли выгрузка
if ($xls.CreationTime -lt (get-date).AddDays(-1)) {
Send-MailMessage -SmtpServer mail.domain.ru -From "support@domain.ru" -To "user@domain.ru" -Subject "Kaspersky Security Center - выгрузка отчёта старше 1 дня" -Body "
Последняя выгрузка была $(($xls.creationtime).ToString("dd.MM.yyyy в HH:mm"))
Путь: $($xls.fullname)
" -BodyAsHtml -Encoding UTF8
Exit
}
else {
& "C:\Program Files (x86)\microsoft office\Office16\excelcnv.exe" -oice "$xls" "$($xls.FullName -replace '.xls','.xlsx')"
gci "$path" |? CreationTime -lt (Get-Date).AddDays(-14) |remove-item -Force -Confirm:$false # cleanup
}
$xlsx = dir "$path\*.xlsx" |sort CreationTime |select -last 1
$period = (Import-Excel $xlsx -WorksheetName Summary -StartRow 4 -EndRow 4 -NoHeader).p1
$summary = Import-Excel $xlsx -WorksheetName Summary -StartRow 7
$details = Import-Excel $xlsx -WorksheetName Details
# Общее количество экземпляров
$cobj = ($summary |select -expand 'Опасных объектов' |measure -sum).sum
$cfls = ($summary.'Различных файлов' |measure -sum).sum
$cdev = ($summary.'Опасных устройств' |measure -sum).sum
# Категории вредоносных объектов
$callincidents = ($details).Count
$cmailincidents = ($details.'Путь к файлу' |? {
$_ -match 'outlook' -or
$_ -match '.pst' -or
$_ -match 'from:'
}).Count
$ccacheincidents = ($details.'Путь к файлу' |? {
$_ -match 'Temporary Internet Files' -or
$_ -match 'Firefox' -or
$_ -match 'Chrome' -or
$_ -match 'browser'
}).Count
$cfileincidents = ($details.'Путь к файлу' |? {
$_ -notmatch 'outlook' -and
$_ -notmatch '.pst' -and
$_ -notmatch 'from:' -and
$_ -notmatch 'Temporary Internet Files' -and
$_ -notmatch 'Firefox' -and
$_ -notmatch 'Chrome' -and
$_ -notmatch 'browser'
}).Count
# Уникальных значений
$udev = ($details.'Устройство' |sort -Unique).count
$uobj = ($details.'Обнаруженный объект' |sort -Unique).count
$uobjtype = ($details.'Тип объекта' |sort -Unique).count
$uuser = ($details.'Учетная запись' |sort -Unique).count
$ucomp = ($details.'Компонент' |sort -Unique).count
$report = "$period
Антивирус на ПК пользователей выявил
$cobj опасных объектов
$cfls различных файлов
$cdev опасных устройств
Всего инцидентов $callincidents, из которых
$cmailincidents заражённых почтовых сообщений (в т. ч. в архивных почтовых файлах)
$cfileincidents вредоносных файлов
$ccacheincidents вредоносных файлов из интернет-кэша
Подверглись действию вредоносных программ
$udev компьютеров
$uuser учётных записей
Обнаружено вредоносных программ
$uobj уникальных видов
$uobjtype уникальных типов
$ucomp компонентов защиты задействовано
Отчёт сформирован $((get-date).ToString()) скриптом $($PSScriptRoot + '\' + $MyInvocation.MyCommand) на компьютере $($env:COMPUTERNAME).
"
Send-MailMessage -SmtpServer mail.domain.ru -From "support@domain.ru" -To "user@domain.ru" -Subject "Kaspersky Security Center - отчёт об угрозах" -Body "$report" -Encoding UTF8 -BodyAsHtml
++++ Старый вариант - прикручен костыль отправки из локального Outlook, т.к. сервер не имел возможности отправки просто через релей. |
$path = "D:\share\ksc-reports\"
$xls = dir "$path\*.xls" |sort CreationTime |select -last 1
$xlsbn = $xls.BaseName
$csvsummary = "$path" + "$xlsbn" + "_Summary.csv"
$csvdetails = "$path" + "$xlsbn" + "_Details.csv"
# cleanup old reports first
gci $path |? CreationTime -lt (Get-Date).AddDays(-14) |remove-item -Confirm:$false
Function ExportWSToCSV ($excelFileName, $csvLoc) {
$excelFile = "$path" + $excelFileName + ".xls"
$E = New-Object -ComObject Excel.Application
$E.Visible = $false
$E.DisplayAlerts = $false
$wb = $E.Workbooks.Open($excelFile)
foreach ($ws in $wb.Worksheets)
{
$n = $excelFileName + "_" + $ws.Name
$ws.SaveAs($csvLoc + $n + ".csv", 6)
}
$E.Quit()
}
ExportWSToCSV -excelFileName "$xlsbn" -csvLoc "$path"
$period = (gc "$csvsummary" |select-string 'Период') -replace ','
$summary = (gc "$csvsummary" |select-string 'Обнаруженный объект' -Context 0, 65536) -replace '>' |ConvertFrom-Csv
$details = gc "$csvdetails" |ConvertFrom-Csv
# Overall
$cobj = $summary |select -expand 'Опасных объектов' |measure -sum |select -expand sum
$cfls = $summary |select -expand 'Различных файлов' |measure -sum |select -expand sum
$cdev = $summary |select -expand 'Опасных устройств' |measure -sum |select -expand sum
# Malware categories
$callincidents = ($details).Count
$cmailincidents = ($details |select -expand 'Путь к файлу' |? {
$_ -match 'outlook' -or
$_ -match '.pst' -or
$_ -match 'from:'
}).Count
$ccacheincidents = ($details |select -expand 'Путь к файлу' |? {
$_ -match 'Temporary Internet Files' -or
$_ -match 'Firefox' -or
$_ -match 'Chrome' -or
$_ -match 'browser'
}).Count
$cfileincidents = ($details |select -expand 'Путь к файлу' |? {
$_ -notmatch 'outlook' -and
$_ -notmatch '.pst' -and
$_ -notmatch 'from:' -and
$_ -notmatch 'Temporary Internet Files' -and
$_ -notmatch 'Firefox' -and
$_ -notmatch 'Chrome' -and
$_ -notmatch 'browser'
}).Count
# Unique values
$udev = ($details |select -expand 'Устройство' |sort -Unique).count
$uobj = ($details |select -expand 'Обнаруженный объект' |sort -Unique).count
$uobjtype = ($details |select -expand 'Тип объекта' |sort -Unique).count
$uuser = ($details |select -expand 'Учетная запись' |sort -Unique).count
$ucomp = ($details |select -expand 'Компонент' |sort -Unique).count
$mailbody = "$period
Антивирус на ПК пользователей выявил
$cobj опасных объектов
$cfls различных файлов
$cdev опасных устройств
Всего инцидентов $callincidents, из которых
$cmailincidents заражённых почтовых сообщений (в т. ч. в архивных почтовых файлах)
$cfileincidents вредоносных файлов
$ccacheincidents вредоносных файлов из интернет-кэша
Подверглись действию вредоносных программ
$udev компьютеров
$uuser учётных записей
Обнаружено вредоносных программ
$uobj уникальных видов и
$uobjtype уникальных типов
$ucomp компонентов защиты задействовано"
$olFolderDrafts = 16
$ol = New-Object -comObject Outlook.Application
$ns = $ol.GetNameSpace("MAPI")
# call the save method yo dave the email in the drafts folder
$mail = $ol.CreateItem(0)
$null = $Mail.Recipients.Add("123@domain.ru;456@domain.ru")
$Mail.Subject = "Отчёт об угрозах Kaspersky Security Center"
$Mail.Body = " $mailbody "
$Mail.save()
# get it back from drafts and update the body
$drafts = $ns.GetDefaultFolder($olFolderDrafts)
$draft = $drafts.Items | where {$_.subject -eq 'Отчёт об угрозах Kaspersky Security Center'}
# $draft.body += "`n foo bar"
$draft.save()
# send the message
$draft.Send()
https://stackoverflow.com/questions/1453723/create-outlook-email-draft-using-powershell
++++
===== Статистика из Kaspersky Security for Microsoft Exchange Servers =====
# https://help.kaspersky.com/ks4exchange/9.5/ru-ru/116182.htm
Import-Module 'C:\Program Files (x86)\Kaspersky Lab\Kaspersky Security for Microsoft Exchange Servers\Kse.Powershell.dll' -DisableNameChecking
$lastmonday = ((get-date).adddays(-$(((get-date).DayOfWeek.value__)+6))).Date
$lastsunday = ($lastmonday.AddDays(7)).AddSeconds(-1)
$srv = 'edge.domain.ru'
$report = "Kaspersky for Exchange - статистика c $($lastmonday.ToString()) по $($lastsunday.ToString())
"
# Просмотр статистики работы модулей Антивируса и фильтрации вложений
$avstat = Get-KSEAVServerStatistics -AntivirusRole Transport -From $lastmonday -to $lastsunday -ServerFqdn $srv
$report += $avstat |select @{n='Всего объектов проверено';e={$_.TotalCheckedObjects}},
@{n='Чистых объектов';e={$_.CleanObjects}},
@{n='Заражено';e={$_.InfectedObjects}},
@{n='Вылечено';e={$_.DisinfectedObjects}},
@{n='Подозрительных объектов';e={$_.SuspiciousObjects}},
@{n='Отфильтровано вложений';e={$_.AttachmentFilteredObjects}},
@{n='Пропущено из-за ошибки лицензии';e={$_.SkippedByLicenseErrorObjects}},
@{n='Пропущено по тайм-ауту';e={$_.SkippedByTimeoutObjects}},
@{n='Пропущено из-за ошибок обработки';e={$_.SkippedByProcessingErrorObjects}} |
ConvertTo-Html -PreContent 'Статистика работы модулей антивируса и фильтрации вложений
' -Fragment -As List
# Просмотр статистики работы модуля Анти-Спам
$spamstat = Get-KSEASServerStatistics -From $lastmonday -to $lastsunday -ServerFqdn $srv
$report += $spamstat |select @{n='Всего сообщений проверено';e={$_.TotalCheckedMessages}},
@{n='Чистых сообщений';e={$_.CleanMessages}},
@{n='Спам';e={$_.SpamMessages}},
@{n='Вероятный спам';e={$_.ProbableSpamMessages}},
@{n='Формальное оповещение';e={$_.FormalMessages}},
@{n='В чёрном списке';e={$_.BlackListedMessages}},
@{n='Доверенные';e={$_.TrustedMessages}},
@{n='Массовые рассылки';e={$_.MassMailMessages}},
@{n='Фишинг';e={$_.PhishingMessages}},
@{n='Непроверенных';e={$_.NotCheckedMessages}} |
ConvertTo-Html -PreContent 'Статистика работы модуля антиспама
' -Fragment -As List
$report += "Отчёт сформирован $((get-date).ToString()) скриптом $($PSScriptRoot + '\' + $MyInvocation.MyCommand) на компьютере $($env:COMPUTERNAME).
"
Send-MailMessage -SmtpServer mail.domain.ru -From "support@domain.ru" -To "user1@domain.ru","user2@domain.ru","user3@domain.ru" -Subject "Kaspersky for Exchange - статистика за прошлую неделю" -Body "$report" -Encoding UTF8 -bodyashtml
# Просмотр состояния защиты сервера Microsoft Exchange
$status = Get-KSEServerStatus -ServerFqdn $srv
$licexp = (($status.LicenseExpirationDate -as [datetime]) - (get-date)).days
if ($licexp -lt 45) {
Send-MailMessage -SmtpServer mail.domain.ru -From "support@domain.ru" -To "user1@domain.ru","user2@domain.ru","user3@domain.ru" -Subject "Kaspersky for Exchange - лицензия истекает" -Body "
Лицензия Kaspersky Security для Microsoft Exchange Servers на сервере $srv закончится менее чем через 45 дней.
Дата истечения лицензии: $(($status.LicenseExpirationDate).tostring())
" -Encoding UTF8 -bodyashtml
}
===== Решение проблем =====
==== Большой объём папки bases\cache ====
Исправление ожидается в рамках патча B для Kaspersky Security Center 11.\\
На текущий момент существует обходное решение:
- Остановите службу Сервера администрирования (kladminserver), убедитесь, что процесс klfc.exe не запущен
- Удалите в рассматриваемом каталоге файлы по маске cat_engine*
- Запустите службу Сервера администрирования (kladminserver).
https://community.kaspersky.com/produkty-kaspersky-dlya-biznesa-31/rost-papki-cache-posle-perehoda-na-ksc-11-3232
Stop-Service kladminserver -Confirm:$false
Stop-Process klfc.exe -Force -Confirm:$false
del "C:\ProgramData\KasperskyLab\adminkit\bases\cache\cat_engine*"
Start-Service kladminserver