Доктор Веб, от классического к современному

Настройка зеркала обновлений Dr.Web: проверенные шаманства

Когда в хозяйстве, где вас поставили админом, зоопарк операционных систем и установленных версий Dr.Web, когда безопасники хотят странного, а выход в интернет контролирует надёжный отечественный фаерволл фирмы Air Gap, настройка регулярных обновлений вирусных баз превращается в шаманство. Представляю свою подборку проверенных заклинаний.

Итак, современный Доктор умеет обновляться минимум четырьмя способами:

  • из интернета, если он есть;
  • от соседей по локальной сети, если хоть у одного из них есть свежие базы - это функция "Антивирусная сеть";
  • из сетевой или локальной папки, "зеркала";
  • через развёрнутый в организации "Центр Управления Dr.Web Enterprise Security Suite" - самый продвинутый способ.

Конечно, если это возможно, стоит завести себе Центр Управления (esuite, ESS), это бесплатно. Через него можно централизованно настраивать станции, собирать с них статистику сканирования, получать мгновенные уведомления на почту, когда кто-то из сотрудников притащил вирусняк, ну и раздавать обновления и свежие ключи. Беда только в том, что центру для нормальной работы желателен интернет, ведь надо где-то брать базы. И хотя его можно поместить за фаерволл, NAT, и кроме того существует даже специальный прокси-сервер DrWeb для связи ESS с другими сетями, т.е. решение максимально гибкое, но... Ниточка от рабочей станции к интернету, пусть и длинная, всё равно будет, и во многих организациях это неприемлемо. А если интернета нет, базы этому центру придётся носить флешкой от другого "центра".

Работу с центром управления разберём в следующий раз, а в этой заметке ограничимся созданием зеркал.

Зеркало обновлений для Dr.Web 12 (современного)

Сервер

"Сервером" для создания зеркала может выступать рядовая станция с установленным Dr.Web и доступом в интернет. Достаточно в настройках включить опцию копирования файлов баз в папку и не заморачиваться. Однако если у нас настоящий сервер, ставить туда Доктора только для получения баз - несколько избыточно.

Вместо этого возьмите с компьютера, где установлен Dr.Web, три файла:

  • Обновлятор drwupsrv.exe, лежит в C:\Program Files\Common Files\Doctor Web\Updater
  • Файл зон drwzones.xml из C:\ProgramData\Doctor Web\Updater\etc
  • Лицензионный ключ (*.key)

Перенесите их на сервер и запускайте с правами администратора примерно так:

drwupsrv.exe -c download -r "D:\DrWebUpdMirror\v12\bases" -p av-for-windows -s 90 --zones=drwzones.xml -l --log-dir="D:\DrWebUpdMirror\v12"

Здесь:

  • -c - действие: скачать (download) или установить (update) базы,
  • -r - куда качать,
  • -p - для какого продукта нужны базы:
    • av-for-windows - Антивирус Dr.Web,
    • drweb-security-space - Dr.Web Security Space,
  • -s - версия баз ("ревизия"), которая начиная с девятого доктора зафиксирована на "90"
  • -l - выводить в консоли, что происходит,
  • --log-dir= - папка, куда писать накопительный лог. Понадобится, если когда всё вдруг сломается. В 12-й версии добавили возможность ротации, но убрали опцию выбора имени --log-file=dwupdater.log - с этим параметром обновлятор запускаться откажется.
  • --key-dir - этот параметр может быть полезен, если ключ лежит отдельно от обновлятора.

Полный список параметров традиционно доступен по drwupsrv.exe -h (от имени администратора, если не работает) и в справке .

Автоматизация

Для автоматической закачки по расписанию добавьте задание в системный планировщик. Запускать задание следует от имени системной учётной записи NT AUTHORITY\SYSTEM. Проверьте, чтобы рабочая папка в задании была задана без кавычек.

Независимо от разрядности drwupsrv в зеркало загружаются оба набора, для 32- и 64-битных систем.

Клиент

Настроить доктора на обновление из сетевой папки тоже можно мышкой через интерфейс. Но если хочется автоматизации или чего-то нестандартного, то вот команда, выполняем с правами админа:

drwupsrv.exe -c update -l --log-dir="c:\temp"  --zone="file://\\192.168.1.2\DrWebUpdMirror_v12"

Смысл параметров такой же, как и раньше. Единственный нюанс, путь к зеркалу задаётся ключом -zone, а не --repo-dir, как может показаться интуитивно. Все прочие параметры, которые вы могли встречать в других руководствах, типа -xno или --type=update-revision, - избыточны.

Автоматизация

Пропишите задачу автоматического обновления в планировщике, предварительно удалив оттуда задачи, созданные самим доктором. Проверьте, чтобы рабочая папка в задании была задана без кавычек. Запускать задание следует от имени системной учётной записи NT AUTHORITY\SYSTEM.

Распространить настройки на парк машин удобно через групповые политики домена.

Зеркало обновлений для Dr.Web версии 6 (старого)

Классический шестой Доктор Кто до сих пор встречается на всяких терминалах с P-IV inside, застрявших в эпохе WinXP. Ну а пятый Доктор установится даже на ваш Win NT4.0 Server, и к этому динозаврику до сих пор (!) выходят свежие базы. Так выглядит настоящий Long-term support:

Но зачем, мистер Андерсен? А главное, нахрена?!

Вот так с помощью нехитрых приспособлений можно обезопасить свой сервер под Windows NT 4.0 server

Сервер

Вытащите из папки с установленным Dr.Web три файла:

  • drwebupw.exe (обновлятор)
  • ru-drweb.dwl (список серверов, куда подключаться)
  • agent.key (действующий ключ, имя любое)

Запускать так:

  "D:\DrWebUpdMirror\DrWebUpW.exe" /GO /UA /st /DIR:D:\DrWebUpdMirror\bases /rp+D:\DrWebUpdMirror\drwebupw.log /LNG:ru-drweb.dwl
  • /GO - запустить обновление немедленно;
  • /UA - сделать полное зеркало (Update All files);
  • /DIR:"D:\DrWebUpdMirror\bases" - папка, в которой будет создаваться или обновляться зеркало;
  • /LNG:ru-drweb.dwl - выдавать все сообщения на русском языке.
  • /st - не отображать окон
  • /rp+ - накопительный лог. Понадобится, если когда всё вдруг сломается.

Автоматизация

Для автоматической закачки по расписанию добавьте задание в системный планировщик. Запускать задание следует от имени системной учётной записи.

Клиент

Чтобы клиент подтянул обновления из указанной папки, запускать его следует так:

"C:\Program Files (x86)\DrWeb\DrWebUpW.exe" /go /st /qu /reg- /URL:D:\DrWebUpdMirror\bases /rp+drwebupw.log

В качестве альтернативы параметры (/go /st) можно прописать и непосредственно в drweb.ini, а каталог обновлений - в реестре здесь:

  HKEY_LOCAL_MACHINE\SOFTWARE\IDAVLab\DrWebUpdate\Settings\UpdateUrl

Перед редактированием отключите самозащиту антивируса.

Автоматизация

Чтобы распространить настройки на парк машин, пропишите задачу автоматического обновления в планировщике, предварительно удалив оттуда задачи, созданные самим доктором. Проверьте, чтобы рабочая папка была прописана без кавычек. Запускать задание следует от имени системной учётной записи.

Зеркало под Linux

В принципе, всё написанное выше прекрасно работает под Wine, например, 1.8. Ниже несколько примеров скриптов, чтобы они запускались, не забудьте установить им флаг "исполняемый" (x).

Для версии 12 и выше

Вот такой скрипт не только обновляет доктора, но и логирует свои запуски в last.log, проблемы - в wine.log, и подробности - в стандартный отчёт доктора. Папку с логами можно сделать доступной по сети, чтобы понимать, что происходит:

#!/bin/bash

cd /home/alex/.wine/drive_c/drweb/v12/
echo `date` >> last.log
wine drwupsrv.exe -c download -r "C:/drweb/v12/bases" -p av-for-windows -s 90 --zones=drwzones.xml -l --log-dir="C:/drweb/v12" > wine.log 2>&1

Если обновление не идёт, и понимания нет, дописать --verbosity=debug

Для версии 6 и выше

Тут немного интереснее. Обновлятор шестой версии - оконный, ему нужен экран и графическая подсистема (X), которой на сервере обычно нет. Нужно доустановить небольшой пакет Xvfb, задача которого - делать вид, что экран в системе есть. Скрипт будет таким:

#!/bin/bash

cd /home/alex/.wine/drive_c/drweb/v6x32/
echo `date` >> last.log
export DISPLAY=:99
if ! xset q &>/dev/null; then
    Xvfb -shmem -screen 0 800x600x16 :99&
fi
wine drwebupw.exe /GO /UA /ST /QU /DIR:C:\\drweb\\v6x32\\bases /rp\+C:\\drweb\\v6x32\\drwebupw.log /LNG:ru-drweb.dwl > wine.log 2>&1

Автоматизация

Запускать обновление по расписанию можно из /etc/crontab. В примере ниже это делается в ночь по воскресеньям и средам с 20:05 до 06:05

# m h dom mon dow user  command
5 20 * * sat,tue    alex    timeout 7200 /home/alex/.wine/drive_c/drweb/v6x32/update_now.sh 1>/dev/null 2>&1
5 22 * * sat,tue    alex    timeout 7200 /home/alex/.wine/drive_c/drweb/v6x64/update_now.sh 1>/dev/null 2>&1
5  0 * * sun,wed    alex    timeout 7200 /home/alex/.wine/drive_c/drweb/v9/update_now.sh 1>/dev/null 2>&1
5  2 * * sun,wed    alex    timeout 7200 /home/alex/.wine/drive_c/drweb/v11_av/update_now.sh 1>/dev/null 2>&1
5  4 * * sun,wed    alex    timeout 7200 /home/alex/.wine/drive_c/drweb/v11_ss/update_now.sh 1>/dev/null 2>&1
5  6 * * sun,wed    alex    killall -INT Xvfb 1>/dev/null 2>&1

# sun mon tue wed thu fri sat 
# jan feb mar apr may jun jul aug sep oct nov dec

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

Обновлятор может зависнуть, поэтому каждый запуск подстраховывается таймаутом в два часа (7200 мин). По окончанию уничтожаются ненужные более виртуальные мониторы, созданные Xvfb (killall). Ненужный текстовый выхлоп направляется в dev/null, потому что иначе крон не поленится отправить вам его почтой.

Чтобы клиенты могли забрать базы, откройте доступ к папке через samba в /etc/samba/smb.conf:

[global]

security = share
browseable = yes
read only = yes
guest ok = yes
map to guest = Bad User
usershare allow guests = yes

[drweb_av]
path = /....../bases/

Обязательно включить guest ok, потому что родной клиент доктора подключается анонимно, не передавая вообще никакого имени пользователя.

Другой линукс-сервер может тянуть у нас базы простым копированием:

cd /tmp/ > last.log 2>&1
echo `date` >> last.log 2>&1
smbget --recursive --nonprompt --update --guest --quiet smb://192.168.1.123/ >> last.log 2>&1
echo "Done." >> last.log 2>&1

Ошибки

Проблемы совместимости

Интересная особенность Докторов начиная с девятого - одинаковый номер версии баз, "90" . Здесь можно увидеть намёк на совместимость, но её нет. Доктор не откажется зашвырнуться базами из чужого зеркала, но после перезагрузки ему резко поплохеет. В большинстве случаев он просто не запустится, и хорошо, если получится удалить его ремувером. Галочка "обновлять только базы" уменьшит процент внезапно вышедших из строя машин, но, по-хорошему, заведите отдельные зеркала для каждой из используемых на предприятии версий (10, 11.0, 11.5, 12, -AV, -SS, etc)

  • Не пытайтесь с помощью зеркала обновить версию Доктора до следующей мажорной, например, с 11.0 до 11.5. Корректно сделать это можно только переустановкой либо с помощью центра управления, если он есть. Зеркалом можно обновлять базы и компоненты только в пределах версии.

  • Всегда используйте обновлятор той же версии, что и базы, которые он качает. Обновлятор 11.0 не сможет загружать обновления для 11.5.

  • Если обновлятор перестал качать базы, замените его на свежий, который прилетел с обновлениями.

  • Устанавливая Dr.Web используйте только свежие дистрибутивы с сайта, желательно сегодняшние. Свежие базы и старый доктор могут не подружиться.

Что значит, мажорная версия, и где проходит граница совместимости? Найдите у себя файлик drwzones.xml. Он определяет, что и откуда загружается:

<zones>

  <geo-update path="/xmlzone/release/1100/windows">
      <server name="geo drweb update" address="update.geo.drweb.com"/>
  </geo-update>

  <path value="/xmlzone/release/1100/windows"/>
  <protocol value="http"/>

  <zone name="zone1" address="update.drweb.com"/>
</zones>

Число 1100 - и есть номер версии. Зеркало обновляет базы и компоненты только в пределах этой версии. Если цифра отличается, нужно делать разные зеркала.

Неожиданно, у продуктов Антивирус Dr.Web и Dr.Web Security Space этот файл одинаковый. Совместимы ли их базы? Конечно нет)

Такая ситуация подталкивает к очевидно логичному решению: на предприятии должна использоваться единая версия Доктора. Волюнтаризм и инакомыслие следует пресекать административно-техническими методами. И по возможности поднимать esuite.

Ошибка: null credentials

Пустые данные о полномочиях, в доступе отказано. Проблема существует для всех версий Доктора. Клиент, тянущий обновления из зеркала по SMB, запускается под системной учётной записью и не передаёт имени пользователя. Поэтому сервер-зеркало должен предоставлять доступ к папке bases анонимным пользователям.

Решается через политики или в реестре, в ключе:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanmanServer\Parameters\NullSessionShares

Пропишите в столбик названия шар, например, bases. Если не работает, убедитесь, что тут ноль:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\restrictanonymous

Кроме того, дайте доступ на папку и все файлы внутри группам пользователей "АНОНИМНЫЙ ВХОД" и "Все" (регистр важен). Это делается в двух местах:

  • Свойства папки -> Доступ -> Расширенная настройка общего доступа - раз,
  • Свойства папки -> Безопасность - два.

Под Linux samba, как говорилось выше, достаточно включитьguest ok.

Прочие ошибки

  • Убедитесь, что в папке лежит рабочий ключ.
  • Перечитайте инструкцию ещё раз вдумчиво, должно помочь.
  • Обратитесь к системному администратору.

Ссылки: документация, FAQ по обновлениям, форум поддержки.

time%20travelling%20detected
Пасхалка detected