Перенос DrWeb ES 6.0 с Windows на Debian со сменой типа БД
Доброго времени, уважаемые читатели блога! Сегодня публикую небольшое 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 описана
... 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. Проверить работоспособность сервера и состояние репозитория
1.4. Остановите новый ES-сервер строкой
/etc/init.d/drwcsd stop
или командой из веб-интерфейса.
2. Установка PostgreSQL на Debian
2.1. Устанавливаем пакет postgresql-9.1
В Debian squeeze данный пакет можно установить из
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 ~ $
Более подробно об этих командах написано
3. Экспорт "рабочей" базы данных
3.1. Остановите службу старого ES-сервера командой из меню Пуск или веб-интерфейса. Убедитесь, что сервер остановился (дождаться сообщения об остановке сервера):
3.2. Уменьшение размера базы данных
Если база занимает много места (например моя весила на момент переезда порядка 23 Гб.), можно ее почистить от старых записей. Как это сделать описано
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"). После проверки базы должно появиться соответствующее сообщение:
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 "drwpgsql" from "" using "host=localhost port=5432 dbname=drwebes user=drwcs password=drwcs"
6. Инициализация новой базы данных DrWeb
Для инициализации новой базы данных необходимо выполнить следующую команду:
root@postgre:~# /etc/init.d/drwcsd initdb
После инициализации PgAdmin нам покажет такую картину (добавятся таблицы):
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!
Другие материалы в категории Linux
- Репликация Mysql (master-slave, master-master)
- Ошибка 0x80004005 0x80070035 на Windows 10 при доступе к сетевой папке
- Текстовый редактор VIM, основы работы
- Спринт Lingoda (ex Марафон Lingoda) + промокод.
- ddrescue или спасаем данные с HDD
- Бесплатный SLES для Vmware – ВСЁ…
- Резервное копирование файлов сайта по ssh
- SQUID настройка ACL и http_access
- squid, использование опции debug_options или диагностика компонентов squid
- Седьмой релиз Debian
Как кстати в целом антивирус? Как ловит вирусы? Есть ли проблемы?
Я пару лет назад пользовался корпоративной версией, был доволен, а начальник мой против него имеет предрассудки, т.к. когда он пришел в фирму тут стоял Dr. Web и Symantec после него нашел много чего. Но тогда еще пользователи с правами админа сидели.
Сейчас размышляем какой антивирус прикупить. Я ратую за Dr. Web с той точки зрения, что под него не нужно выделять виндовый сервак, который тоже стоит денег. Symantec ставится только на винду, а пристыковывать его к чему-то еще не хочется (стараюсь по максимуму разделить сервисы друг от друга).
В целом – неплохо. За 5 лет пользования было только 2 случая, когда антивирь упустил заразу. Но когда были такие случаи – эту же заразу не обнаруживал ни kaspersky ни другие антивирусы из тестов вирустотала.
Хороший плюс у этого антивируса – довольно низкая требовательность к ресурсам ПК.
Хотя, последняя версия (6) этот плюс несколько пошатнула. Я начал задумываться о касперском.
А так же у меня не получилось завести DrWeb для файловых серверов SAMBA и подключить его к серверу администрирования. Суппорт попросил собрать самбу из исходников – для эксперимента (я не стал на продакшене ставить эксперименты). Хотя в документации было явно указана совместимость с Debian 6. Уж очень много приседаний для коммерческого продукта. Поэтому от DrWeb для SAMBA пришлось отказаться.