Перенос DrWeb ES 6.0 с Windows на Debian со сменой типа БД

Ноябрь 29th, 2011 Рубрики: HOWTO, Linux, PostgreSQL

Доброго времени, уважаемые читатели блога! Сегодня публикую небольшое HOWTO для тех кто внедряет OpenSource :)  Встала задача перенести сервер DrWeb EntSuite 6 с Windows 2003 на Linux. Выкладываю плод своих испытаний:

Исходные данные для переноса сервера:

Старый сервер: 10.0.0.1 на Windows 2003 + IntDB в качестве базы для сервера DrWeb
Новый сервер: 10.0.0.6 на Debian Squeeze Wheezy (по ряду причин пришлось использовать тестовую версию дистрибутива) + PostgreSQL в качестве базы для сервера DrWeb

Рекомендуется для нового сервера создать в DNS запись CNAME, чтобы при следующих переездах просто перенаправить клиентов на новый сервер, пересоздав новую CNAME.

Перенос сервера DrWeb:

1. Установка Dr.Web Enterprise Security Suite на целевой сервер (Debian Wheezy)

1.1. Скачиваем необходимую версию.
1.2. Переносим скачанный файл на сервер и устанавливаем:

dpkg -i drweb-esuite-server-602-201109160-unix-linux-debian-squeeze-i686.deb

Установка сервера DrWeb на Linux описана тут. Кроме пакета сервера на debian мне пришлось вручную доустановить пакеты libcurl3, librtmp0 и libssh2-1. А так же установка завершилась ошибкой:

...
touch: невозможно выполнить touch для «/var/lock/subsys/drwcs»: Нет такого файла или каталога
invoke-rc.d: initscript drwcsd, action "start" failed.

Текущее состояние: 0 сломано [-1].
postgre ~ # # создадим недостающий каталог:
postgre ~ # mkdir /var/lock/subsys/
postgre ~ # service drwcsd start

1.3. Проверить работоспособность сервера и состояние репозитория

Состояние обновления DrWeb

1.4. Остановите новый ES-сервер строкой

/etc/init.d/drwcsd stop

или командой из веб-интерфейса.

2. Установка PostgreSQL на Debian

2.1. Устанавливаем пакет postgresql-9.1

В Debian squeeze данный пакет можно установить из бэкпортов. После установки пакетов постгреса произойдет запуск службы СУБД. В процессе первого запуска СУБД скрипт выполнил команду inidb, которая создаст все необходимое и в том числе конфигурационные файлы в папке /var/lib/pgsql. Будут инициализированы все основные настройки и встроенные базы данных.

2.2. Настраиваем PostgreSQL
2.2.1. Разрешаем доступ к СУБД из сети

По умолчанию, постгрес слушает только локалхост, чтобы заставить его слушать внешний интерфейс (если вам это действительно нужно), нужно на время установки в /etc/postgresql/9.1/main/postgresql.conf изменить строку:

#listen_addresses = ‘localhost’
listen_addresses = ‘*’
# это заставит СУБД слушать все интерфейсы
# так же нужно раскомментировать строку:
password_encryption = on

а так же для доступа из локальной сети к СУБД нужно в /etc/postgresql/9.1/main/pg_hba.conf создать строку в соответствующем разделе:

host    all     all     10.0.0.222/32    md5

, где значение host определяет доступ по TCP/IP, первый all разрешает подключаться ко ВСЕМ базам данных, второй all задает доступ для ВСЕХ любого пользователей, 10.0.0.20/32 задает IP и максу компьютера с которого разрешен доступ, md5 задает доступ по хэшу пароля, а не по открытому тексту.

2.2.2. Настраиваем окружение PostgreSQL

Cоздаем пароль для администратора постгреса (для пользователя UNIX, под которым работает служба):

passwd postgres
Введите новый пароль UNIX:<ВАШ СЕКРЕТНЫЙ ПАРОЛЬ>
Повторите ввод нового пароля UNIX: <ВАШ СЕКРЕТНЫЙ ПАРОЛЬ>
passwd: пароль успешно обновлён

После этого, необходимо рестарт СУБД:

postgre ~ # service postgresql restart
Restarting PostgreSQL 9.1 database server: main.

Создать пароль для внутреннего пользователя СУБД:

postgre ~ # # сменим пользователя, передем в консоль PgSQL командой psql и зададим пароль
postgre ~ # su -l postgres
postgres@postgre ~ $ psql
psql (9.1.1)
Type "help" for help.

postgres=# alter user postgres with password 'ваш_пароль';
ALTER ROLE
postgres=# \q

2.2.3. Создаем базы данных для севера DrWeb

Чтобы хранить базу антивируса в отдельном каталоге (куда, к стати, можно примонтировать отдельный раздел), необходимо создать для базы каталог и назначить необходимые права (чтобы СУБД имела доступ в этот каталог):

postgre ~ # mkdir /var/drwebdb
postgre ~ # chown postgres:postgres /var/drwebdb
postgre ~ # chmod 0775 /var/drwebdb/
postgre ~ # ls -lda /var/dr*
drwxrwxr-x 2 postgres postgres 4096 Ноя 28 12:00 /var/drwebdb

Далее подготовим СУБД к работе с сервером DrWeb. Для этого залогинемся под администратором базы данных и выполним указанные скрипты:

root@postgre:~# su -l postgres
postgres@postgre ~ $ # создаем пользователя drwcs с паролем drwcs и минимумом прав. Под этим пользователем сервер DrwebES будет подключаться к серверу PostgreSQL:
postgres@postgre ~ $ psql --dbname postgres --username postgres --command "CREATE ROLE drwcs WITH NOSUPERUSER NOCREATEDB NOCREATEROLE NOINHERIT LOGIN ENCRYPTED PASSWORD 'drwcs';"
CREATE ROLE
postgres@postgre ~ $ # создаем табличное пространство drwebes_ts, которое будет располагаться в каталоге /var/drwebdb.
postgres@postgre ~ $ # Именно в нем, в дальнейшем, будет создана база DrwebES:
postgres@postgre ~ $ psql --dbname postgres --username postgres --command "CREATE TABLESPACE drwebes_ts OWNER postgres LOCATION '/var/drwebdb';"
CREATE TABLESPACE
postgres@postgre ~ $ # команда собственно создает базу данных для DrwebES. База данных будет расположена в табличном пространстве drwebes_ts.
postgres@postgre ~ $ # Т.е. физически она будет размещаться в каталоге /var/drwebdb.
postgres@postgre ~ $ psql --dbname postgres --username postgres --command "CREATE DATABASE drwebes OWNER postgres TABLESPACE drwebes_ts;"
CREATE DATABASE
postgres@postgre ~ $ # создает схему drwcs в базе данных drwebes. Обратите внимание, что мы подключаемся к базе drwebes (а не postgres), так как именно там мы хоти создать схему.
postgres@postgre ~ $ psql --dbname drwebes --username postgres --command "CREATE SCHEMA drwcs AUTHORIZATION drwcs;"
CREATE SCHEMA
postgres@postgre ~ $

Более подробно об этих командах написано тут. Эти проделанные действия я бы посоветовал проверить через pgAdmin (перед этим включив доступ к СУБД в pg_hba.conf и основном конфиге - описание как это сделать было выше). После выполнения указанных команд должна получиться следующая картина:

базы, созданные в PostgreSQL

3. Экспорт "рабочей" базы данных

3.1. Остановите службу старого ES-сервера командой из меню Пуск или веб-интерфейса. Убедитесь, что сервер остановился (дождаться сообщения об остановке сервера):

Сообщение об остановке сервера DrWEb

3.2. Уменьшение размера базы данных

Если база занимает много места (например моя весила на момент переезда порядка 23 Гб.), можно ее почистить от старых записей. Как это сделать описано тут. Перед очисткой желательно сделать копию базы!!! Кроме того, обязательно нужно почистить таблицу activity_data, ибо она отказывается импортироваться в базу с кодировкой UTF-8. Я сделал это по той же инструкции, за тем лишь исключением, что скрипт очистки имел следующий вид:

BEGIN;
DELETE FROM procerror WHERE errrecvtime <= 20111207000000000;
DELETE FROM activity_data WHERE createtime <= 20111207000000000;
COMMIT;
VACUUM;

Где дата 20111207000000000 должна быть меньше старее текущей. Вы, наверно, поинтересуетесь почему тут еще указана таблица procerror. Потому что в моей базе она занимала большую часть места, после выполнения скрипта размер базы изменился с 23 Гб до 80 Мб. (буду рад комментариям по модификации скрипта до более оптимального вида)

3.4. Проверка базы данных

Если обрезка базы производилась на копии, то скопируйте копию на место рабочей базы (C:\Program Files\DrWeb Enterprise Server\var\dbinternal.dbs).  Из меню "Пуск" - "Программы" (или "Все программы") - "DrWeb Enterprise Server" - "Управление сервером" ("Server control") дайте команду "Проверить базу данных" ("Verify DB"). После проверки базы должно появиться соответствующее сообщение:

проверка БД Drweb

3.5. Экспортировать базу данных на старом сервере:

C:\Documents and Settings\user>cd C:\Program Files\DrWeb Enterprise Server\bin
C:\Program Files\DrWeb Enterprise Server\bin>drwcsd.exe -home="C:\Program Files\
DrWeb Enterprise Server" -var-root="C:\Program Files\DrWeb Enterprise Server\var
" -verbosity=all exportdb D:\123\esbase.es

После выполнения данной команды, в каталоге  D:\123\ будет лежать файл esbase.es с экспортированной базой.

4. Перенос настроек старого сервера на новый

После того, как проверка базы сообщит об отсутствии повреждений и база экспортируется, скопируйте в произвольный каталог на новом сервере следующие файлы со старого ES-сервера:
- открытый криптографический ключ ..\installer\drwcsd.pub
- закрытый криптографический ключ ..\etc\drwcsd.pri
- конфигурационный файл ..\etc\drwcsd.conf
- лицензионный ключевой файл ..\etc\enterprise.key
- файл сертификата ..\etc\certificate.pem
- файл внутренней базы данных ..\var\dbinternal.dbs(в нашем случае - экспортированную базу)

На новом сервере запишите скопированные в п. 4 файлы в следующие каталоги:
- drwcsd.pub в /opt/drwcs/Installer/
- dbinternal.dbs (esbase.es) в /var/opt/drwcs/
- certificate.pem, drwcsd.pri, drwcsd.conf и enterprise.key в /var/opt/drwcs/etc
заменив одноимённые файлы, созданные при установке ES-сервера из дистрибутива.

Задайте перенесённым файлам те же права и владельца, которые были заданы при установке ES-сервера.

postgre ~ # ls -la /opt/drwcs/Installer/
итого 3132
drwxr-xr-x 2 root  root     4096 Ноя 21 18:36 .
drwxr-xr-x 8 root  root     4096 Ноя 21 18:35 ..
-rw-r--r-- 1 drwcs drwcs     223 Ноя 21 18:36 drwcsd.pub
-rw-r--r-- 1 root  root  3192128 Сен 17 02:12 drwinst.exe
postgre ~ # ls -la /var/opt/drwcs/etc/
итого 280
drwxr-x--- 2 drwcs drwcs   4096 Ноя 21 18:36 .
drwxr-x--- 8 drwcs drwcs   4096 Ноя 21 18:36 ..
-r--r----- 1 drwcs drwcs   1629 Ноя 21 18:36 agent.key
-rw-r----- 1 drwcs drwcs    282 Сен 17 02:12 auth-ads.xml
-rw-r----- 1 drwcs drwcs   2351 Сен 17 02:12 auth-ldap.xml
-rw-r----- 1 drwcs drwcs    993 Ноя 21 18:36 certificate.pem
-rw-r----- 1 drwcs drwcs   1615 Сен 17 02:12 clean.sql
-rw-r----- 1 drwcs drwcs    689 Сен 17 02:12 db-export.sql
-rw-r----- 1 drwcs drwcs     69 Сен 17 02:12 download.conf
-rw-r----- 1 drwcs drwcs   5570 Сен 17 02:12 drwcsd.conf
-rw------- 1 drwcs drwcs    289 Ноя 21 18:36 drwcsd.pri
-rw-r----- 1 drwcs drwcs  15608 Сен 17 02:12 drweb32.ini
-r--r----- 1 drwcs drwcs   1475 Ноя 21 18:36 enterprise.key
-rw-r----- 1 drwcs drwcs 189146 Сен 17 02:12 init.sql
-rw-r----- 1 drwcs drwcs   9381 Сен 17 02:12 openssl.cnf
-rw-r----- 1 drwcs drwcs    891 Ноя 21 18:36 private-key.pem
-rw-r----- 1 drwcs drwcs   6017 Сен 17 02:12 webmin.conf

5. Настройка работы DrWeb ESS с СУБД PostgreSQL

В файле /var/opt/drwcs/etc/drwcsd.conf настройте  подключение к новой базе, согласно документации. В данном файле нас интересует раздел Database <DRIVER> from <PATH> using <PARAMETERS>, который определяет подключение к базе данных. <DRIVER> — наименование драйвера базы, <PATH> — путь, откуда грузить драйвер, <PARAMETERS> — параметры установления связи с сервером БД. Для нашего примера необходимо привести строчку к следующему виду:

DataBase "drwpgsql"
  from ""
  using "host=localhost port=5432 dbname=drwebes user=drwcs password=drwcs"

6. Инициализация новой базы данных DrWeb

Для инициализации новой базы данных необходимо выполнить следующую команду:

root@postgre:~# /etc/init.d/drwcsd initdb

После инициализации PgAdmin нам покажет такую картину (добавятся таблицы):

Базы Drweb в PostgreSQL

7. Импорт рабочей базы данных

Перед импортом файлу базы данных необходимо задать права и владельца - drwcs

root@postgre:~# mv /root/drweb/esbase.es /opt/drwcs/
root@postgre:~# chown drwcs:drwcs /opt/drwcs/esbase.es
root@postgre:~# /etc/init.d/drwcsd importdb /opt/drwcs/esbase.es
root@postgre:~# # после завершения импорта запускаем сервер:
root@postgre:~# /etc/init.d/drwcsd start
root@postgre:~# /etc/init.d/drwcsd status
Dr.Web Server is started

После завершения указанных команд, подключитесь к веб-интерфейсу сервера и проверьте, всё ли нормально работает и присутствуют ли станции со старого сервера в списке. В разделе "Администрирование" - "Состояние репозитория" убедитесь, что репозиторий в актуальном состоянии и нормально обновляется после замены файлов. При переносе некоторые параметры перенеслись не совсем корректно:

ошибки импорта

8. Перенаправление Агентов DrWeb на новый сервер

Запустите снова старый ES-сервер, откройте настройки агента для группы Everyone, задайте на вкладке "Сеть" новый адрес сервера и сохраните настройки. Если для каких-то агентов первичной является не группа Everyone, а другая, или заданы персональные настройки, то проделайте соответствующие эти действия для других первичных групп и агентов с персональными настройками.

9. Деинсталляция старого сервера

После того, как все агенты отключатся от старого сервера и подключатся к новому, старый сервер можно остановить и окончательно деинсталлировать.

10. траблешуттинг:

Если при импорте или настройке PostgreSQL или DrWeb возникли проблемы, то можно просмотреть лог /var/opt/drwcs/log/drwcsd.log или и /var/log/postgresql/postgresql-9.1-main.log. Например, у меня была ошибка:

20111121.190756.91 inf [ 4582  4582] main   [DbMgr] Importing database content from file "/root/drweb/esbase.es"
20111121.190756.91 FTL [ 4582  4582] main   [Server] Cannot import database because of
20111121.190756.91 FTL [ 4582  4582] main     import file "/root/drweb/esbase.es" is corrupted because of
20111121.190756.91 FTL [ 4582  4582] main     cannot open file "/root/drweb/esbase.es" because of
20111121.190756.91 FTL [ 4582  4582] main     Отказано в доступе (errno=13)

которая была из-за того что не было прав к файлу экспортированной базы.

С Уважением, Mc.Sim!


Другие материалы в категории PostgreSQL


Теги: , ,

2 комментария к “Перенос DrWeb ES 6.0 с Windows на Debian со сменой типа БД”

  1. Kyoshiro
    Февраль 14th, 2012 at 11:04
    1

    Как кстати в целом антивирус? Как ловит вирусы? Есть ли проблемы?

    Я пару лет назад пользовался корпоративной версией, был доволен, а начальник мой против него имеет предрассудки, т.к. когда он пришел в фирму тут стоял Dr. Web и Symantec после него нашел много чего. Но тогда еще пользователи с правами админа сидели.

    Сейчас размышляем какой антивирус прикупить. Я ратую за Dr. Web с той точки зрения, что под него не нужно выделять виндовый сервак, который тоже стоит денег. Symantec ставится только на винду, а пристыковывать его к чему-то еще не хочется (стараюсь по максимуму разделить сервисы друг от друга).

    • Февраль 14th, 2012 at 12:03
      2

      В целом — неплохо. За 5 лет пользования было только 2 случая, когда антивирь упустил заразу. Но когда были такие случаи — эту же заразу не обнаруживал ни kaspersky ни другие антивирусы из тестов вирустотала.
      Хороший плюс у этого антивируса — довольно низкая требовательность к ресурсам ПК.
      Хотя, последняя версия (6) этот плюс несколько пошатнула. Я начал задумываться о касперском.
      А так же у меня не получилось завести DrWeb для файловых серверов SAMBA и подключить его к серверу администрирования. Суппорт попросил собрать самбу из исходников — для эксперимента (я не стал на продакшене ставить эксперименты). Хотя в документации было явно указана совместимость с Debian 6. Уж очень много приседаний для коммерческого продукта. Поэтому от DrWeb для SAMBA пришлось отказаться.

Написать комментарий