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