null

Symantec ScanEngine как ресурс Open HA Cluster

В одном из наших проектов потребовалось обеспечить защиту от вирусов файловой системы доступной по NFS и SMB.
Свой выбор мы остановили на решении ZFS плюс VScan с последующим предоставлением доступа по NFS и SMB. В качестве потокового фильтра используем Symantec ScanEngine. Одним из требований заказчика было обеспечение отказоустойчивости системы, так в проекте появился Open HA Cluster.
Данная статья посвящена некоторым особенностям инсталляции и конфигурирования Symantec ScanEngine как ресурса Open HA Cluster.

Первым делом готовим файловую систему для инсталляции:
root@rainy:~# zpool create ScanEngine c7t0d2
root@rainy:~# zfs set mountpoint=legacy ScanEngine
root@rainy:~# zfs create ScanEngine/SYMCScan
root@rainy:~# zfs create ScanEngine/Symantec
root@rainy:~# zfs set mountpoint=/opt/SYMCScan ScanEngine/SYMCScan
root@rainy:~# zfs set mountpoint=/opt/Symantec ScanEngine/Symantec
root@rainy:~#

Создаем ресурсную группу для ScanEngine:
root@rainy:~# clrg create -n rainy,cloudy SYMCScan-rg
root@rainy:~# clrs create -g SYMCScan-rg -t HAStoragePlus \
-p Zpools=ScanEngine SYMCScan-stor
root@rainy:~# clrslh create -g SYMCScan-rg SYMCScan-lh
root@rainy:~# clrg online -M SYMCScan-rg
root@rainy:~#

Монтируем образ и инсталлируем ScanEngine:
root@rainy:~# lofiadm -a ~/SymantecScanEngine_528_IN.iso
/dev/lofi/1
root@rainy:~# mount -F hsfs /dev/lofi/1 /mnt
root@rainy:~# cd /mnt/Scan_Engine/Solaris/
root@rainy:/mnt/Scan_Engine/Solaris# ./ScanEngine.sh
<cut>
root@rainy:/mnt/Scan_Engine/Solaris# cd

root@rainy:~#
Учитывая особенности инсталляции SYMCScan под OpenSolaris правим стартовый скрипт /opt/SYMCScan/bin/symcscan.sh
#!/usr/gnu/bin/sh
<cut>
PATH=/usr/jdk/jdk1.6.0_13/bin:/usr/bin:/bin
InstallDir=/opt/SYMCScan
Program=$InstallDir/bin/symcscan
ConfigFile=$InstallDir/bin
Product="SYMCScan"
#...jre/lib/sparc/client
JavaJRELib=/usr/jdk/jdk1.6.0_13/jre/lib/sparc/client
<cut>

и переименовываем стартовые скрипты в каталогах /etc/rc*.d для предотвращения автоматического запуска.
После инсталляции SYMCScan конфигурируем ресурс кластера:
root@rainy:~# clrs create -g SYMCScan-rg -t SUNW.gds -p Port_list="1344/tcp" \
-p Start_command="/opt/SYMCScan/bin/symcscan.sh start" \
-p Stop_command="/opt/SYMCScan/bin/symcscan.sh stop" \
-p Probe_command="/bin/true" -p Network_resources_used=SYMCScan-lh \
-p Resource_dependencies=SYMCScan-stor SYMCScan-rs
root@rainy:~# clrg status SYMCScan-rg

=== Cluster Resource Groups ===

Group Name        Node Name      Suspended      Status
----------        ---------      ---------      ------
SYMCScan-rg       rainy          No             Online
                  cloudy         No             Offline

root@rainy:~#
Для проверки работоспособности ScanEngine переключаем ресурсную группу на другую ноду кластера, создаем тестовый пул, файловые системы и конфигурируем vscan:
root@rainy:~# clrg switch -n cloudy SYMCScan-rg
root@rainy:~# clrg status SYMCScan-rg

=== Cluster Resource Groups ===

Group Name        Node Name      Suspended      Status
----------        ---------      ---------      ------
SYMCScan-rg       rainy          No             Offline
                  cloudy         No             Online

root@rainy:~# zpool create test c7t0d1
root@rainy:~# zfs set mountpoint=legacy test
root@rainy:~# zfs create -o mountpoint=/test/vscan_on -o vscan=on test/vscan_on
root@rainy:~# zfs create -o mountpoint=/test/vscan_off -o vscan=off test/vscan_off
root@rainy:~#
root@rainy:~# vscanadm add-engine -p host=SYMCScan-lh SYMCScan
root@rainy:~# vscanadm show
max-size=5MB
max-size-action=allow
types=+*

SYMCScan:enable=on
SYMCScan:host=SYMCScan-lh
SYMCScan:port=1344
SYMCScan:max-connection=32

Используя тестовый файл с сигнатурой "EICAR Test String" выполняем проверку:
root@rainy:~# cp eicar_com.zip /test/vscan_on
root@rainy:~#
root@rainy:~# tail /var/adm/messages
<cut>
Aug  3 11:33:23 rainy vscand: [ID 540744 daemon.notice] quarantine /test/vscan_on/eicar_com.zip 11101 - EICAR Test String
<cut>
root@rainy:~#
root@rainy:~# cp /test/vscan_on/eicar_com.zip /test/vscan_off
cp: cannot open `/test/vscan_on/eicar_com.zip' for reading: Permission denied
root@rainy:~#


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

Konstantin Borzov, Baku 2009

Коротко о себе:

Закончил Пушкинское высшее училище радиоэлектроники противовоздушной обороны (ПВУРЭ ПВО).

Служил в ВС и МВД, работал в народном хозяйстве. В настоящее время сотрудник компании Tune-It.

Привлекает решение "стандартных" задач - создание конфет из имеющегося сырья подручными средствами.

Ненавижу питерские пробки. Еще больше ненавижу общественный транспорт. В результате ежедневно пару часов провожу за рулем.