Централизованный аудит печати — Описание задачи и решения


 

Цикл статей:

1.       Описание задачи и решения

2.       Сбор событий аудита

3.       Экспорт событий аудита в файл

4.       Загрузка в базу данных

5.       Создание отчёта

6.       Размещение отчёта на Sharepoint

7.       Дополнение 1: Powershell – системные журналы и особенности фильтров по времени

8.       Дополнение 2: Powershell – производительность работы с системными журналами

Читать далее

Реклама

Powershell – системные журналы и особенности фильтров по времени


Какое время и в каком формате использовать, если вы хотите получить события из системного журнала за определенное время? Есть небольшой сюрприз…

Читать далее

Powershell – производительность работы с системными журналами


На днях попытался работать с системными журналами из Powershell с помощью командлета Get-WinEvent. На больших журналах работает медленно. Всё относительно конечно. Средняя скорость обработки 200 событий в секунду: для журнала с несколькими сотнями тысяч записей время выполнения командлета состовляет уже десятки минут. При этом полностью занято одно ядро системы.

Такое время обработки и такое потребление процессорного времени меня не устроило, и я решил поискать другой путь, не погружаясь дебри низкоуровневых API.

Оказывается хорошей производительностью обладает утилита wevtutil.exe

Она не только может настраивать журналы, но и экспортировать содержимое в отдельный файл и даже выполнять запросы с выводом результатов в текстовом виде или формате XML.

Как и любую утилиту, её можно вызвать из Powershell и обрабатывать её вывод в конвейере.

Правда обнаружилась проблема с локализацией строковых значений (если некоторые атрибуты события на русском), но это решаемо: например, можно записать вывод утилиты wevtutil в файл командлетом Out-File с параметром Encoding и значением OEM.

Обновления для Microsoft Visual C++ Redistributable Package


Логическая бомба с установкой обновлений безопасности. На WSUS сервере выбраны продукты, которые используются: система, Office и т.п. Обновления безопасности для них ставятся везде, где нужно.

Выполняем проверку сканером MBSA, и он показывает необходимость установки обновлений безопасности для Microsoft Visual C++ Redistributable Package. В WSUS эти обновления не приезжают, потому что продукты Visual Studio не одобрены! – нет такого продукта у пользователей.

Импортировал в WSUS обновления:

Kb 973923 Microsoft Visual C++ 2005 Service Pack 1 Redistributable Package

Kb 2538243 Microsoft Visual C++ 2008 SP1 Redistributable Package

Kb 2565063 Microsoft Visual C++ 2010 Service Pack 1

В результате выяснилось, что пакеты очень популярны и должны быть установлены на практически все серверы и рабочие станции.

Вот такая интересная засада может случится – пользуйтесь почаще Microsoft Baseline Security Analyzer.

Проверка состояния Windows Advanced Firewall


Сетевые карты RTL часто становятся проблемой в доменной сети: драйвер рапортует системе, что сеть доступна, хотя она ещё не поднялась, и система, продолжая загрузку, не находит домен-контроллер и не может применить политики. Это давно известная ситуация. Но недавно обнаружился ещё один побочный эффект этой проблемы.

Если компьютер первый раз включили в некоторую сеть, то система должна эту сеть классифицировать по NLA. Но т.к. сеть недоступна в момент загрузки, то сеть будет отнесена категории Public или Private, но никак не к Domain. И если на системе включен фаервол, то примениться совсем не доменный профиль! В результате компьютер оказывается очень хорошо «защищен» от администраторов J

К сведению: Network Location Awareness (NLA) and how it relates to Windows Firewall Profiles

Чтобы хоть как-то оценить масштабы бедствия, решили использовать Compliance в SCCM 2012 R2. В него зарядили следующий VBScript скрипт (переработанный пример с MSDN):

option explicit

Dim CurrentProfiles

Dim LowerBound

Dim UpperBound

Dim iterate

Dim excludedinterfacesarray

Dim Ret

‘ Profile Type

Const NET_FW_PROFILE2_DOMAIN = 1

Const NET_FW_PROFILE2_PRIVATE = 2

Const NET_FW_PROFILE2_PUBLIC = 4

‘ Action

Const NET_FW_ACTION_BLOCK = 0

Const NET_FW_ACTION_ALLOW = 1

‘ Create the FwPolicy2 object.

Dim fwPolicy2

Set fwPolicy2 = CreateObject(«HNetCfg.FwPolicy2»)

CurrentProfiles = fwPolicy2.CurrentProfileTypes

‘// The returned ‘CurrentProfiles’ bitmask can

‘// have more than 1 bit set if multiple profiles

‘// are active or current at the same time

Ret = 0

if ( CurrentProfiles AND NET_FW_PROFILE2_DOMAIN ) then

if fwPolicy2.FirewallEnabled(NET_FW_PROFILE2_DOMAIN) = TRUE then

‘// WScript.Echo(«Firewall is ON on domain profile.»)

Ret = 1

end if

end if

WScript.Echo(1)

Скрипт оказался вдвойне полезен, т.к. он вываливается в ошибку, если сервис Windows Firewall выключен – это хорошо видно отдельной строкой в отчёте Compliance. Таким образом была отловлена пачка компьютеров, у которых кто-то умудрился выключить фаервол.

Group policy – настройка несистемных сервисов


В некоторых случая установка ПО сопровождается установкой дополнительного сервиса, который может оказаться совершенно не нужным. Такой сервис не только потребляет ресурсы, но может активно мешать пользователям. Например, установка Acrobat Reader тащит за собой сервис AdobeARMService. Если вы устанавливаете и обновляете ПО централизованно, а пользователи лишены административных прав, то постоянные напоминания об установке обновлений, которые порождает этот процесс, будут только раздражать пользователей.

Читать далее

Удаление профиля


При настройке терминальных серверов часто надо бывает проверять конфигурацию профилей и поправлять настройки. Чтобы полноценно проверить создание профиля с новыми настройками, нужно удалять существующий профиль. В версиях до Windows Server 2008 достаточно было удалить папку с профилем. В более старших версиях поведение изменено: если система не может найти папку с профилем пользователя, который ранее уже регистрировался в системе, то будет создан временный профиль. Чтобы система «забыла» пользователя, нужно удалить ветку реестра как описано в статье «How to Delete Locally Cached Profiles in Terminal Server» плюс саму папку профиля, чтобы не оставался мусор.

Когда надоедает делать это вручную, то хочется написать скрипт. Хорошая новость в том, что такой скрипт уже есть в Галлерее Delete user profiles over multiple servers v2. При необходимости его легко можно доработать под свои нужды, например добавить отображение даты последнего использования профиля, его размер.