Настройка зеркала обновлений 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:
Сервер
Вытащите из папки с установленным 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 по обновлениям, форум поддержки.