main

Symantec под nix

Мне тут попался на глаза свой же отчёт на тему "применимость продуктов symantec под nix".

Общее заключение: бесполезен и сделан исключительно под linux "для галочки".

AutoProtect работать не будет из-за древности ядерных модулей

Общая процедура установки, подразумеваемая install.sh:

для определённых версий ядер - устанавливаются готовые модули из sepap-legacy.deb

1) Cмотрим версии этих модулей и год выпуска соотв ядра (из /opt/Symantec/autoprotect):

  • 2.6.18 - 2006
  • 2.6.22 - 2007
  • 2.6.24 - 2008
  • 2.6.26 - 2008
  • 2.6.31 - 2009
  • 2.6.32 - 2009

Сейчас актуальные версии - 3.14+ (3.2 LTS, считается старым)

Смотрим упоминания конкретных дистрибутивов (из /etc/init.d/autoprotect):

  • RHEL 3-4 (актуальные версии - 6 -> 7)
  • Ubuntu 7.10-13.04 (актуальные версии - 14-15)
  • Debian 4-6 (актуальные версии - 7, в апреле-мае выйдет 8)

2) если ничего не подошло из того что выше (поразительно), предлагается собрать модуль руками

Смотрим исходники из src/ap-kernelmodule.tar.bz2. В большинстве из них есть такой заголовок:

// PROPRIETARY/CONFIDENTIAL.  Use of this product is subject to license terms.
// Copyright (C) 2005 Symantec Corporation.  All rights reserved.

Год как бы намекает, когда оно в последний раз активно разрабатывалось. Более того, этот "модуль" постоянно будет огребать от изменения ядерных интерфейсов, поскольку стабильность их не гарантируется, а в ядро его не примут из-за лицензии.

LiveUpdate тоже не работает без хаков

Смотрим в install.sh в корне архива. Вот например функция, проверяющей наличие java-интерпретатора:

javaVersionCheck()

И сразу же следом идёт вторая функция, с говорящим названием и комментарием:

#return 0 for success, 1 for not.
sunJavaCheck()

Начнём с того, что Sun'а как такового, нет с 2009 года, его купил oracle. И проверки в теле функции (переделаны в вид "проверка" -> "результат", для лучшего восприятия):

  • ibm -> 1
  • openjdk -> 1
  • sun java -> 0
  • other -> 1

Окей, нам нужна непременно sun-java, то есть "от oracle" ...которую запрещают распространять в составе дистрибутивов linux: тыц

Опыты показывают, что запустить таки можно, по крайней мере оно запускается, но как будет работать - хз. Пикантной подробностью является то, что в процессе обновления оно отжирает 350-400 метров виртуальной памяти. Тупо на обновление баз.

P.S. Я склонен думать, что эту часть они писали сами - этот чугунно-неповоротливый энтерпрайзный стиль, жаба и xml.

И наконец клиент для антивируса

В самом бинарнике попадаются отдельные вещи типа:

# забытая отладка, "детский" уровень дебага форкающегося приложения
I am My Parent
I am My Child
#
# захардкоженные пути
/etc/symc-defutils.conf
/var/log/
/var/run/
/etc/Symantec.conf
/opt/Symantec/symantec_antivirus
#
# и даже целые команды! это в бинарнике, который использует boost
# из libsep-util.so
grep -i Linux /proc/version
grep processor /proc/cpuinfo | wc -l
grep 'cpu MHz' /proc/cpuinfo | awk '{ print $4 }'
grep 'model name' /proc/cpuinfo | head -n 1 | awk '{ $1 = " ";$2 = " ";$3 = " "; print }'
grep 'MemTotal' /proc/meminfo | awk '{print $2}'
grep 'MemFree' /proc/meminfo | awk '{print $2}'
netstat -rn|grep '^\(default\|0.0.0.0\)'|head -1|awk '{print $2}'
# из smcd
grep 'ProductVersion=' '%s' | sed 's/ProductVersion=//g'

Вобщем, чтобы это cломать, мне нужно просто переименовать 'Symantec' в 'symantec' и всё.