На Хабре неоднократно обсуждалось, что сторонние антивирусы — источник дополнительной угрозы. Они внедряются в ОС на уровне ядра и увеличивают поверхность атаки за счёт собственных уязвимостей. Некоторые специалисты говорят, что сторонние антивирусы лучше удалить. Хотя в некоторых случаях их использование всё-таки имеет смысл.

Но есть и хорошая новость. В состав ОС Windows входит стандартный антивирус Windows Defender. Это простая и добротная программа. Но для максимальной эффективности желательно её укрепить специальными настройками, которые по умолчанию отключены.

Windows Defender (известен также как Microsoft Defender и Защитник Windows) — простой, но качественный антивирус, встроенный в последние версии Windows. Там есть средства для контроля приложений, встроенный брэндмауэр (файрвол) и средства для защиты в реальном времени.

Настройки управления Windows Defender отличаются от GUI коммерческих антивирусов. Здесь множество опций. Хотя все они подробно описаны в документации, добраться до них не так легко.

По умолчанию Defender устанавливается со стандартными параметрами, которые не оптимальны. Небольшие изменения конфигурации позволяют значительно улучшить защиту домашних ПК.

Ряд ключевых настроек Windows Defender изменяется через локальную групповую политику. Их можно менять двумя способами:

  1. через редактор локальной групповой политики (Local Group Policy Editor, gpedit.msc), который по умолчанию доступен только в версиях Windows Pro/Enterprise;
  2. через консоль PowerShell.

В принципе, второй вариант проще и быстрее, хотя кому-то ближе по душе GUI. Ниже используются оба варианта.

Интервал обновления вирусных сигнатур


Запускаем PowerShell от имени администратора и набираем Get-MpPreference, чтобы посмотреть текущую конфигурацию Защитника:



Устанавливаем интервал обновления сигнатур на 1 час:

Set-MpPreference -SignatureUpdateInterval 1

Есть смысл также проверять новые сигнатуры перед каждым сканированием:

Set-MpPreference -CheckForSignaturesBeforeRunningScan 1

Другие параметры Set-MpPreference, которые можно изменить из консоли, указаны в документации.

Аналогичные настройки есть в редакторе локальной групповой политики. Если у вас версия Windows ниже Pro/Enterprise, то нужно сначала активировать редактор. Вот скрипт для Windows 10 и скрипт для Windows 11.

После активации редактора запускаем его:

gpedit.msc

Там несложно найти все те же настройки, которые указаны в консоли.

Включить MAPS


Microsoft Advanced Protection Service (MAPS) — улучшенная защита в реальном времени с подключением нескольких облачных функций и некоторых передовых технологий. Это бесплатная экспериментальная функция, которая выключена по умолчанию.

Подключение в консоли через Set-MpPreference по примеру выше:

  • CloudBlockLevel: уровень блокировки, рекомендуется 5 - High blocking level, хотя можно и более высокий.
  • CloudExtendedTimeout: таймаут, рекомендуется установить на 50 секунд.
  • MAPSReporting, отправка отчётов в Microsoft: 0 — отключена, 2 — расширенные отчёты (Advanced Membership), 1 — только базовые данные (Basic Membership).
  • SubmitSamplesConsent: отправка образцов в Microsoft: 0 — всегда спрашивать, 1 — автоматически отправлять безопасные образцы, 2 — никогда не отправлять, 3 — отправлять все образцы автоматически.

Включение MAPS в редакторе групповой политики:

Конфигурация компьютера → Административные шаблоны → Компоненты Windows → Антивирусная программа Microsoft Defender (Windows Defender) → MAPS

Здесь выбираем «Присоединиться к Microsoft MAPS» и уровень: базовый или расширенный (на скриншоте внизу).



В справке написано, что означают уровни участия.

Далее включаем опцию «Блокировка при первом появлении». Эта функция обеспечивает проверку устройств в реальном времени с помощью службы MAPS, прежде чем разрешить выполнение определённого содержимого или доступ к нему.



Также активируем функцию «Настроить локальное переопределение для отправки отчётов в Microsoft MAPS».

Переходим к следующему разделу с настройками MpEngine.

Конфигурация компьютера → Административные шаблоны → Компоненты Windows → Антивирусная программа Microsoft Defender (Windows Defender) → MpEngine

Опция «Выберите уровень защиты в облаке» (на КДПВ) — можно установить высокий или сверхвысокий уровень защиты, а ещё лучше уровень с нулевой терпимостью.

Опция «Настройте расширенную проверку в облаке» — это время, на которое антивирус может заблокировать подозрительный файл, чтобы проверить его в облаке. Рекомендуется таймаут 50.



Эти опции сильно укрепляют антивирусную защиту Windows Defender.

Примечание. Любое последующее обновление Windows Defender может отменить сделанные изменения и вернуть настройки по умолчанию. Поэтому лучше периодически проверять их.



Подробнее о сертификатах подписи кода на сайте GlobalSign

Комментарии (16)


  1. Delion
    22.03.2022 21:52
    +8

    Любое последующее обновление Windows Defender может отменить сделанные изменения и вернуть настройки по умолчанию. Поэтому лучше периодически проверять их.

    Аха. Тот самый случай, когда не ты настраиваешь программу, а программа – тебя.


    1. Mur81
      22.03.2022 22:15
      +2

      За полтора года использования на Windows Server 2019 не сталкивался с таким поведением ни разу. Интересно было бы увидеть пруфы.


      1. dartraiden
        23.03.2022 02:31
        +1

        Возможно, автор имел в виду Tamper Protection. Но этот механизм отменяет потенциально нежелательные изменения практически моментально.


  1. Mur81
    22.03.2022 22:28
    +8

    Статья конечно очень поверхностная. Лучше бы каждый почитал описание командлета Set-MpPreference и настроил под себя.
    К сожалению вынужден констатировать, что в этом описании необычайно много ошибок. Из того что вспомню сходу:
    1. Указывается, что время запланированных действий указывается в минутах от полуночи. На самом деле указывать надо в обычном формате (например «15:30»).
    2. В описании параметра RandomizeScheduleTaskTimes говориться, что рандомизация происходит в интервале ± 30 минут от запланированного времени. На самом деле окно рандомизации задаётся параметром SchedulerRandomizationTime, указывается в часах и отсчитывается от запланированного времени (только вперёд).
    3. Кое-где не правильно указаны дефолтные значения (которые к тому же скорее всего отличаются в разных версиях ОС).

    По итогу обнаружил, что более внятное описание параметров проще почерпнуть из описания шаблонов GPO (можно через gpedit.msc или вот на этом сайте).


  1. SAGSa
    23.03.2022 05:43

    Возможно будет полезно, напишу способ как проверить дату последнего обновления антивирусных баз. Я использую для этого свой модуль, проверить можно следующей командой

    Get-ADComputer -Filter * | Get-SystemInfo -Properties MseLastUpdateDate


  1. HardWrMan
    23.03.2022 07:05
    +1

    А как у этого Защитника дело с false-positive и исключениями?


  1. saipr
    23.03.2022 09:13
    -8

    В состав ОС Windows входит стандартный антивирус Windows Defender.

    А разве не ОС Windows главный распространитель вирусов?!
    А потом ОС Windows сказала же, что больше ни ногой к нам...


  1. Akr0n
    23.03.2022 12:13
    -1

    Больше интересует как при наличии нормального антивируса с актуальными базами полностью отключить работу антивируса от Microsoft? Постоянно с обновлениями закачиваются какие-то утилиты удаления вирусов и устанавливаются.


    1. Mur81
      23.03.2022 22:03
      +2

      1. Отключить Defender можно через GPO/gpedit.msc если это не домашняя редакция (или как она там нынче называются) винды. Хотя он теоретически должен отключаться сам при установке другого антивируса.
      2. Если Вы имеете в виду «Средство удаления вредоносных программ», то это прямого отношения к Defender'у не имеет. И оно не устанавливается, а просто запускается один раз.


      1. Akr0n
        24.03.2022 02:51

        На днях наблюдал как «Средство удаления вредоносных программ» ставилось несколько раз, такое впечатление, что это ежемесячное обновление.


        1. Mur81
          24.03.2022 13:49
          +1

          Оно и есть ежемесячное — каждый месяц скачивается новая версия со свежими базами, производит сканирование и всё, до следующего месяца больше оно себя не проявляет.
          Но если долго не ставить обновления, то я тоже замечал, что может скачаться сразу несколько версий. Т.е. эти «средства» не являются полностью кумулятивными, а видимо с каким-то шагом (но это не точно).
          Лог работы можно посмотреть вот в этом файле: %windir%\debug\mrt.log
          Там прекрасно видно как оно отрабатывает.


          1. Akr0n
            24.03.2022 17:06
            -1

            Так зачем оно нужно пользователю, у которого стоит нормальный платный антивирус с актуальными базами? Можно ли радикально отключить получение и установку этих утилит?


            1. Mur81
              24.03.2022 21:19
              +1

              «Зачем» это не ко мне вопрос.
              На всех версиях винды до десятки обновления можно ставить выборочно и проблем с этим нет. В десятке надо отключать автообновления (через GPO) и далее можно ставить обновления выборочно в ручную, через PowerShell или с помощью Windows Update MiniTool.
              Но я не понимаю ради чего вся эта возня? Ничего кроме экономии пары минут времени при очередном обновлении это не даст.


              1. Akr0n
                25.03.2022 02:35

                Экономия трафика, дискового пространства в кэшах, процессорного времени. Лично я терпеть не могу тратить ресурсы (любые) впустую.


  1. Sanctuary_s
    23.03.2022 19:55

    Я бы еще добавил от себя

    # Включить защиту сети в Microsoft Defender Exploit Guard
    Set-MpPreference -EnableNetworkProtection Enabled
    
    # Включить обнаружение потенциально нежелательных приложений и блокировать их
    Set-MpPreference -PUAProtection Enabled
    
    # Включить песочницу для Microsoft Defender (в Windows уже включено по умолчанию)
    setx /M MP_FORCE_USE_SANDBOX 1

    Для еще больших параноиков можно сделать так

    # Включить аудит событий, возникающих при создании или запуске процесса
    auditpol /set /subcategory:"{0CCE922B-69AE-11D9-BED3-505054503030}" /success:enable /failure:enable
    
    # Включать командную строку в событиях создания процесса
    # Для работы необходим аудит событий
    auditpol /set /subcategory:"{0CCE922B-69AE-11D9-BED3-505054503030}" /success:enable /failure:enable
    New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\Audit -Name ProcessCreationIncludeCmdLine_Enabled -PropertyType DWord -Value 1 -Force 
    
    # Создать настраиваемое представление "Создание процесса" в Просмотре событий для журналирования запускаемых процессов и их аргументов
    # Для работы необходимы аудит событий и командной строки в событиях создания процесса
    auditpol /set /subcategory:"{0CCE922B-69AE-11D9-BED3-505054503030}" /success:enable /failure:enable
    
    New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\Audit -Name ProcessCreationIncludeCmdLine_Enabled -PropertyType DWord -Value 1 -Force
    
    $XML = @"
    <ViewerConfig>
    	<QueryConfig>
    		<QueryParams>
    			<UserQuery />
    		</QueryParams>
    		<QueryNode>
    			<Name>"Process Creation"</Name>
    			<Description>"Process creation and command-line auditing events"</Description>
    			<QueryList>
    				<Query Id="0" Path="Security">
    					<Select Path="Security">*[System[(EventID=4688)]]</Select>
    				</Query>
    			</QueryList>
    		</QueryNode>
    	</QueryConfig>
    </ViewerConfig>
    "@
    
    if (-not (Test-Path -Path "$env:ProgramData\Microsoft\Event Viewer\Views"))
    {
    	New-Item -Path "$env:ProgramData\Microsoft\Event Viewer\Views" -ItemType Directory -Force
    }
    Set-Content -Path "$env:ProgramData\Microsoft\Event Viewer\Views\ProcessCreation.xml" -Value $XML -Encoding UTF8 -Force
    
    # Включить ведение журнала для всех модулей Windows PowerShell
    if (-not (Test-Path -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ModuleLogging\ModuleNames))
    {
    	New-Item -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ModuleLogging\ModuleNames -Force
    }
    New-ItemProperty -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ModuleLogging -Name EnableModuleLogging -PropertyType DWord -Value 1 -Force
    New-ItemProperty -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ModuleLogging\ModuleNames -Name * -PropertyType String -Value * -Force
          
    # Включить ведение журнала для всех вводимых сценариев PowerShell в журнале событий Windows PowerShell
    if (-not (Test-Path -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging))
    {
    	New-Item -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging -Force
    }
    New-ItemProperty -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging -Name EnableScriptBlockLogging -PropertyType DWord -Value 1 -Force
    

    Взял из моего PowerShell-модуля Sophia Script. И его графическая опенсорсная версия, SophiApp (скачать).

    Скрин


  1. dxq3
    24.03.2022 07:13

    Почему майкрософт сразу не установила такие настройки? Боятся шквалов звонков в суппорт и проклятий?)